diff --git a/app/build.gradle b/app/build.gradle index ec713e1..a0fb45b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -138,4 +138,8 @@ dependencies { //高德地图 implementation 'com.amap.api:map2d:6.0.0' + + //定位功能 + implementation 'com.amap.api:location:6.4.2'//6.4.2 + implementation 'com.amap.api:search:9.7.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7a1f69e..4c9afde 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,6 +25,7 @@ + diff --git a/app/src/main/java/com/dahe/gldriver/adapter/WaybillAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/WaybillAdapter.kt index 4926496..39017a2 100644 --- a/app/src/main/java/com/dahe/gldriver/adapter/WaybillAdapter.kt +++ b/app/src/main/java/com/dahe/gldriver/adapter/WaybillAdapter.kt @@ -3,10 +3,14 @@ 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.utils.OrderUtils +import com.dahe.glex.bean.OrderBean import com.dahe.glex.bean.WayBillBean +import com.dahe.mylibrary.utils.ImageLoader /** * @ClassName WaybillAdapter @@ -15,8 +19,39 @@ import com.dahe.glex.bean.WayBillBean * @Description TODO */ class WaybillAdapter : - BaseQuickAdapter() { - override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: WayBillBean?) { + BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: OrderBean?) { + item?.run { + holder.run { + setText( + R.id.tvStart, + """${ + if (loadingCity.length > 1) loadingCity.substring(0, 2) else loadingCity + } ${if (loadingArea.length > 1) loadingArea.substring(0, 2) else loadingArea}""" + ) + setText( + R.id.tvEnd, """${ + if (receiverCity.length > 1) receiverCity.substring(0, 2) else receiverCity + } ${ + if (receiverArea.length > 1) receiverArea.substring(0, 2) else receiverArea + }""" + ) + setText(R.id.tvMoney, driverFreight) + setText(R.id.tvCom, realCompanyName) + setText(R.id.tvDis, """距离:${distance}KM""") + setText(R.id.tvCredit, """信用 ${shipperCreditRating}""") + setText( + R.id.tvRate, + """交易 ${shipperTransactionVolume} 好评率 ${shipperPositiveReviewRate}""" + ) + setText(R.id.tvProduct, """${vehicleLength}/${vehicleType}/""") + setText(R.id.tvModel, """${if (orderType == "0") "一装一卸" else "一装多卸"}""") + setText(R.id.btnOk, OrderUtils.getInstance().getOrderStatu(orderStatus)) + + ImageLoader.getInstance() + .loadRoundImage(context, avatar, 6, getView(R.id.imgHead)) + } + } } diff --git a/app/src/main/java/com/dahe/gldriver/adapter/WaybillListAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/WaybillListAdapter.kt index 1c720f3..b39c93c 100644 --- a/app/src/main/java/com/dahe/gldriver/adapter/WaybillListAdapter.kt +++ b/app/src/main/java/com/dahe/gldriver/adapter/WaybillListAdapter.kt @@ -2,10 +2,13 @@ package com.dahe.gldriver.adapter import android.content.Context import android.view.ViewGroup +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.glex.bean.WayBillBean +import com.dahe.gldriver.utils.OrderUtils +import com.dahe.glex.bean.OrderBean +import com.dahe.mylibrary.utils.ImageLoader /** * @ClassName WaybillAdapter @@ -13,9 +16,42 @@ import com.dahe.glex.bean.WayBillBean * @Date 2024/1/23 16:27 * @Description TODO */ -class WaybillListAdapter() : - BaseQuickAdapter() { - override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: WayBillBean?) { +class WaybillListAdapter : + BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: OrderBean?) { + item?.let { + holder.run { + setText(R.id.tvWaybillId,it.orderNum) + setText(R.id.tvStatu,OrderUtils.getInstance().getOrderStatu(it.orderStatus)) + setText(R.id.tvType,"""${if (it.orderType == "0") "一装一卸" else "一装多卸"}""") + setText(R.id.tvTime,"""${it.loadingDeadline}装货""") + setText(R.id.tvDis,"""${it.distance}km""") + setText(R.id.tvCarNum,it.vehicleNum) + setText(R.id.tvGood,"""${it.goodItemGrossWeight}吨/${it.goodName}""") + setText(R.id.tvMoney,it.driverFreight) + setText(R.id.tvComName,it.realCompanyName) + setText(R.id.btnOk,OrderUtils.getInstance().getNextByStatu(it.orderStatus)) + + + ImageLoader.getInstance() + .loadRoundImage(context, it.avatar, 6, getView(R.id.ivHead)) + + setText( + R.id.tvStart, + """${ + if (it.loadingCity.length > 1) it.loadingCity.substring(0, 2) else it.loadingCity + } ${if (it.loadingArea.length > 1) it.loadingArea.substring(0, 2) else it.loadingArea}""" + ) + setText( + R.id.tvEnd, """${ + if (it.receiverCity.length > 1) it.receiverCity.substring(0, 2) else it.receiverCity + } ${ + if (it.receiverArea.length > 1) it.receiverArea.substring(0, 2) else it.receiverArea + }""" + ) + } + } + } override fun onCreateViewHolder( @@ -24,7 +60,7 @@ class WaybillListAdapter() : viewType: Int ): QuickViewHolder { // 返回一个 ViewHolder - return QuickViewHolder(R.layout.item_waybill, parent) + return QuickViewHolder(R.layout.item_waybill2, parent) } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/adapter/WaybillNodeAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/WaybillNodeAdapter.kt new file mode 100644 index 0000000..d9bb06a --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/adapter/WaybillNodeAdapter.kt @@ -0,0 +1,44 @@ +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.OrderChild +import com.dahe.gldriver.utils.OrderUtils +import com.dahe.glex.bean.OrderBean +import com.dahe.glex.bean.WayBillBean +import com.dahe.mylibrary.utils.ImageLoader + +/** + * @ClassName WaybillAdapter + * @Author 用户 + * @Date 2024/3/5 16:27 + * @Description TODO + */ +class WaybillNodeAdapter : + BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: OrderChild?) { + item?.run { + holder.run { + setText(R.id.tvLoad, item?.city+item?.area+item?.address) + setText(R.id.tvPhone, """${item?.name} ${item?.phone}""") + setBackgroundResource(R.id.ivLoad,if (item.type == "1") R.drawable.icon_load else R.drawable.icon_unload) + + } + } + + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + // 返回一个 ViewHolder + return QuickViewHolder(R.layout.item_waybill_node, parent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt b/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt index d1dc32b..68a4e20 100644 --- a/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt +++ b/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt @@ -11,6 +11,9 @@ object AppConfig { const val TIME = "DA_HE_TIME" const val ID = "DA_HE_ID" const val PHONE = "DA_HE_PHONE" + const val ORDER_ID = "DA_HE_ORDER_ID" + const val WAYBILL_ID = "DA_HE_WAYBILL_ID" + const val CHILDRE_ID = "DA_HE_CHILDRE_ID" const val CODE = "DA_HE_PHONE" const val SUCCESS_TYPE = "DA_HE_SUCCESS_TYPE" diff --git a/app/src/main/java/com/dahe/gldriver/bean/OrderBean.kt b/app/src/main/java/com/dahe/gldriver/bean/OrderBean.kt index cd9342f..db78075 100644 --- a/app/src/main/java/com/dahe/gldriver/bean/OrderBean.kt +++ b/app/src/main/java/com/dahe/gldriver/bean/OrderBean.kt @@ -7,35 +7,38 @@ package com.dahe.glex.bean * @Description TODO */ data class OrderBean( - val avatar: String, - val distance: String, - val driverFreight: Double, - val goodsList: List, - val loadingArea: String, - val loadingAreaCode: String, - val loadingCity: String, - val loadingCityCode: String, - val loadingDeadline: String, - val loadingProvince: String, - val loadingProvinceCode: String, - val orderId: String, - val orderNum: String, - val orderStatus: Int, - val orderType: String, - val passingPointsNum: String, - val realCompanyName: String, - val receiverArea: String, - val receiverAreaCode: String, - val receiverCity: String, - val receiverCityCode: String, - val receiverProvince: String, - val receiverProvinceCode: String, - val requirement: String, - val shipperCreditRating: String, - val shipperPositiveReviewRate: String, - val shipperTransactionVolume: String, - val vehicleLength: String, - val vehicleType: String + val avatar: String= "", + val distance: String= "", + val driverFreight: String= "", + val goodsList: List = mutableListOf(), + val loadingArea: String= "", + val loadingAreaCode: String= "", + val loadingCity: String= "", + val loadingCityCode: String= "", + val loadingDeadline: String= "", + val loadingProvince: String= "", + val loadingProvinceCode: String= "", + val orderId: String= "", + val orderNum: String= "", + val orderStatus: String= "", + val orderType: String= "", + val passingPointsNum: String= "", + val realCompanyName: String= "", + val receiverArea: String= "", + val receiverAreaCode: String= "", + val receiverCity: String= "", + val receiverCityCode: String= "", + val receiverProvince: String= "", + val receiverProvinceCode: String= "", + val requirement: String= "", + val shipperCreditRating: String= "", + val shipperPositiveReviewRate: String= "", + val shipperTransactionVolume: String= "", + val vehicleLength: String= "", + val vehicleType: String = "", + val goodItemGrossWeight: String = "", + val goodName: String = "", + val vehicleNum: String = "" ) data class Goods( diff --git a/app/src/main/java/com/dahe/gldriver/bean/OrderDetailBean.kt b/app/src/main/java/com/dahe/gldriver/bean/OrderDetailBean.kt new file mode 100644 index 0000000..32aa9f1 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/bean/OrderDetailBean.kt @@ -0,0 +1,96 @@ +package com.dahe.gldriver.bean + +/** + * @ClassName OrderDetailBean + * @Author john + * @Date 2024/3/4 10:36 + * @Description TODO + */ +data class OrderDetailBean( + val avatar: String, + val captainInfo: CaptainInfo, + val distance: String, + val driverFreight: String, + val goodsList: List, + val loadingDeadline: String, + val orderChildList: List, + val orderId: String, + val orderNum: String, + val orderStatus: String, + val orderType: String, + val passingPoStringsNum: String, + val realCompanyName: String, + val receiverBusinessCode: String, + val receiverBusinessName: String, + val receiverDeadline: String, + val requirement: String, + val shipperContactName: String, + val shipperContactPhone: String, + val vehicleLength: String, + val vehicleType: String, + val waybillId: String, + val waybillInfo: WaybillInfo +) + +data class CaptainInfo( + val avatar: String, + val captainId: String, + val captainName: String, + val captaStringype: String, + val contactName: String, + val contactPhone: String, + val status: String +) + +data class Goods( + val goodCube: String, + val goodItemGrossWeight: String, + val goodName: String, + val goodNum: String, + val orderGoodsId: String +) + +data class OrderChild( + val address: String, + val area: String, + val areaCode: String, + val businessCode: String, + val businessName: String, + val city: String, + val cityCode: String, + val cost: String, + val displayOrder: String, + val isPassingPoStrings: String, + val latitude: String, + val longitude: String, + val name: String, + val orderChildreId: String, + val orderId: String, + val phone: String, + val province: String, + val provinceCityArea: String, + val provinceCode: String, + val sortValue: String, + val status: String, + val totalAmount: String, + val type: String +) + +data class WaybillInfo( + val captainId: String, + val carId: String, + val carUrl: String, + val contactName: String, + val contactPhone: String, + val driverId: String, + val idcardName: String, + val idcardSex: String, + val isRealName: String, + val loadTime: String, + val receivingOrderTime: String, + val trailerId: String, + val trailerVehicleNum: String, + val unloadTime: String, + val vehicleNum: String, + val waybillId: String +) \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/bean/UpPicBean.kt b/app/src/main/java/com/dahe/gldriver/bean/UpPicBean.kt new file mode 100644 index 0000000..8cba551 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/bean/UpPicBean.kt @@ -0,0 +1,35 @@ +package com.dahe.gldriver.bean + +/** + * @ClassName UpPicBean + * @Author john + * @Date 2024/3/4 16:25 + * @Description TODO + */ +data class UpPicBean( + var address: String = "", + var area: String= "", + var areaCode: String= "", + var city: String= "", + var cityCode: String= "", + var latitude: String= "", + var longitude: String= "", + var orderChildreId: String= "", + var orderId: String= "", + var province: String= "", + var provinceCityArea: String= "", + var provinceCode: String= "", + var type: String= "", + var waybillId: String= "", + var waybillPhotoList: MutableList = mutableListOf() +) + +data class WaybillPhoto( + var latitude: String= "", + var location: String= "", + var longitude: String= "", + var photoUrl: String= "", + var receiptType: String= "", + var sortvarue: String= "", + var type: String= "" +) \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/callback/OnSearchListener.kt b/app/src/main/java/com/dahe/gldriver/callback/OnSearchListener.kt new file mode 100644 index 0000000..317f74c --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/callback/OnSearchListener.kt @@ -0,0 +1,14 @@ +package com.dahe.gldriver.callback + +import com.dahe.gldriver.bean.OcrPersonBean +import com.luck.picture.lib.entity.LocalMedia + +/** + * @ClassName OnOcrPicResultListener + * @Author john + * @Date 2024/2/28 17:18 + * @Description TODO + */ +fun interface OnSearchListener { + fun onSearchClick(search: String) +} diff --git a/app/src/main/java/com/dahe/gldriver/event/OrderStauEvent.kt b/app/src/main/java/com/dahe/gldriver/event/OrderStauEvent.kt new file mode 100644 index 0000000..84b0847 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/event/OrderStauEvent.kt @@ -0,0 +1,16 @@ +package com.dahe.gldriver.event + +/** + * @ClassName OrderStauEvent + * @Author john + * @Date 2024/3/5 15:51 + * @Description statu: 1 刷新 + */ +class OrderStauEvent constructor(statu: Int) { + + var statu: Int = 0 + + init { + this.statu = statu + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/net/Api.kt b/app/src/main/java/com/dahe/gldriver/net/Api.kt index d77081c..72f7351 100644 --- a/app/src/main/java/com/dahe/gldriver/net/Api.kt +++ b/app/src/main/java/com/dahe/gldriver/net/Api.kt @@ -1,11 +1,14 @@ package com.dahe.gldriver.net + import com.dahe.gldriver.BuildConfig import com.dahe.gldriver.bean.AuthTeamBean import com.dahe.gldriver.bean.OcrPersonBean +import com.dahe.gldriver.bean.OrderDetailBean import com.dahe.gldriver.bean.OssBean import com.dahe.gldriver.bean.UpBankInfoBean import com.dahe.gldriver.bean.UpDriverInfoBean import com.dahe.gldriver.bean.UpPersonInfoBean +import com.dahe.gldriver.bean.UpPicBean import com.dahe.gldriver.bean.UpQualiInfoBean import com.dahe.glex.bean.* import com.dahe.mylibrary.net.CommonResponseBean @@ -128,9 +131,47 @@ interface Api { fun authenticationCaptain(@Body bankBean: AuthTeamBean): Observable> + /** + * 货源列表 + * */ @GET(BASE_URL + "driver/order/list") fun orderList(): Observable>> + /** + * 运单列表 + * */ + @GET(BASE_URL + "driver/driverWaybill/selectMyWaybillList") + fun selectMyWaybillList( + @Query("pageNum") pageNum: Int = 1, + @Query("pageSize") pageSize: Int = 20, + @Query("waybillStatus") waybillStatus: String ="", + @Query("searchValue") searchValue: String = "" + ): Observable>> + + + /** + * 货源详情 + * */ + @GET(BASE_URL + "driver/order/detail") + fun orderDetail(@Query("orderId") orderId: String): Observable> + + /** + * 司机接单 + * */ + @GET(BASE_URL + "driver/driverWaybill/receivingOrders") + fun receivingOrders( + @Query("orderId") orderId: String, + @Query("carId") carId: String + ): Observable> + + /** + * 司机装卸货 + * */ + @POST(BASE_URL + "driver/driverWaybill/driverLoadOrUnload") + fun driverLoadOrUnload( + @Body upPicBean: UpPicBean + ): Observable> + @GET(BASE_URL + "driver/driver/setUpDriverRole") fun setUpDriverRole(@Query("role") role: String): Observable> diff --git a/app/src/main/java/com/dahe/gldriver/ui/HomeActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/HomeActivity.kt index 1449161..8b6a970 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/HomeActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/HomeActivity.kt @@ -5,7 +5,10 @@ import android.os.Build import android.os.Bundle import android.widget.Toast import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentStatePagerAdapter import androidx.viewpager.widget.ViewPager +import com.amap.api.location.AMapLocationClient.updatePrivacyAgree +import com.amap.api.location.AMapLocationClient.updatePrivacyShow import com.dahe.gldriver.R import com.dahe.gldriver.adapter.MyHomePagerAdapter import com.dahe.gldriver.bean.TabBean @@ -27,7 +30,7 @@ import java.util.TimerTask * @Date 2023/12/27 17:12 * @Description TODO */ -class HomeActivity: BaseActivity(), OnTabSelectListener, +class HomeActivity : BaseActivity(), OnTabSelectListener, ViewPager.OnPageChangeListener { private val mNormalRes = mutableListOf( @@ -44,24 +47,33 @@ class HomeActivity: BaseActivity(), OnTabSelectListener, R.drawable.tab_waybill_press, R.drawable.tab_mine_press ) - private var mTitles = arrayOf("首页","消息","运单","我的") + private var mTitles = arrayOf("首页", "消息", "运单", "我的") private var mTabEntities = arrayListOf( - TabBean(mTitles[0],mSelectRes[0],mNormalRes[0]), - TabBean(mTitles[1],mSelectRes[1],mNormalRes[1]), - TabBean(mTitles[2],mSelectRes[2],mNormalRes[2]), - TabBean(mTitles[3],mSelectRes[3],mNormalRes[3])) - private var mFragments = arrayListOf(HomeFragment(),MessageFragment(), WaybillFragment(),MineFragment()) + TabBean(mTitles[0], mSelectRes[0], mNormalRes[0]), + TabBean(mTitles[1], mSelectRes[1], mNormalRes[1]), + TabBean(mTitles[2], mSelectRes[2], mNormalRes[2]), + TabBean(mTitles[3], mSelectRes[3], mNormalRes[3]) + ) + private var mFragments = arrayListOf(HomeFragment().setListener { + binding.homeTabLayout.currentTab = it + binding.homeNoScrollViewPager.currentItem = it + }, MessageFragment(), WaybillFragment(), MineFragment()) override fun initView(savedInstanceState: Bundle?) { + updatePrivacyShow(mContext,true,true) + updatePrivacyAgree(mContext,true) + binding.homeTabLayout.run { setTabData(mTabEntities) setOnTabSelectListener(this@HomeActivity) - currentTab=0 + currentTab = 0 } + binding.homeNoScrollViewPager.run { - adapter = MyHomePagerAdapter(this@HomeActivity.supportFragmentManager, mTitles, mFragments) + adapter = + MyHomePagerAdapter(this@HomeActivity.supportFragmentManager, mTitles, mFragments) addOnPageChangeListener(this@HomeActivity) offscreenPageLimit = 3 } @@ -78,12 +90,18 @@ class HomeActivity: BaseActivity(), OnTabSelectListener, private fun getPermissions() { PermissionX.init(this) .permissions( - Manifest.permission.CAMERA) + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_FINE_LOCATION, + ) .request { allGranted, grantedList, deniedList -> if (allGranted) { } else { - Toast.makeText(mContext, "开启权限失败,请在应用设置-权限-定位-始终允许", Toast.LENGTH_SHORT).show() + Toast.makeText( + mContext, + "开启权限失败,请在应用设置-权限-定位-始终允许", + Toast.LENGTH_SHORT + ).show() } } } @@ -106,6 +124,14 @@ class HomeActivity: BaseActivity(), OnTabSelectListener, } } + +// fun getFragment(){ +// var adapter : MyHomePagerAdapter = binding.homeNoScrollViewPager.adapter as MyHomePagerAdapter +// +// adapter.instantiateItem(binding.homeNoScrollViewPager,0) +// } + + override fun onTabSelect(position: Int) { binding.homeNoScrollViewPager.setCurrentItem(position) } diff --git a/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt index f7e388e..4c2e756 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt @@ -1,34 +1,36 @@ package com.dahe.gldriver.ui.home 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.amap.api.services.route.DistanceSearch import com.dahe.gldriver.R import com.dahe.gldriver.adapter.GridItemAdapter import com.dahe.gldriver.adapter.WaybillAdapter -import com.dahe.gldriver.bean.AuthTeamBean +import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.bean.GridBean import com.dahe.gldriver.databinding.FragmentHomeBinding +import com.dahe.gldriver.event.OrderStauEvent import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.RxHttpCallBack -import com.dahe.gldriver.ui.HomeActivity import com.dahe.gldriver.ui.waybill.activity.WaybillDetailActivity +import com.dahe.gldriver.ui.waybill.activity.WaybillLoadActivity +import com.dahe.gldriver.ui.waybill.activity.WaybillUnlLoadActivity import com.dahe.glex.bean.OrderBean -import com.dahe.glex.bean.WayBillBean 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 com.dahe.mylibrary.utils.ToastUtils -import com.flyco.tablayout.listener.OnTabSelectListener +import com.flyco.tablayout.CommonTabLayout import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers -import okhttp3.internal.wait +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe /** * @ClassName HomeFragment @@ -37,6 +39,9 @@ import okhttp3.internal.wait * @Description TODO */ class HomeFragment : BaseFragment(), RefreshCallBack { + + var adapter: WaybillAdapter? = null + private val gridDatas = mutableListOf( GridBean("司机之家", R.drawable.home_driver), GridBean("咨询客服", R.drawable.home_ask), @@ -50,50 +55,75 @@ class HomeFragment : BaseFragment(), RefreshCallBack { } + lateinit var mListener: ((Int) -> Unit) + + fun setListener(listener: (Int) -> Unit): HomeFragment { + this.mListener = listener + return this + } + + override fun onFragmentFirstVisible() { initRecy() - binding.gridView.run { - adapter = activity?.let { GridItemAdapter(it, gridDatas) } - setOnItemClickListener { adapterView, view, i, l -> -// println(i) + setRefresh(binding.refresh, this) + binding.run { + gridView.run { + adapter = activity?.let { GridItemAdapter(it, gridDatas) } + setOnItemClickListener { adapterView, view, i, l -> + + } + } + tvMar.isSelected = true + + ivMyWaybill.setOnClickListener { + if (this@HomeFragment.mListener != null) + this@HomeFragment?.mListener?.invoke(2) } } - - binding.tvMar.isSelected = true - - DataManager.getInstance().orderList() - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(BaseObserver(mContext,object : RxHttpCallBack>(){ - override fun onSuccess(t: CommonResponseBean>) { - super.onSuccess(t) - } - })) - + initData() } override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initData() + } + private fun initData() { + DataManager.getInstance().orderList() + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + + if (mRefreshPage === 1) { + adapter?.submitList(t.data) + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + })) + } + + + @Subscribe + fun eventStatu(orderStauEvent: OrderStauEvent) { + if (orderStauEvent.statu == 1) { + initData() + } } private fun initRecy() { - var datas = mutableListOf( - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean() - ) - var adapter = binding.recyclerView.run { + adapter = binding.recyclerView.run { layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) setHasFixedSize(true) addItemDecoration( RecycleViewDivider( LinearLayout.VERTICAL, - ConvertUtils.dp2px(16.0f), + ConvertUtils.dp2px(10.0f), Color.TRANSPARENT ) ) @@ -101,14 +131,36 @@ class HomeFragment : BaseFragment(), RefreshCallBack { adapter as WaybillAdapter }.apply { setOnItemClickListener { _, _, position -> - ToastUtils.showToast(mContext, position.toString()) + ActivityUtils.startActivity( + mContext, + WaybillDetailActivity::class.java, + Bundle().apply { putString(AppConfig.ORDER_ID, items[position].orderId) }) + + +// ActivityUtils.startActivity( +// mContext, +// WaybillDetailActivity::class.java, +// Bundle().apply { putString(AppConfig.ORDER_ID, items[position].orderId) }) } addOnItemChildClickListener(R.id.btnOk) { adapter, view, position -> - ActivityUtils.startActivity(mContext, WaybillDetailActivity::class.java) + + ActivityUtils.startActivity( + mContext, + WaybillDetailActivity::class.java, + Bundle().apply { putString(AppConfig.ORDER_ID, items[position].orderId) }) +// ActivityUtils.startActivity(mContext, WaybillDetailActivity::class.java) } } - adapter.submitList(datas) } + override fun onStart() { + super.onStart() + EventBus.getDefault().register(this); + } + + override fun onStop() { + super.onStop() + EventBus.getDefault().unregister(this); + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/WaybillFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/WaybillFragment.kt index 3f6a9e0..4cc267c 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/WaybillFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/WaybillFragment.kt @@ -2,10 +2,17 @@ package com.dahe.gldriver.ui.waybill import android.content.Context import android.graphics.Color +import android.view.View +import androidx.core.widget.addTextChangedListener import androidx.fragment.app.Fragment import com.dahe.gldriver.R +import com.dahe.gldriver.callback.OnSearchListener import com.dahe.gldriver.databinding.FragmentWaybillBinding import com.dahe.gldriver.ui.waybill.fragment.AllWaybillFragment +import com.dahe.gldriver.ui.waybill.fragment.CancelWaybillFragment +import com.dahe.gldriver.ui.waybill.fragment.WaitAppraiseFragment +import com.dahe.gldriver.ui.waybill.fragment.WaitLoadFragment +import com.dahe.gldriver.ui.waybill.fragment.WaitUnLoadFragment import com.dahe.mylibrary.base.BaseFragment import com.dahe.mylibrary.callback.RefreshCallBack import net.lucode.hackware.magicindicator.FragmentContainerHelper @@ -26,8 +33,17 @@ import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorT */ class WaybillFragment : BaseFragment(), RefreshCallBack { + private var currIndex = 0 + private val mFragmentContainerHelper = FragmentContainerHelper() - var mFragments = listOf(AllWaybillFragment(),AllWaybillFragment(),AllWaybillFragment(),AllWaybillFragment(),AllWaybillFragment()) + + var mFragments = listOf( + AllWaybillFragment(), + WaitLoadFragment(), + WaitUnLoadFragment(), + WaitAppraiseFragment(), + CancelWaybillFragment() + ) val titles = mutableListOf( "全部", "待装货", @@ -45,10 +61,31 @@ class WaybillFragment : BaseFragment(), RefreshCallBack override fun onFragmentFirstVisible() { initRecy() + binding.run { + + etSearch.addTextChangedListener { + ivCancel.visibility = if (it.toString().isNullOrBlank()) View.GONE else View.VISIBLE + } + ivCancel.setOnClickListener { + etSearch.setText("") + } + + btnSearch.setOnClickListener { + val search = etSearch.text.trim().toString() + when (currIndex) { + 0 -> (mFragments[currIndex] as AllWaybillFragment).onSearchClick(search) + 1 -> (mFragments[currIndex] as WaitLoadFragment).onSearchClick(search) + 2 -> (mFragments[currIndex] as WaitUnLoadFragment).onSearchClick(search) + 3 -> (mFragments[currIndex] as WaitAppraiseFragment).onSearchClick(search) + 4 -> (mFragments[currIndex] as CancelWaybillFragment).onSearchClick(search) + } - mFragmentContainerHelper.handlePageSelected(0,true) - switchPages(0) + } + + } + mFragmentContainerHelper.handlePageSelected(currIndex, true) + switchPages(currIndex) var commonNavigator = CommonNavigator(mContext) commonNavigator.run { @@ -88,7 +125,6 @@ class WaybillFragment : BaseFragment(), RefreshCallBack binding.magicIndicator.navigator = commonNavigator mFragmentContainerHelper.attachMagicIndicator(binding.magicIndicator) -// ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager); } @@ -99,7 +135,9 @@ class WaybillFragment : BaseFragment(), RefreshCallBack private fun initRecy() { } + private fun switchPages(index: Int) { + currIndex = index val fragmentManager = requireActivity().supportFragmentManager val fragmentTransaction = fragmentManager.beginTransaction() var fragment: Fragment diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillDetailActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillDetailActivity.kt index 35a341d..c1eaca6 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillDetailActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillDetailActivity.kt @@ -1,13 +1,39 @@ package com.dahe.gldriver.ui.waybill.activity +import android.Manifest +import android.app.usage.UsageEvents.Event import android.graphics.Color import android.os.Bundle +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.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.glex.bean.OrderBean 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.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 @@ -15,14 +41,186 @@ import com.dahe.mylibrary.utils.SelectPicUtils * @Date 2024/1/26 14:50 * @Description 运单详情-接单 */ -class WaybillDetailActivity :BaseActivity(){ +class WaybillDetailActivity : BaseActivity() { + var orderId: String = "" + lateinit var gdLatLng: LatLng + lateinit var loadPos: LatLng override fun initView(savedInstanceState: Bundle?) { - binding.btnReceiving.setOnClickListener { - ActivityUtils.startActivity(mContext,WaybillSuccActivity::class.java,Bundle().apply { putInt(AppConfig.SUCCESS_TYPE,0) }) + orderId = intent.extras?.getString(AppConfig.ORDER_ID, "").toString() + initRecy() + getLocation() + + binding.btnCall.setOnClickListener { + BaseUtils.callPhone(this@WaybillDetailActivity, "15838201105") } + binding.btnReceiving.setOnClickListener { + DataManager.getInstance().receivingOrders(orderId, "22") + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + EventBus.getDefault().post(OrderStauEvent(1)) + } + })) + + } + } override fun initDate() { -// SelectPicUtils().getInstance(mContext) + DataManager.getInstance().orderDetail(orderId) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + val load = t.data.orderChildList.first { it.type == "1" } + var distance: String = "" + loadPos = LatLng(load.latitude.toDouble(), load.longitude.toDouble()) + 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 { + tvTime.text = t.data.receiverDeadline + tvCom.text = t.data.receiverBusinessName + tvUnloadDis.text = t.data.distance+"km" + tvCarType.text = """${t.data.vehicleLength} ${t.data.vehicleType}""" + if (!t.data.requirement.isNullOrEmpty()) tvRemark.text = t.data.requirement + if (!distance.isNullOrEmpty()) tvLoadDis.text = distance + tvConsignor.text = t.data.realCompanyName + tvType.text = if (t.data.orderType == "0") "一装一卸" else "一装多卸" + tvFreight.text = t.data.driverFreight.toString() + tvGoods.text = goods + btnCall.setOnClickListener { + PermissionX.init(this@WaybillDetailActivity) + .permissions(Manifest.permission.CALL_PHONE) + .request { allGranted, grantedList, deniedList -> + if (allGranted) { + BaseUtils.callPhone( + this@WaybillDetailActivity, + t.data.shipperContactPhone + ) + } else { + Toast.makeText( + mContext, + "开启权限失败,请在应用设置-权限中打开电话权限", + Toast.LENGTH_SHORT + ).show() + } + } + + } + + } + adapter?.submitList(t.data.orderChildList) +// initXml(t.data) + } + })) + } + + + fun getLocation() { + GDLocationUtils.instance.getLocation(this@WaybillDetailActivity) { + //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("定位失败,请检查定位权限是否开启") + } + } + } + } + + +// private fun initXml(data: OrderDetailBean) { +// val load = data.orderChildList.find { it.type == "1" } +// val unLoad = data.orderChildList.find { it.type == "2" } +// +// binding.run { +// tvTime.text = data.receiverDeadline +// tvType.text = if (data.orderType == "0") "一装一卸" else "一装多卸" +// tvLoad.text = load?.address +// tvPhone.text = """${load?.name} ${load?.phone}""" +// +// tvUnload.text = unLoad?.address +// tvUnloadPhone.text = """${unLoad?.name} ${unLoad?.phone}""" +// +// +// tvCom.text = data?.receiverBusinessName +// tvConsignor.text = data?.realCompanyName +// tvFreight.text = data?.driverFreight.toString() +// +// +// +// +// +// btnCall.setOnClickListener { +// +// PermissionX.init(this@WaybillDetailActivity) +// .permissions(Manifest.permission.CALL_PHONE) +// .request { allGranted, grantedList, deniedList -> +// if (allGranted) { +// BaseUtils.callPhone( +// this@WaybillDetailActivity, +// data.shipperContactPhone +// ) +// } else { +// Toast.makeText( +// mContext, +// "开启权限失败,请在应用设置-权限中打开电话权限", +// Toast.LENGTH_SHORT +// ).show() +// } +// } +// +// } +// } +// } + + var adapter: WaybillNodeAdapter? = null + private fun initRecy() { + adapter = binding.recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + setHasFixedSize(true) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) + ) + adapter = WaybillNodeAdapter() + adapter as WaybillNodeAdapter + }.apply { + setOnItemClickListener { _, _, position -> + ActivityUtils.startActivity( + mContext, + WaybillLoadActivity::class.java, + Bundle().apply { putString(AppConfig.ORDER_ID, items[position].orderId) }) + } + addOnItemChildClickListener(R.id.btnOk) { adapter, view, position -> + ActivityUtils.startActivity(mContext, WaybillDetailActivity::class.java) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillLoadActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillLoadActivity.kt index d8e4a77..bb71309 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillLoadActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillLoadActivity.kt @@ -1,13 +1,33 @@ package com.dahe.gldriver.ui.waybill.activity +import android.Manifest +import android.graphics.Color import android.os.Bundle import android.view.View +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.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.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.utils.GDLocationUtils 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.ToastUtils +import com.permissionx.guolindev.PermissionX +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** @@ -19,26 +39,82 @@ import com.dahe.mylibrary.utils.ToastUtils class WaybillLoadActivity : BaseActivity() { var aMap: AMap? = null + + var orderId: String = "" + var waybillId: String = "" + lateinit var orderBean: OrderDetailBean override fun initView(savedInstanceState: Bundle?) { setTitleBar("运单详情", View.OnClickListener { finish() }, true, "查看单据") { ToastUtils.showToast(mContext, "查看单据") } + orderId = intent.extras?.getString(AppConfig.ORDER_ID,"").toString() + + initRecy() + binding.run { mapView.onCreate(savedInstanceState) if (aMap == null) mapView.map btnRight.setOnClickListener { + var data = orderBean.orderChildList.first { it.type == "1" } ActivityUtils.startActivity( mContext, WaybillUpPicActivity::class.java, - Bundle().apply { putInt(AppConfig.SUCCESS_TYPE, 1) }) + Bundle().apply { + putInt(AppConfig.SUCCESS_TYPE, 1) + putString(AppConfig.ORDER_ID,orderId) + putString(AppConfig.WAYBILL_ID,orderBean.waybillId) + putString(AppConfig.CHILDRE_ID,data.orderChildreId) + }) } } } override fun initDate() { + + DataManager.getInstance().orderDetail(orderId) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + orderBean = t.data + + binding.run { + tvTime.text = orderBean.receiverDeadline + tvType.text = if (orderBean.orderType == "0") "一装一卸" else "一装多卸" + + tvCom.text = orderBean?.receiverBusinessName + tvFreight.text = orderBean?.driverFreight.toString() + + btnLeft.setOnClickListener { + PermissionX.init(this@WaybillLoadActivity) + .permissions(Manifest.permission.CALL_PHONE) + .request { allGranted, grantedList, deniedList -> + if (allGranted) { + BaseUtils.callPhone( + this@WaybillLoadActivity, + orderBean.shipperContactPhone + ) + } else { + Toast.makeText( + mContext, + "开启权限失败,请在应用设置-权限中打开电话权限", + Toast.LENGTH_SHORT + ).show() + } + } + + } + } + + adapter?.submitList(t.data.orderChildList) +// initXml(t.data) + } + })) + + } override fun onResume() { @@ -62,4 +138,32 @@ class WaybillLoadActivity : BaseActivity() { super.onDestroy() } + + var adapter: WaybillNodeAdapter? = null + private fun initRecy() { + adapter = binding.recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + setHasFixedSize(true) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) + ) + adapter = WaybillNodeAdapter() + adapter as WaybillNodeAdapter + }.apply { + setOnItemClickListener { _, _, position -> + ActivityUtils.startActivity( + mContext, + WaybillLoadActivity::class.java, + Bundle().apply { putString(AppConfig.ORDER_ID, items[position].orderId) }) + } + addOnItemChildClickListener(R.id.btnOk) { adapter, view, position -> + ActivityUtils.startActivity(mContext, WaybillDetailActivity::class.java) + } + } + + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUnlLoadActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUnlLoadActivity.kt index a40635a..4576f0a 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUnlLoadActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUnlLoadActivity.kt @@ -1,15 +1,33 @@ package com.dahe.gldriver.ui.waybill.activity +import android.Manifest +import android.graphics.Color import android.os.Bundle import android.view.View +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.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.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.ToastUtils +import com.permissionx.guolindev.PermissionX +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName WaybillLoadActivity @@ -20,26 +38,107 @@ import com.dahe.mylibrary.utils.ToastUtils class WaybillUnlLoadActivity : BaseActivity() { var aMap: AMap? = null + + + var orderId: String = "" + var waybillId: String = "" + lateinit var orderBean: OrderDetailBean override fun initView(savedInstanceState: Bundle?) { setTitleBar("运单详情", { finish() }, true, "查看单据") { ToastUtils.showToast(mContext, "查看单据") } + orderId = intent.extras?.getString(AppConfig.ORDER_ID, "").toString() + initRecy() binding.run { mapView.onCreate(savedInstanceState) if (aMap == null) mapView.map btnRight.setOnClickListener { + var data = orderBean.orderChildList.first { it.type == "2" } ActivityUtils.startActivity( mContext, WaybillUpPicActivity::class.java, - Bundle().apply { putInt(AppConfig.SUCCESS_TYPE, 2) }) + Bundle().apply { + putInt(AppConfig.SUCCESS_TYPE, 2) + putString(AppConfig.ORDER_ID, orderId) + putString(AppConfig.WAYBILL_ID, orderBean.waybillId) + putString(AppConfig.CHILDRE_ID, data.orderChildreId) + }) } } - } override fun initDate() { + + DataManager.getInstance().orderDetail(orderId) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + orderBean = t.data + + binding.run { + tvTime.text = orderBean.receiverDeadline + tvType.text = if (orderBean.orderType == "0") "一装一卸" else "一装多卸" + + tvCom.text = orderBean?.receiverBusinessName + tvFreight.text = orderBean?.driverFreight.toString() + + btnLeft.setOnClickListener { + PermissionX.init(this@WaybillUnlLoadActivity) + .permissions(Manifest.permission.CALL_PHONE) + .request { allGranted, grantedList, deniedList -> + if (allGranted) { + BaseUtils.callPhone( + this@WaybillUnlLoadActivity, + orderBean.shipperContactPhone + ) + } else { + Toast.makeText( + mContext, + "开启权限失败,请在应用设置-权限中打开电话权限", + Toast.LENGTH_SHORT + ).show() + } + } + + } + } + + adapter?.submitList(t.data.orderChildList) +// initXml(t.data) + } + })) + } + + + var adapter: WaybillNodeAdapter? = null + private fun initRecy() { + adapter = binding.recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + setHasFixedSize(true) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) + ) + adapter = WaybillNodeAdapter() + adapter as WaybillNodeAdapter + }.apply { + setOnItemClickListener { _, _, position -> + ActivityUtils.startActivity( + mContext, + WaybillLoadActivity::class.java, + Bundle().apply { putString(AppConfig.ORDER_ID, items[position].orderId) }) + } + addOnItemChildClickListener(R.id.btnOk) { adapter, view, position -> + ActivityUtils.startActivity(mContext, WaybillDetailActivity::class.java) + } + } + } @@ -65,4 +164,5 @@ class WaybillUnlLoadActivity : BaseActivity() { } + } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt index 8be8413..42193fd 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt @@ -3,19 +3,31 @@ 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.dahe.gldriver.base.AppConfig +import com.dahe.gldriver.bean.UpPicBean +import com.dahe.gldriver.bean.WaybillPhoto import com.dahe.gldriver.databinding.ActivityWaybillUppicBinding +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.GDLocationUtils import com.dahe.mylibrary.adapter.GridImageAdapter import com.dahe.mylibrary.adapter.GridImageAdapter.OnItemClickListener import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.callback.OnPicResultListener +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.LoadingUtils import com.dahe.mylibrary.utils.PopsUtils import com.dahe.mylibrary.utils.ToastUtils import com.dahe.mylibrary.weight.FullyGridLayoutManager import com.luck.picture.lib.decoration.GridSpacingItemDecoration import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.utils.DensityUtil +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName WaybillUpPicActivity @@ -24,8 +36,25 @@ import com.luck.picture.lib.utils.DensityUtil * @Description 上传照片:装卸货以及回单照片 */ class WaybillUpPicActivity : BaseActivity() { + + lateinit var upBean: UpPicBean//提交对象 + lateinit var picBean: WaybillPhoto//照片对象 + + var orderId: String = "" + var waybillId: String = "" + var childreId: String = "" + lateinit var latLng: LatLng + override fun initView(savedInstanceState: Bundle?) { - var type = intent.extras?.getInt(AppConfig.SUCCESS_TYPE, 0) + upBean = UpPicBean() + + + var type = intent.extras?.run { + orderId = getString(AppConfig.ORDER_ID, "") + waybillId = getString(AppConfig.WAYBILL_ID, "") + childreId = getString(AppConfig.CHILDRE_ID, "") + getInt(AppConfig.SUCCESS_TYPE, 0) + } if (1 == type) { binding.run { tvTitle.text = "装货" @@ -34,17 +63,131 @@ class WaybillUpPicActivity : BaseActivity() { } } - binding.btnUnload.setOnClickListener { - 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) }) + + binding.run { + tvPosi.setOnClickListener { + getLocation() + } + + + recyclerView.run { + layoutManager = + FullyGridLayoutManager(mContext, 4, GridLayoutManager.VERTICAL, false) + addItemDecoration( + GridSpacingItemDecoration( + 4, + DensityUtil.dip2px(mContext, 8f), false + ) + ) + + var myAdapter = GridImageAdapter(mContext, mData) + + myAdapter.setOnItemClickListener(object : OnItemClickListener { + override fun onItemClick(v: View?, position: Int) { + + } + + 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 + this.type = if (type == 1) "1" else "2" + } + + upBean.waybillPhotoList.add(picBean) + } + } + myAdapter.data.addAll(it) + myAdapter.notifyDataSetChanged() + } + + } + }) + adapter = myAdapter + } + + + + //回单处理 + recyclerView2.run { + layoutManager = + FullyGridLayoutManager(mContext, 4, GridLayoutManager.VERTICAL, false) + addItemDecoration( + GridSpacingItemDecoration( + 4, + DensityUtil.dip2px(mContext, 8f), false + ) + ) + + var myAdapter = GridImageAdapter(mContext, mData) + + myAdapter.setOnItemClickListener(object : OnItemClickListener { + override fun onItemClick(v: View?, position: Int) { + + } + + 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" + this.type = "3" + } + upBean.waybillPhotoList.add(picBean) + } + } + myAdapter.data.addAll(it) + myAdapter.notifyDataSetChanged() + } + + } + }) + adapter = myAdapter + } + + + + btnUnload.setOnClickListener { + upBean.run { + orderId = this@WaybillUpPicActivity.orderId + waybillId = this@WaybillUpPicActivity.waybillId + latitude = latLng.latitude.toString() + longitude = latLng.longitude.toString() + orderChildreId = this@WaybillUpPicActivity.childreId + this.type = if (type == 1) "1" else "2" + } + + DataManager.getInstance().driverLoadOrUnload(upBean) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + 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) }) + } } } } @@ -52,44 +195,25 @@ class WaybillUpPicActivity : BaseActivity() { private val mData: List = ArrayList() override fun initDate() { + getLocation() + } - binding.recyclerView.run { - layoutManager = FullyGridLayoutManager(mContext, 4, GridLayoutManager.VERTICAL, false) - addItemDecoration( - GridSpacingItemDecoration( - 4, - DensityUtil.dip2px(mContext, 8f), false - ) - ) - - var myAdapter = GridImageAdapter(mContext, mData) - - myAdapter.setOnItemClickListener(object : OnItemClickListener { - override fun onItemClick(v: View?, position: Int) { + fun getLocation() { + LoadingUtils.instance.showLoading(this,"定位中,请稍等...") + GDLocationUtils.instance.getLocation(this@WaybillUpPicActivity) { + //errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明 + runOnUiThread { + LoadingUtils.instance.dissLoading() + if (it.getErrorCode() == 0) { + it.getLongitude()//经 度 + it.getLatitude()//纬 度 + latLng = LatLng(it.latitude, it.longitude) + binding.tvLoca.text = it.address + } else { + showToast("定位失败,请检查定位权限是否开启") } - - override fun openPicture() { - PopsUtils.getInstance().showSelPic(mContext,myAdapter){ - myAdapter.data.addAll(it) - myAdapter.notifyDataSetChanged() - } -// XPopup.Builder(mContext) -// .dismissOnTouchOutside(true) -// .asCustom(PopBottomPic(mContext, myAdapter, onPicResultListener = { -// ToastUtils.showToast(mContext, it.size.toString()) -// myAdapter.data.addAll(it) -// myAdapter.notifyDataSetChanged() -// })) -// .show() - - } - }) - -// setHasFixedSize(true) - adapter = myAdapter + } } - - } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/AllWaybillFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/AllWaybillFragment.kt index b41be0c..526f3ff 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/AllWaybillFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/AllWaybillFragment.kt @@ -1,12 +1,28 @@ package com.dahe.gldriver.ui.waybill.fragment +import android.content.Context +import android.graphics.Color +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.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.utils.OrderUtils +import com.dahe.glex.bean.OrderBean import com.dahe.glex.bean.WayBillBean 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.ConvertUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName AllWaybillFragment @@ -14,30 +30,90 @@ import com.dahe.mylibrary.base.BaseFragment * @Date 2024/1/24 14:06 * @Description TODO */ -class AllWaybillFragment : BaseFragment() { +class AllWaybillFragment : BaseFragment(), RefreshCallBack, OnSearchListener { + lateinit var adapter: WaybillListAdapter override fun onFragmentVisibleChange(isVisible: Boolean) { } override fun onFragmentFirstVisible() { - var datas = mutableListOf( - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean(), - WayBillBean() - ) - var adapter = binding.recyclerView.run { - layoutManager = LinearLayoutManager(mContext,RecyclerView.VERTICAL,false) - setHasFixedSize(true) - adapter = WaybillListAdapter() - adapter as WaybillListAdapter + binding.run { + setRefresh(refresh, this@AllWaybillFragment) + adapter = recyclerView.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(8.0f), + Color.TRANSPARENT + ) + ) + + adapter = WaybillListAdapter() + // 打开空布局功能 + (adapter as WaybillListAdapter).isStateViewEnable = true + adapter as WaybillListAdapter + } } - adapter.submitList(datas) + initData() } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initData() + } + + override fun onSearchClick(search: String) { + initData(search) + } + + private fun initData(search: String = "") { + DataManager.getInstance() + .selectMyWaybillList(mRefreshPage, mRefreshCount, searchValue = search) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + + if (mRefreshPage === 1) { + if (t.data.size == 0) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + + override fun onCodeError( + mContext: Context?, + t: CommonResponseBean> + ) { + super.onCodeError(mContext, t) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + + override fun onFailure(mContext: Context?, e: Throwable) { + super.onFailure(mContext, e) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + })) + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/CancelWaybillFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/CancelWaybillFragment.kt new file mode 100644 index 0000000..a063ac1 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/CancelWaybillFragment.kt @@ -0,0 +1,113 @@ +package com.dahe.gldriver.ui.waybill.fragment + +import android.content.Context +import android.graphics.Color +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.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.utils.OrderUtils +import com.dahe.glex.bean.OrderBean +import com.dahe.glex.bean.WayBillBean +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.ConvertUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName AllWaybillFragment + * @Author 用户 + * @Date 2024/1/24 14:06 + * @Description 取消运单 + */ +class CancelWaybillFragment : BaseFragment(), RefreshCallBack , + OnSearchListener { + + + lateinit var adapter: WaybillListAdapter + + override fun onFragmentVisibleChange(isVisible: Boolean) { + + } + + override fun onFragmentFirstVisible() { + binding.run { + setRefresh(refresh, this@CancelWaybillFragment) + adapter = recyclerView.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(8.0f), + Color.TRANSPARENT + ) + ) + adapter = WaybillListAdapter() + // 打开空布局功能 + (adapter as WaybillListAdapter).isStateViewEnable = true + adapter as WaybillListAdapter + } + } + initData() + } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initData() + } + + override fun onSearchClick(search: String) { + initData(search) + } + + private fun initData(search: String = "") { + DataManager.getInstance().selectMyWaybillList(mRefreshPage, mRefreshCount, "103000",search) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (mRefreshPage === 1) { + if (t.data.size==0){ + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + }else{ + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + + override fun onCodeError(mContext: Context?, t: CommonResponseBean>) { + super.onCodeError(mContext, t) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + + override fun onFailure(mContext: Context?, e: Throwable) { + super.onFailure(mContext, e) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + })) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitAppraiseFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitAppraiseFragment.kt new file mode 100644 index 0000000..09b1d4e --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitAppraiseFragment.kt @@ -0,0 +1,113 @@ +package com.dahe.gldriver.ui.waybill.fragment + +import android.content.Context +import android.graphics.Color +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.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.utils.OrderUtils +import com.dahe.glex.bean.OrderBean +import com.dahe.glex.bean.WayBillBean +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.ConvertUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName AllWaybillFragment + * @Author 用户 + * @Date 2024/1/24 14:06 + * @Description 待评价 + */ +class WaitAppraiseFragment : BaseFragment() , RefreshCallBack , + OnSearchListener { + + + lateinit var adapter: WaybillListAdapter + + override fun onFragmentVisibleChange(isVisible: Boolean) { + + } + + override fun onFragmentFirstVisible() { + binding.run { + setRefresh(refresh, this@WaitAppraiseFragment) + adapter = recyclerView.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(8.0f), + Color.TRANSPARENT + ) + ) + adapter = WaybillListAdapter() + // 打开空布局功能 + (adapter as WaybillListAdapter).isStateViewEnable = true + adapter as WaybillListAdapter + } + } + initData() + } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initData() + } + + override fun onSearchClick(search: String) { + initData(search) + } + + private fun initData(search: String = "") { + DataManager.getInstance().selectMyWaybillList(mRefreshPage,mRefreshCount,"102080",search) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (mRefreshPage === 1) { + if (t.data.size==0){ + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + }else{ + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + + override fun onCodeError(mContext: Context?, t: CommonResponseBean>) { + super.onCodeError(mContext, t) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + + override fun onFailure(mContext: Context?, e: Throwable) { + super.onFailure(mContext, e) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + })) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitLoadFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitLoadFragment.kt new file mode 100644 index 0000000..fe0f068 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitLoadFragment.kt @@ -0,0 +1,113 @@ +package com.dahe.gldriver.ui.waybill.fragment + +import android.content.Context +import android.graphics.Color +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.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.utils.OrderUtils +import com.dahe.glex.bean.OrderBean +import com.dahe.glex.bean.WayBillBean +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.ConvertUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName AllWaybillFragment + * @Author 用户 + * @Date 2024/1/24 14:06 + * @Description 待装货 + */ +class WaitLoadFragment : BaseFragment(), RefreshCallBack , OnSearchListener { + + + lateinit var adapter: WaybillListAdapter + + override fun onFragmentVisibleChange(isVisible: Boolean) { + + } + + override fun onFragmentFirstVisible() { + binding.run { + setRefresh(refresh, this@WaitLoadFragment) + adapter = recyclerView.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(8.0f), + Color.TRANSPARENT + ) + ) + adapter = WaybillListAdapter()// 打开空布局功能 + (adapter as WaybillListAdapter).isStateViewEnable = true + adapter as WaybillListAdapter + } + } + initData() + } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initData() + } + + override fun onSearchClick(search: String) { + initData(search) + } + + private fun initData(search: String = "") { + DataManager.getInstance().selectMyWaybillList(mRefreshPage,mRefreshCount,"102040",search) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (mRefreshPage === 1) { + if (t.data.size==0){ + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + }else{ + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + + override fun onCodeError(mContext: Context?, t: CommonResponseBean>) { + super.onCodeError(mContext, t) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + + override fun onFailure(mContext: Context?, e: Throwable) { + super.onFailure(mContext, e) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + })) + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitUnLoadFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitUnLoadFragment.kt new file mode 100644 index 0000000..0c7c211 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitUnLoadFragment.kt @@ -0,0 +1,116 @@ +package com.dahe.gldriver.ui.waybill.fragment + +import android.content.Context +import android.graphics.Color +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.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.utils.OrderUtils +import com.dahe.glex.bean.OrderBean +import com.dahe.glex.bean.WayBillBean +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.ConvertUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName AllWaybillFragment + * @Author 用户 + * @Date 2024/1/24 14:06 + * @Description 待卸货 + */ +class WaitUnLoadFragment : BaseFragment(), RefreshCallBack , + OnSearchListener { + + + lateinit var adapter: WaybillListAdapter + + override fun onFragmentVisibleChange(isVisible: Boolean) { + + } + + override fun onFragmentFirstVisible() { + binding.run { + setRefresh(refresh, this@WaitUnLoadFragment) + adapter = recyclerView.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(8.0f), + Color.TRANSPARENT + ) + ) + adapter = WaybillListAdapter() + // 打开空布局功能 + (adapter as WaybillListAdapter).isStateViewEnable = true + adapter as WaybillListAdapter + } + } + initData() + } + + override fun getRefreshDate(stat: Int, page: Int, count: Int) { + initData() + } + + override fun onSearchClick(search: String) { + initData(search) + } + + private fun initData(search: String = "") { + DataManager.getInstance().selectMyWaybillList(mRefreshPage, mRefreshCount, "102050",search) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + if (mRefreshPage === 1) { + if (t.data.size==0){ + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + }else{ + adapter?.submitList(t.data) + } + } else { + adapter?.addAll(t.data) + } + setFinishRefresh( + binding.refresh, + t.total > mRefreshPage * mRefreshCount + ) + } + + override fun onCodeError( + mContext: Context?, + t: CommonResponseBean> + ) { + super.onCodeError(mContext, t) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + + override fun onFailure(mContext: Context?, e: Throwable) { + super.onFailure(mContext, e) + setFinishRefresh( + binding.refresh, + true + ) + mContext?.let { adapter.setStateViewLayout(it, R.layout.empty_view) } + } + })) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/utils/CommonPopUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/CommonPopUtils.kt new file mode 100644 index 0000000..d9ac553 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/utils/CommonPopUtils.kt @@ -0,0 +1,17 @@ +package com.dahe.gldriver.utils + +import com.dahe.mylibrary.base.SingletonNoPHolder + +/** + * @ClassName CommonPopUtils + * @Author john + * @Date 2024/3/5 15:48 + * @Description TODO + */ +class CommonPopUtils private constructor(){ + + companion object : SingletonNoPHolder(::CommonPopUtils) + + + +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/utils/GDLocationUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/GDLocationUtils.kt new file mode 100644 index 0000000..e645923 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/utils/GDLocationUtils.kt @@ -0,0 +1,70 @@ +package com.dahe.gldriver.utils + +import android.content.Context +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.amap.api.location.AMapLocationListener + + + +class GDLocationUtils private constructor(){ + + //声明AMapLocationClient类对象 + var mLocationClient : AMapLocationClient?= null; + + //声明AMapLocationClientOption对象 + var mLocationOption: AMapLocationClientOption? = null + + + companion object{ + val instance = Holder.holder + } + + object Holder { + val holder = GDLocationUtils() + } + + fun getLocation(ctx : Context,mLocationListener : AMapLocationListener){ + //初始化定位 + mLocationClient = AMapLocationClient(ctx) + //设置定位回调监听 + mLocationClient?.setLocationListener(mLocationListener) + //初始化AMapLocationClientOption对象 + mLocationOption = AMapLocationClientOption() + + /** + * 设置定位场景,目前支持三种场景(签到、出行、运动,默认无场景) + */ + mLocationOption?.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn) + + + //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。 + mLocationOption?.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy) +// mLocationOption?.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving) + + //获取一次定位结果: + //该方法默认为false。 + mLocationOption?.setOnceLocation(true) + + //获取最近3s内精度最高的一次定位结果: +//设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。 + mLocationOption?.setOnceLocationLatest(true) + + //设置是否允许模拟位置,默认为true,允许模拟位置 + mLocationOption?.setMockEnable(true) + + //给定位客户端对象设置定位参数 + mLocationClient?.setLocationOption(mLocationOption); + if(null != mLocationClient){ + mLocationClient?.setLocationOption(mLocationOption); + //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效 + mLocationClient?.stopLocation() + mLocationClient?.startLocation() + } + } + fun stopLocation(){ + if(null != mLocationClient){ + mLocationClient?.stopLocation() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/utils/LocationUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/LocationUtils.kt new file mode 100644 index 0000000..c332141 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/utils/LocationUtils.kt @@ -0,0 +1,67 @@ +package com.dahe.gldriver.utils + +import com.amap.api.maps2d.AMapException +import com.amap.api.maps2d.model.LatLng +import com.dahe.mylibrary.base.SingletonNoPHolder + +/** + * @ClassName LocationUtils + * @Author john + * @Date 2024/3/4 15:53 + * @Description TODO + */ +class LocationUtils private constructor() { + + companion object : SingletonNoPHolder(::LocationUtils) + + + fun getDistance(var0: LatLng?, var1: LatLng?): String { + return if (var0 != null && var1 != null) { + try { + var var2: Double = var0.longitude + var var4: Double = var0.latitude + var var6: Double = var1.longitude + var var8: Double = var1.latitude + var2 *= 0.01745329251994329 + var4 *= 0.01745329251994329 + var6 *= 0.01745329251994329 + var8 *= 0.01745329251994329 + val var10 = Math.sin(var2) + val var12 = Math.sin(var4) + val var14 = Math.cos(var2) + val var16 = Math.cos(var4) + val var18 = Math.sin(var6) + val var20 = Math.sin(var8) + val var22 = Math.cos(var6) + val var24 = Math.cos(var8) + val var28 = DoubleArray(3) + val var29 = DoubleArray(3) + var28[0] = var16 * var14 + var28[1] = var16 * var10 + var28[2] = var12 + var29[0] = var24 * var22 + var29[1] = var24 * var18 + var29[2] = var20 + String.format( + "%.2f", (Math.asin( + Math.sqrt( + (var28[0] - var29[0]) * (var28[0] - var29[0]) + + (var28[1] - var29[1]) * (var28[1] - var29[1]) + (var28[2] - var29[2]) * (var28[2] - var29[2]) + ) / 2.0 + ) + * 1.27420015798544E7).toFloat() / 1000 + ) + } catch (var26: Throwable) { + var26.printStackTrace() + "0.00" + } + } else { + try { + throw AMapException("非法坐标值") + } catch (var27: AMapException) { + var27.printStackTrace() + "0.00" + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/utils/OrderUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/OrderUtils.kt new file mode 100644 index 0000000..3813108 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/utils/OrderUtils.kt @@ -0,0 +1,67 @@ +package com.dahe.gldriver.utils + +import com.dahe.mylibrary.base.SingletonNoPHolder + +/** + * @ClassName OrderUtils + * @Author john + * @Date 2024/3/4 14:48 + * @Description 订单状态转换 + */ +class OrderUtils private constructor() { + + companion object : SingletonNoPHolder(::OrderUtils) + + + fun getOrderStatu(statu: String): String { + return when (statu) { + "102010" -> "草稿箱" + "102020" -> "待调度" + "102030" -> "待接单" + "102040" -> "待装货" + "102050" -> "待卸货" + "102060" -> "待签收" + "102070" -> "待结算" + "102080" -> "待评价" + "103000" -> "已取消" + else -> { + "" + } + } + } + + + fun getNextByStatu(statu: String): String { + return when (statu) { + "102010" -> "草稿箱" + "102020" -> "待调度" + "102030" -> "去接单" + "102040" -> "去装货" + "102050" -> "去卸货" + "102060" -> "待签收" + "102070" -> "待结算" + "102080" -> "去评价" + "103000" -> "已取消" + else -> { + "" + } + } + } + + fun getStatuByString(statu: String): String { + return when (statu) { + "草稿箱" -> "102010" + "待调度" -> "102020" + "待接单" -> "102030" + "待装货" -> "102040" + "待卸货" -> "102050" + "待签收" -> "102060" + "待结算" -> "102070" + "待评价" -> "102080" + "已取消" -> "103000" + else -> { + "" + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/cancel.png b/app/src/main/res/drawable-xxhdpi/cancel.png new file mode 100644 index 0000000..b63d786 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/cancel.png differ diff --git a/app/src/main/res/drawable-xxhdpi/empty_content.png b/app/src/main/res/drawable-xxhdpi/empty_content.png new file mode 100644 index 0000000..e6e89f8 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/empty_content.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_wabill.png b/app/src/main/res/drawable-xxhdpi/icon_wabill.png new file mode 100644 index 0000000..89ba549 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_wabill.png differ diff --git a/app/src/main/res/drawable/shape_orange_2.xml b/app/src/main/res/drawable/shape_orange_2.xml new file mode 100644 index 0000000..3141d84 --- /dev/null +++ b/app/src/main/res/drawable/shape_orange_2.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_orange_4.xml b/app/src/main/res/drawable/shape_orange_4.xml new file mode 100644 index 0000000..8ae904f --- /dev/null +++ b/app/src/main/res/drawable/shape_orange_4.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_white_8.xml b/app/src/main/res/drawable/shape_white_8.xml new file mode 100644 index 0000000..a312942 --- /dev/null +++ b/app/src/main/res/drawable/shape_white_8.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_waybill_detail.xml b/app/src/main/res/layout/activity_waybill_detail.xml index bb783ab..fa030e3 100644 --- a/app/src/main/res/layout/activity_waybill_detail.xml +++ b/app/src/main/res/layout/activity_waybill_detail.xml @@ -69,6 +69,7 @@ android:textSize="@dimen/sp_15" /> - - - + android:layout_marginTop="@dimen/dp_33" /> - + + + + + + + - + + + + + + + + + + - android:background="@drawable/icon_unload" /> + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + @@ -167,12 +175,15 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" - android:text="122.5km" + tools:text="122.5km" + android:maxLength="10" + android:ellipsize="end" android:textColor="@color/black" android:textSize="@dimen/sp_16" android:textStyle="bold" /> @@ -246,7 +257,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:layout_marginLeft="@dimen/dp_12" + android:layout_marginLeft="@dimen/dp_2" android:layout_toRightOf="@+id/tvUnloadDis" android:gravity="center" android:orientation="vertical"> @@ -343,15 +354,22 @@ android:textSize="@dimen/sp_15" /> + android:textSize="@dimen/sp_15" + tools:text="整车 4.2/6.2/6.8 米 高栏/厢式" /> + + - + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + android:layout_marginTop="@dimen/dp_33" /> diff --git a/app/src/main/res/layout/activity_waybill_unload.xml b/app/src/main/res/layout/activity_waybill_unload.xml index 586777a..770daac 100644 --- a/app/src/main/res/layout/activity_waybill_unload.xml +++ b/app/src/main/res/layout/activity_waybill_unload.xml @@ -181,6 +181,7 @@ android:textSize="@dimen/sp_15" /> - - - - - - - - - - - + android:layout_marginTop="@dimen/dp_33" /> diff --git a/app/src/main/res/layout/activity_waybill_uppic.xml b/app/src/main/res/layout/activity_waybill_uppic.xml index 7ab1766..6aaa581 100644 --- a/app/src/main/res/layout/activity_waybill_uppic.xml +++ b/app/src/main/res/layout/activity_waybill_uppic.xml @@ -94,11 +94,12 @@ android:textSize="@dimen/sp_12" /> @@ -202,19 +203,19 @@ android:textColor="@color/black" android:textSize="@dimen/sp_15" /> - + android:overScrollMode="never" /> @@ -222,9 +223,9 @@ diff --git a/app/src/main/res/layout/empty_view.xml b/app/src/main/res/layout/empty_view.xml new file mode 100644 index 0000000..3074d51 --- /dev/null +++ b/app/src/main/res/layout/empty_view.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index efac6ab..42b0cc4 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,189 +1,187 @@ - - + android:layout_height="wrap_content" + android:fillViewport="true"> - > + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_m_36" + android:gravity="center" + android:orientation="horizontal" + android:paddingLeft="@dimen/dp_14" + android:paddingRight="@dimen/dp_14"> + android:layout_width="@dimen/dp_160" + android:layout_height="@dimen/dp_96" + android:background="@drawable/home_all"> + - - + android:layout_height="1dp" + android:layout_weight="1"> - + - //搜索 + android:layout_marginRight="@dimen/dp_14" + android:background="@drawable/marquee_bg" + android:gravity="center_vertical"> + + + + + + + + + + + + + + + android:text="推荐货源" + android:textColor="@color/black" + android:textSize="@dimen/sp_18" + android:textStyle="bold" - - - //金刚区 + > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_waybill.xml b/app/src/main/res/layout/fragment_waybill.xml index bfdcf89..27a26ee 100644 --- a/app/src/main/res/layout/fragment_waybill.xml +++ b/app/src/main/res/layout/fragment_waybill.xml @@ -30,7 +30,21 @@ android:singleLine="true" android:textSize="@dimen/sp_14"> + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_waybill_node.xml b/app/src/main/res/layout/item_waybill_node.xml new file mode 100644 index 0000000..0da1ed1 --- /dev/null +++ b/app/src/main/res/layout/item_waybill_node.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mylibrary/build.gradle b/mylibrary/build.gradle index 0b8b7cc..4d7d83e 100644 --- a/mylibrary/build.gradle +++ b/mylibrary/build.gradle @@ -84,6 +84,8 @@ dependencies { api rootProject.ext.dependencies["AddressPicker"] api 'pub.devrel:easypermissions:3.0.0' api 'io.github.lucksiege:compress:v3.11.2' + api 'org.greenrobot:eventbus:3.3.1' + // api 'com.gyf.cactus:cactus:1.1.3-beta13' diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java index 1e900dc..0c4dad3 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java @@ -31,6 +31,8 @@ import com.scwang.smart.refresh.layout.api.RefreshLayout; import com.scwang.smart.refresh.layout.constant.RefreshState; import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener; +import org.greenrobot.eventbus.EventBus; + import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; @@ -324,6 +326,17 @@ public abstract class BaseActivity extends AppCompatActi return ContextCompat.getColor(this, id); } + + @Override + protected void onStart() { + super.onStart(); + } + + @Override + protected void onStop() { + super.onStop(); + } + @Override public void onResume() { super.onResume(); diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseFragment.java b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseFragment.java index 499fbce..c12c9e0 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseFragment.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseFragment.java @@ -28,6 +28,8 @@ import com.scwang.smart.refresh.layout.api.RefreshLayout; import com.scwang.smart.refresh.layout.constant.RefreshState; import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener; +import org.greenrobot.eventbus.EventBus; + import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; @@ -298,7 +300,15 @@ public abstract class BaseFragment extends Fragment { rootView = null; isReuseView = true; } + @Override + public void onStart() { + super.onStart(); + } + @Override + public void onStop() { + super.onStop(); + } @Override public void onPause() { isPause = true; diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopBottomPic.kt b/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopBottomPic.kt index 09cf53a..bfe0c9f 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopBottomPic.kt +++ b/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopBottomPic.kt @@ -90,7 +90,7 @@ class PopBottomPic( .setCompressEngine(ImageFileCompressEngine()) .isPreviewImage(true) .isMaxSelectEnabledMask(true) - .setMaxSelectNum(6) + .setMaxSelectNum(1) .isGif(false) .setSelectedData(myAdapter.data) selectionModel.forResult(object : OnResultCallbackListener {