普通发货,个人信息维护

This commit is contained in:
lijia 2024-11-07 08:42:01 +08:00
parent 41a4fafd01
commit 54b3db22e3
15 changed files with 786 additions and 395 deletions

View File

@ -14,7 +14,6 @@ data class PostAddressBean(
var longitude: String = "", var longitude: String = "",
var addressDetail: String = "" var addressDetail: String = ""
) { ) {
var addressType: String = ""
var cityCode: String = "" var cityCode: String = ""
var companyCode: String = "" var companyCode: String = ""
var companyName: String = "" var companyName: String = ""
@ -26,7 +25,7 @@ data class PostAddressBean(
var provinceCode: String = "" var provinceCode: String = ""
var sortValue: String = "" var sortValue: String = ""
var tagContent: String = "" var tagContent: String = ""
var userType: String = "" var userType: String = ""//1:企业0个人
var addressId: String = "" var addressId: String = ""
constructor( constructor(
@ -37,7 +36,6 @@ data class PostAddressBean(
latitude: String, latitude: String,
longitude: String, longitude: String,
addressDetail: String, addressDetail: String,
addressType: String,
cityCode: String, cityCode: String,
companyCode: String, companyCode: String,
companyName: String, companyName: String,
@ -52,7 +50,6 @@ data class PostAddressBean(
userType: String, userType: String,
addressId: String addressId: String
) : this(province, city, area, areaCode, latitude, longitude, addressDetail) { ) : this(province, city, area, areaCode, latitude, longitude, addressDetail) {
this.addressType = addressType
this.cityCode = cityCode this.cityCode = cityCode
this.companyCode = companyCode this.companyCode = companyCode
this.companyName = companyName this.companyName = companyName
@ -69,12 +66,9 @@ data class PostAddressBean(
} }
} }
data class Texfff(val name: String, val age: Int) {
constructor(name: String, age: Int, id: String) : this(name, age) {}
}
data class AddressBean( data class AddressBean(
val addressDetail: String, val addressDetail: String,
var address: String,
val addressId: String, val addressId: String,
val addressType: String, val addressType: String,
val area: String, val area: String,
@ -100,14 +94,21 @@ data class AddressBean(
val tagContent: String, val tagContent: String,
val updateBy: String, val updateBy: String,
val updateTime: String, val updateTime: String,
val userType: String val userType: String,
var name: String,
var phone: String,
var type: String //1装2卸
) { ) {
// var address:String= addressDetail
constructor() : this( constructor() : this(
"", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "" "", "", "", "", "", "","","", ""
) )
} }

View File

@ -1,5 +1,8 @@
package com.dahe.glex.bean package com.dahe.glex.bean
import com.dhsd.glowner.bean.AddressBean
import com.dhsd.glowner.bean.GoodBean
/** /**
* @ClassName OrderBean * @ClassName OrderBean
* @Author 用户 * @Author 用户
@ -8,108 +11,108 @@ package com.dahe.glex.bean
*/ */
data class OrderListBean<T>( data class OrderListBean<T>(
var total : Int, var total : String,
var rows: List<T> var rows: List<T>
) )
data class TextOrder(val orderId: String) data class TextOrder(var orderId: String)
data class OrderBean( data class OrderBean(
val acceptTime: String, var acceptTime: String,
val alctGoodsType: String, var alctGoodsType: String,
val auditStatus: String, var auditStatus: String,
val auditTime: String, var auditTime: String,
val auditUser: String, var auditUser: String,
val automaticAudit: String, var automaticAudit: String,
val bankCardNo: String, var bankCardNo: String,
val bankName: String, var bankName: String,
val bankOpenBank: String, var bankOpenBank: String,
val bankSequenceCode: String, var bankSequenceCode: String,
val bankUserName: String, var bankUserName: String,
val businessType: String, var businessType: String,
val capitalStatus: String, var capitalStatus: String,
val createBy: String, var createBy: String,
val createDate: String, var createDate: String,
val createTime: String, var createTime: String,
val deptAncestors: String, var deptAncestors: String,
val deptId: String, var deptId: String,
val direction: String, var direction: String,
val dispatchStatus: String, var dispatchStatus: String,
val dispatchType: String, var dispatchType: String,
val distance: Double, var distance: Double,
val driverFreight: String, var driverFreight: String,
val driverTax: String, var driverTax: String,
val driverTaxFreight: String, var driverTaxFreight: String,
val effectiveTimeEnd: String, var effectiveTimeEnd: String,
val effectiveTimeStart: String, var effectiveTimeStart: String,
val estimatedProfit: Double, var estimatedProfit: Double,
val etcCost: String, var etcCost: String,
val failedReason: String, var failedReason: String,
val finishTime: String, var finishTime: String,
val goodsBigCate: String, var goodsBigCate: String,
val goodsValue: String, var goodsvarue: String,
val inputFreight: String, var inputFreight: String,
val insuranceCosts: String, var insuranceCosts: String,
val insurancePremiumRate: String, var insurancePremiumRate: String,
val insureAmount: String, var insureAmount: String,
val isDeleted: String, var isDeleted: String,
val isInsure: String, var isInsure: String,
val loadingAddress: String, var loadingAddress: String,
val loadingArea: String, var loadingArea: String,
val loadingAreaCode: String, var loadingAreaCode: String,
val loadingBusinessCode: String, var loadingBusinessCode: String,
val loadingBusinessName: String, var loadingBusinessName: String,
val loadingCity: String, var loadingCity: String,
val loadingCityCode: String, var loadingCityCode: String,
val loadingDeadline: String, var loadingDeadline: String,
val loadingName: String, var loadingName: String,
val loadingPhone: String, var loadingPhone: String,
val loadingProvince: String, var loadingProvince: String,
val loadingProvinceCityArea: String, var loadingProvinceCityArea: String,
val loadingProvinceCode: String, var loadingProvinceCode: String,
val motorcadeRatio: String, var motorcadeRatio: String,
val motorcadeTotalFreight: String, var motorcadeTotalFreight: String,
val namedDrivers: String, var namedDrivers: String,
val noShipperCar: String, var noShipperCar: String,
val oliCost: String, var oliCost: String,
val orderId: String, var orderId: String,
val orderNum: String, var orderNum: String,
val orderStatus: String, var orderStatus: String,
val orderType: String, var orderType: String,
val otherCost: String, var otherCost: String,
val passingPoStringsNum: String, var passingPoStringsNum: String,
val platformRatio: String, var platformRatio: String,
val platformTotalFreight: String, var platformTotalFreight: String,
val receiverAddress: String, var receiverAddress: String,
val receiverArea: String, var receiverArea: String,
val receiverAreaCode: String, var receiverAreaCode: String,
val receiverBusinessCode: String, var receiverBusinessCode: String,
val receiverBusinessName: String, var receiverBusinessName: String,
val receiverCity: String, var receiverCity: String,
val receiverCityCode: String, var receiverCityCode: String,
val receiverDeadline: String, var receiverDeadline: String,
val receiverIdcard: String, var receiverIdcard: String,
val receiverName: String, var receiverName: String,
val receiverPhone: String, var receiverPhone: String,
val receiverProvince: String, var receiverProvince: String,
val receiverProvinceCityArea: String, var receiverProvinceCityArea: String,
val receiverProvinceCode: String, var receiverProvinceCode: String,
val remark: String, var remark: String,
val report: String, var report: String,
val reportAlct: String, var reportAlct: String,
val reportStatus: String, var reportStatus: String,
val requirement: String, var requirement: String,
val settleStatus: String, var settleStatus: String,
val settleTime: String, var settleTime: String,
val shipperCaptainId: String, var shipperCaptainId: String,
val shipperCarId: String, var shipperCarId: String,
val shipperDriverId: String, var shipperDriverId: String,
val shipperId: String, var shipperId: String,
val submitTime: String, var submitTime: String,
val totalFreight: String, var totalFreight: String,
val updateBy: String, var updateBy: String,
val updateTime: String, var updateTime: String,
val vehicleLength: String, var vehicleLength: String,
val vehicleType: String var vehicleType: String
) )
data class DispatchBean( data class DispatchBean(
@ -118,3 +121,146 @@ data class DispatchBean(
var shipperDriverId: String, var shipperDriverId: String,
var shipperCarId: String var shipperCarId: String
) )
data class PostOrderBean(
var acceptTime: String,
var alctCargoTypeClassificationCode: String = "10",
var auditStatus: String,
var auditTime: String,
var auditUser: String,
var automaticAudit: String,
var bankCardNo: String,
var bankName: String,
var bankOpenBank: String,
var bankSequenceCode: String,
var bankUserName: String,
var businessType: String = "1002996",
var capitalStatus: String,
var captainName: String,
var carVehicleNum: String,
var createBy: String,
var createDate: String,
var createTime: String,
var deptAncestors: String,
var deptId: String,
var direction: String,
var dispatchStatus: String,
var dispatchType: String,
var driverEvaruationStatus: String,
var driverFreight: String,
var driverName: String,
var driverPhone: String,
var driverTax: String,
var driverTaxFreight: String,
var effectiveTimeEnd: String,
var effectiveTimeStart: String,
var etcCost: String,
var failedReason: String,
var finishTime: String,
var goodsBigCate: String,
var goodsvarue: String,
var inputFreight: String,
var insuranceCosts: String,
var insurancePremiumRate: String,
var insureAmount: String,
var isDeleted: String,
var isInsure: String,
var loadingAddress: String,
var loadingArea: String,
var loadingAreaCode: String,
var loadingBusinessCode: String,
var loadingBusinessName: String,
var loadingCity: String,
var loadingCityCode: String,
var loadingDeadline: String,
var receiverDeadline: String,
var loadingName: String,
var loadingPhone: String,
var loadingProvince: String,
var loadingProvinceCityArea: String,
var loadingProvinceCode: String,
var motorcadeRatio: String,
var motorcadeTotalFreight: String,
var namedDrivers: String,
var noShipperCar: String,
var oliCost: String,
var orderId: String,
var orderNum: String,
var orderStatus: String,
var orderType: String,
var otherCost: String,
var passingPoStringsNum: String,
var platformRatio: String,
var platformTotalFreight: String,
var provinceCityArea: String,
var receiverAddress: String,
var vehicleType: String,
var vehicleLength: String,
var childList:MutableList<AddressBean> = mutableListOf(),
var goodsList:MutableList<GoodBean> = mutableListOf(),
var order : OrderBean? = null
){
constructor():this("","10","","","",
"","","","","","",
"1002996","","","","","","",
"","","","","","","",
"","","","","","",
"","","","","","",
"","","","","","",
"","","","","","",
"","","","","","",
"","","","","",
"","","","","","","","",
"","", "","","")
}
data class Child(
var address: String,
var area: String,
var areaCode: String,
var businessCode: String,
var businessName: String,
var city: String,
var cityCode: String,
var cost: String,
var createBy: String,
var createTime: String,
var deadline: String,
var displayOrder: String,
var isPassingPoStrings: String,
var isSaveToCommonAddress: String,
var latitude: String,
var longitude: String,
var name: String,
var orderChildreId: String,
var orderId: String,
var phone: String,
var province: String,
var provinceAreaCode: List<String>,
var provinceCityArea: String,
var provinceCode: String,
var remark: String,
var sortvarue: String,
var status: String,
var totalAmount: String,
var type: String,
var updateBy: String,
var updateTime: String
)
data class ShipperDispatchInfo(
var carHeight: String,
var carLong: String,
var carWidth: String,
var contactPhone: String,
var idcardName: String,
var isRealName: String,
var shipperCarId: String,
var shipperDriverId: String,
var vehicleNum: String,
var vehicleType: String,
var vehicleTypeCode: String
)

View File

@ -6,26 +6,23 @@ package com.dahe.glex.bean
* @Date 2023/9/21 09:52 * @Date 2023/9/21 09:52
* @Description TODO * @Description TODO
*/ */
data class UserParent(
val user:UserBean
)
data class UserBean( data class UserBean(
var token :String, var token :String,
var access_token :String, var access_token :String,
var expires_in :String,
var id :String,
var roleId :String,
var uname :String,
var registerPhone :String,
var companyName :String,
var account :String,
var headportraitUrl :String,
var salt :String,
var jumpUrl :String,
var distance :String,
var idCardValidity :String,
var driverValidity :String,
var qualificationValidity :String,
var isCar :String, var isCar :String,
var qrcodeUrl :String, var qrcodeUrl :String,
var credit :String var userName :String,
var nickName :String,
var phonenumber :String,
var userId :String,
var deptId :String,
var avatar :String,
var password :String
) )
data class CodeBean( data class CodeBean(

View File

@ -64,6 +64,10 @@ interface Api {
fun cancelSourceOfOrder(@Body bean: TextOrder): Observable<CommonResponseBean<Any>> fun cancelSourceOfOrder(@Body bean: TextOrder): Observable<CommonResponseBean<Any>>
@GET(BASE_URL+"devApi/system/user/getInfo")
fun getUserInfo(): Observable<CommonResponseBean<UserParent>>
/** /**
* 查询车辆信息列表 * 查询车辆信息列表
*/ */
@ -80,6 +84,15 @@ interface Api {
fun dispatchVehicles(@Body bean: DispatchBean): Observable<CommonResponseBean<Any>> fun dispatchVehicles(@Body bean: DispatchBean): Observable<CommonResponseBean<Any>>
/**
* 新增订单
* @param bean PostOrderBean
* @return Observable<CommonResponseBean<Any>>
*/
@POST(BASE_URL + "devApi//business/shipper/order")
fun addOrder(@Body bean: PostOrderBean): Observable<CommonResponseBean<PostOrderBean>>
/** /**
* 查询车队列表 * 查询车队列表
* @return Observable<CommonResponseBean<Any>> * @return Observable<CommonResponseBean<Any>>

View File

@ -258,7 +258,8 @@ class AddressEditOrAddActivity : BaseActivity<ActivityAddressEditBinding>(),
etName.setText(data.contactPerson) etName.setText(data.contactPerson)
etPhone.setText(data.contactNumber) etPhone.setText(data.contactNumber)
etCom.setText(data.companyName) etCom.setText(data.companyName)
etComNum.setText(data.companyCode) etComNum.setText(if (data.userType == "1")data.companyCode else data.idCard)
etComNum.hint = if (data.userType == "1") "社会统一代码" else "身份证号"
mySwitch.isOpened = data.userType == "1" mySwitch.isOpened = data.userType == "1"
} }
} }

View File

@ -1,34 +1,38 @@
package com.dhsd.glowner.ui.home.activtiy package com.dhsd.glowner.ui.home.activtiy
import android.annotation.SuppressLint import BaseObserver
import DataManager
import RxHttpCallBack
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter
import com.chad.library.adapter4.BaseQuickAdapter.OnItemChildClickListener
import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.base.AppConfig
import com.dahe.glex.bean.WayBillBean import com.dahe.glex.bean.PostOrderBean
import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.net.CommonResponseBean
import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider
import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.ConvertUtils import com.dahe.mylibrary.utils.ConvertUtils
import com.dahe.mylibrary.utils.PickerUtils import com.dahe.mylibrary.utils.PickerUtils
import com.dahe.mylibrary.utils.ToastUtils import com.dahe.mylibrary.utils.TimeConstants
import com.dahe.mylibrary.utils.TimeUtil
import com.dhsd.glowner.R import com.dhsd.glowner.R
import com.dhsd.glowner.adapter.SendGoodsAdapter import com.dhsd.glowner.adapter.SendGoodsAdapter
import com.dhsd.glowner.bean.AddressBean import com.dhsd.glowner.bean.AddressBean
import com.dhsd.glowner.bean.GoodBean import com.dhsd.glowner.bean.GoodBean
import com.dhsd.glowner.databinding.ActivitySendGoodsBinding import com.dhsd.glowner.databinding.ActivitySendGoodsBinding
import com.dhsd.glowner.ui.address.AddressListActivity import com.dhsd.glowner.ui.address.AddressListActivity
import com.dhsd.glowner.ui.mine.activity.ChoiceCarActivity
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import java.text.SimpleDateFormat
import java.util.Locale
/** /**
* @ClassName SendGoodsActivity * @ClassName SendGoodsActivity
@ -38,8 +42,11 @@ import com.google.gson.reflect.TypeToken
*/ */
class SendGoodsActivity : BaseActivity<ActivitySendGoodsBinding>() { class SendGoodsActivity : BaseActivity<ActivitySendGoodsBinding>() {
private var postOrderBean: PostOrderBean = PostOrderBean()
private lateinit var datas: MutableList<AddressBean> private lateinit var datas: MutableList<AddressBean>
private lateinit var adapter: SendGoodsAdapter private lateinit var adapter: SendGoodsAdapter
private var goodList: MutableList<GoodBean> = mutableListOf()
override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white) setStatusBarColor(R.color.white)
setTitleBar("普通装货", true) setTitleBar("普通装货", true)
@ -66,14 +73,48 @@ class SendGoodsActivity : BaseActivity<ActivitySendGoodsBinding>() {
binding.btnOk.setOnClickListener { binding.btnOk.setOnClickListener {
submit()
ActivityUtils.startActivity(mContext, SendSuccActivity::class.java)
} }
binding.tvDate.setOnClickListener { binding.tvDate.setOnClickListener {
PickerUtils.getInstance() PickerUtils.getInstance()
.showDateSim(this@SendGoodsActivity, "装货截止时间") { date -> .showDateSim(this@SendGoodsActivity, "装货截止时间") { date ->
binding.tvDate.text = date binding.tvDate.text = date
postOrderBean.run {
effectiveTimeStart =TimeUtil.getString(
date,
SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()),
SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()),
1439,
TimeConstants.MIN
)
loadingDeadline =
TimeUtil.getString(
date,
SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()),
SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()),
8639,
TimeConstants.MIN
) //装货截止时间
receiverDeadline =
TimeUtil.getString(
date,
SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()),
SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()),
23039,
TimeConstants.MIN
)//卸货截止时间
effectiveTimeEnd =
TimeUtil.getString(
date,
SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()),
SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()),
30239,
TimeConstants.MIN
)
}
} }
} }
@ -112,7 +153,22 @@ class SendGoodsActivity : BaseActivity<ActivitySendGoodsBinding>() {
val string = it.getString(AppConfig.BEAN, "") val string = it.getString(AppConfig.BEAN, "")
if (string.isNotEmpty()) { if (string.isNotEmpty()) {
val addressBean = Gson().fromJson<AddressBean>(string, AddressBean::class.java) val addressBean = Gson().fromJson<AddressBean>(string, AddressBean::class.java)
datas[requestCode] = addressBean
if (requestCode == 0) {
datas[requestCode] = addressBean.apply {
type = "1"
address = addressDetail
name = contactPerson
phone = contactNumber
}
} else if (requestCode == 1) {
datas[requestCode] = addressBean.apply {
type = "2"
address = addressDetail
name = contactPerson
phone = contactNumber
}
}
adapter.notifyItemChanged(requestCode) adapter.notifyItemChanged(requestCode)
} }
@ -123,8 +179,8 @@ class SendGoodsActivity : BaseActivity<ActivitySendGoodsBinding>() {
val datas = it.getStringExtra(AppConfig.DATAS) val datas = it.getStringExtra(AppConfig.DATAS)
val userListType = object : TypeToken<MutableList<GoodBean>>() {}.type val userListType = object : TypeToken<MutableList<GoodBean>>() {}.type
val goods = Gson().fromJson<MutableList<GoodBean>>(datas, userListType) goodList = Gson().fromJson<MutableList<GoodBean>>(datas, userListType)
val joinToString = goods.joinToString(separator = "\n") { innerIt -> val joinToString = goodList.joinToString(separator = "\n") { innerIt ->
"""${innerIt.goodName},${innerIt.jttGoodsCategoryName},${ """${innerIt.goodName},${innerIt.jttGoodsCategoryName},${
if (!TextUtils.isEmpty(innerIt.goodItemGrossWeight)) innerIt.goodItemGrossWeight + "" else innerIt.goodCube + "" if (!TextUtils.isEmpty(innerIt.goodItemGrossWeight)) innerIt.goodItemGrossWeight + "" else innerIt.goodCube + ""
}""" }"""
@ -135,6 +191,14 @@ class SendGoodsActivity : BaseActivity<ActivitySendGoodsBinding>() {
9999 -> { 9999 -> {
val cx = it.getStringExtra(AppConfig.CX) val cx = it.getStringExtra(AppConfig.CX)
val cc = it.getStringExtra(AppConfig.CC) val cc = it.getStringExtra(AppConfig.CC)
postOrderBean.run {
if (cx != null) {
vehicleType = cx
}
if (cc != null) {
vehicleLength = cc.replace("", "")
}
}
binding.tvCarType.text = """$cc $cx""" binding.tvCarType.text = """$cc $cx"""
} }
} }
@ -142,4 +206,47 @@ class SendGoodsActivity : BaseActivity<ActivitySendGoodsBinding>() {
} }
} }
} }
private fun submit() {
if (adapter.items.any { TextUtils.isEmpty(it.addressDetail) }) {
showToast("请完善装货地址信息")
return
}
binding?.run {
if (TextUtils.isEmpty(tvGoods.text.toString())) {
showToast("请选择货物信息")
return@submit
}
if (TextUtils.isEmpty(tvCarType.text.toString())) {
showToast("请选择用车信息")
return@submit
}
if (TextUtils.isEmpty(etMoney.text.toString()) || TextUtils.isEmpty(tvDate.text.toString())) {
showToast("请完善装货时间以及运费信息")
return@submit
}
}
postOrderBean.run {
inputFreight = binding.etMoney.text.toString()//运费
childList = datas
goodsList = goodList
}
DataManager.getInstance().addOrder(postOrderBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<PostOrderBean>() {
override fun onSuccess(t: CommonResponseBean<PostOrderBean>) {
super.onSuccess(t)
t.data.order?.let {
ActivityUtils.startActivity(mContext, SendSuccActivity::class.java,Bundle().apply {
putString(AppConfig.ID,it.orderId)
})
finish()
}
}
}))
}
} }

View File

@ -1,9 +1,21 @@
package com.dhsd.glowner.ui.home.activtiy package com.dhsd.glowner.ui.home.activtiy
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View
import com.dahe.gldriver.base.AppConfig
import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.utils.ActivityUtils
import com.dhsd.glowner.R import com.dhsd.glowner.R
import com.dhsd.glowner.bean.HomeEvent
import com.dhsd.glowner.databinding.ActivitySendSuccBinding import com.dhsd.glowner.databinding.ActivitySendSuccBinding
import com.dhsd.glowner.ui.HomeActivity
import com.dhsd.glowner.ui.mine.activity.ChoiceCarActivity
import com.dhsd.glowner.ui.mine.activity.ChoiceFleetActivity
import com.dhsd.glowner.utils.CommonPopUtils
import com.dhsd.glowner.utils.OnLimitClickHelper
import com.dhsd.glowner.utils.OnLimitClickListener
import org.greenrobot.eventbus.EventBus
/** /**
* @ClassName SendSuccActivity * @ClassName SendSuccActivity
@ -11,12 +23,61 @@ import com.dhsd.glowner.databinding.ActivitySendSuccBinding
* @Date 2024/2/5 09:38 * @Date 2024/2/5 09:38
* @Description TODO * @Description TODO
*/ */
class SendSuccActivity : BaseActivity<ActivitySendSuccBinding>() { class SendSuccActivity : BaseActivity<ActivitySendSuccBinding>(), OnLimitClickListener {
lateinit var orderId :String
override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white) setStatusBarColor(R.color.white)
setTitleBar("创建成功",true) setTitleBar("创建成功"){
//首页刷新
EventBus.getDefault().post(HomeEvent(true))
ActivityUtils.finishToActivity(HomeActivity::class.java,false)
}
intent.extras?.let {
orderId= it.getString(AppConfig.ID,"")
}
binding.run {
btnLeft.setOnClickListener {
EventBus.getDefault().post(HomeEvent(true))
ActivityUtils.finishToActivity(HomeActivity::class.java,false)
}
btnRight.setOnClickListener(OnLimitClickHelper(this@SendSuccActivity))
}
} }
override fun initDate() { override fun initDate() {
} }
override fun onClick(view: View?) {
super.onClick(view)
when(view?.id){
R.id.btnRight ->{
disCar()
}
}
}
override fun onBackPressed() {
super.onBackPressed()
EventBus.getDefault().post(HomeEvent(true))
}
/**
* 分配车辆
*
*/
private fun disCar(){
CommonPopUtils.getInstance().showCarList(
mContext
) { _, position ->
when (position) {
0->{
ActivityUtils.startActivity(mContext,ChoiceCarActivity::class.java,intent.extras)
}
1 -> {
ActivityUtils.startActivity(mContext,ChoiceFleetActivity::class.java,intent.extras)
}
}
}
}
} }

View File

@ -1,18 +1,28 @@
package com.dhsd.glowner.ui.mine package com.dhsd.glowner.ui.mine
import BaseObserver
import DataManager
import RxHttpCallBack
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import com.dahe.gldriver.bean.GridBean import com.dahe.gldriver.bean.GridBean
import com.dahe.glex.bean.UserBean
import com.dahe.glex.bean.UserParent
import com.dahe.mylibrary.base.BaseFragment import com.dahe.mylibrary.base.BaseFragment
import com.dahe.mylibrary.callback.RefreshCallBack
import com.dahe.mylibrary.net.CommonResponseBean
import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.ImageLoader
import com.dahe.mylibrary.utils.ToastUtils import com.dahe.mylibrary.utils.ToastUtils
import com.dhsd.glowner.R import com.dhsd.glowner.R
import com.dhsd.glowner.adapter.GridItemAdapter import com.dhsd.glowner.adapter.GridItemAdapter
import com.dhsd.glowner.databinding.FragmentMineBinding import com.dhsd.glowner.databinding.FragmentMineBinding
import com.dhsd.glowner.ui.mine.activity.SettingActivity import com.dhsd.glowner.ui.mine.activity.SettingActivity
import com.tencent.bugly.crashreport.CrashReport import com.tencent.bugly.crashreport.CrashReport
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
class MineFragment : BaseFragment<FragmentMineBinding>(), View.OnClickListener { class MineFragment : BaseFragment<FragmentMineBinding>(), View.OnClickListener, RefreshCallBack {
private val tools = mutableListOf( private val tools = mutableListOf(
GridBean("车队管理", R.drawable.car_team), GridBean("车队管理", R.drawable.car_team),
GridBean("车辆管理", R.drawable.car_manage), GridBean("车辆管理", R.drawable.car_manage),
@ -43,8 +53,11 @@ class MineFragment : BaseFragment<FragmentMineBinding>(), View.OnClickListener {
// val userInfo = SPUtils.instance.getUserInfo(mContext) // val userInfo = SPUtils.instance.getUserInfo(mContext)
// if (null==userInfo) // if (null==userInfo)
// return // return
getUserInfo()
binding.run { binding.run {
setRefresh(smartRefresh,this@MineFragment)
smartRefresh.finishLoadMore()
//初始化常用工具 //初始化常用工具
gvTools.run { gvTools.run {
adapter = GridItemAdapter(mContext, tools, R.layout.grid_mine_item) adapter = GridItemAdapter(mContext, tools, R.layout.grid_mine_item)
@ -152,5 +165,33 @@ class MineFragment : BaseFragment<FragmentMineBinding>(), View.OnClickListener {
} }
} }
override fun getRefreshDate(stat: Int, page: Int, count: Int) {
if (stat==2){
binding.smartRefresh.finishLoadMoreWithNoMoreData()
return
}
getUserInfo()
}
private fun getUserInfo() {
DataManager.getInstance().getUserInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext,object : RxHttpCallBack<UserParent>(binding.smartRefresh){
override fun onSuccess(t: CommonResponseBean<UserParent>) {
super.onSuccess(t)
initUserByData(t.data.user)
}
}))
}
private fun initUserByData(userBean: UserBean){
binding?.run {
tvName.text = userBean.userName
tvPhone.text = userBean.phonenumber
ImageLoader.getInstance().loadCircleImage(mContext,userBean.avatar,ivHead,R.drawable.head_defaut)
}
}
} }

View File

@ -17,12 +17,14 @@ import com.dahe.glex.bean.DispatchBean
import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.base.BaseActivity
import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.net.CommonResponseBean
import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider
import com.dahe.mylibrary.utils.ActivityUtils
import com.dahe.mylibrary.utils.ConvertUtils import com.dahe.mylibrary.utils.ConvertUtils
import com.dahe.mylibrary.utils.ToastUtils import com.dahe.mylibrary.utils.ToastUtils
import com.dhsd.glowner.R import com.dhsd.glowner.R
import com.dhsd.glowner.adapter.DriverCarsAdapter import com.dhsd.glowner.adapter.DriverCarsAdapter
import com.dhsd.glowner.bean.CarBean import com.dhsd.glowner.bean.CarBean
import com.dhsd.glowner.databinding.ActivityChoiceCarBinding import com.dhsd.glowner.databinding.ActivityChoiceCarBinding
import com.dhsd.glowner.ui.HomeActivity
import com.dhsd.glowner.utils.OnLimitClickHelper import com.dhsd.glowner.utils.OnLimitClickHelper
import com.dhsd.glowner.utils.OnLimitClickListener import com.dhsd.glowner.utils.OnLimitClickListener
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
@ -154,7 +156,8 @@ class ChoiceCarActivity : BaseActivity<ActivityChoiceCarBinding>(), OnLimitClick
showToast(t.msg) showToast(t.msg)
// 设置返回结果 // 设置返回结果
setResult(AppCompatActivity.RESULT_OK, Intent()) setResult(AppCompatActivity.RESULT_OK, Intent())
finish() ActivityUtils.finishToActivity(HomeActivity::class.java,false)
// finish()
} }
})) }))
} }

View File

@ -94,7 +94,7 @@ class ChoiceFleetActivity : BaseActivity<ActivityChoiceFleetCarBinding>(), OnLim
DataManager.getInstance().getCaptainList() DataManager.getInstance().getCaptainList()
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(BaseObserver(mContext, object : RxHttpCallBack<MutableList<CaptainBean>>() { .subscribe(BaseObserver(mContext, object : RxHttpCallBack<MutableList<CaptainBean>>(this) {
override fun onSuccess(t: CommonResponseBean<MutableList<CaptainBean>>) { override fun onSuccess(t: CommonResponseBean<MutableList<CaptainBean>>) {
super.onSuccess(t) super.onSuccess(t)
initList(t.data) initList(t.data)

View File

@ -48,17 +48,16 @@
<EditText <EditText
android:hint="请输入货物名称"
android:id="@+id/tvGood" android:id="@+id/tvGood"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:maxLines="1" android:maxLines="1"
android:inputType="text" android:inputType="text"
android:drawableRight="@drawable/right"
android:drawablePadding="@dimen/dp_6" android:drawablePadding="@dimen/dp_6"
android:gravity="right" android:gravity="right"
android:background="@null" android:background="@null"
android:text="螺纹钢"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/sp_16" /> android:textSize="@dimen/sp_16" />
</LinearLayout> </LinearLayout>

View File

@ -55,15 +55,15 @@
<TextView <TextView
android:hint="请选择货物信息"
android:gravity="right"
android:layout_weight="1"
android:id="@+id/tvGoods" android:id="@+id/tvGoods"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:text="螺纹钢钢铁40吨" android:layout_weight="1"
android:gravity="right"
android:hint="请选择货物信息"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/sp_16" /> android:textSize="@dimen/sp_16"
tools:text="螺纹钢钢铁40吨" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
@ -84,7 +84,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/start" android:drawableLeft="@drawable/start"
android:text="用车信息" android:text="用车信息"
android:textColor="@color/black" android:textColor="@color/black"
@ -95,6 +95,8 @@
android:id="@+id/tvCarType" android:id="@+id/tvCarType"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:hint="请选择用车信息" android:hint="请选择用车信息"
android:textColor="#FF4A02" android:textColor="#FF4A02"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_16"
@ -131,14 +133,14 @@
<TextView <TextView
android:gravity="right"
android:hint="请选择装货时间"
android:id="@+id/tvDate" android:id="@+id/tvDate"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:text="明天上午 06:00-12:00" android:gravity="right"
android:hint="请选择装货时间"
android:textColor="#FF4A02" android:textColor="#FF4A02"
android:textSize="@dimen/sp_16" /> android:textSize="@dimen/sp_16"
tools:text="明天上午 06:00-12:00" />
</LinearLayout> </LinearLayout>
<View <View
@ -165,15 +167,16 @@
<EditText <EditText
android:gravity="right" android:id="@+id/etMoney"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:text="5000元"
android:inputType="numberDecimal"
android:hint="请输入运费金额"
android:background="@null" android:background="@null"
android:gravity="right"
android:hint="请输入运费金额"
android:inputType="numberDecimal"
android:textColor="#FF4A02" android:textColor="#FF4A02"
android:textSize="@dimen/sp_16" /> android:textSize="@dimen/sp_16"
tools:text="5000元" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -35,7 +35,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_50"
android:gravity="center" android:gravity="center"
android:layout_marginTop="@dimen/dp_52" android:layout_marginTop="@dimen/dp_52"
android:orientation="horizontal"> android:orientation="horizontal">

View File

@ -1,285 +1,290 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" <com.scwang.smart.refresh.layout.SmartRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/smartRefresh"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:fillViewport="true">
<androidx.core.widget.NestedScrollView
<RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout <RelativeLayout
android:id="@+id/headContent"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_210" android:layout_height="match_parent">
android:background="@drawable/mine_bg"
android:orientation="horizontal"
android:paddingTop="@dimen/dp_60">
<ImageView
android:id="@+id/ivHead"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginLeft="20dp"
android:src="@drawable/head_defaut" />
<LinearLayout <LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:id="@+id/headContent"
android:layout_marginLeft="10dp" android:layout_width="match_parent"
android:layout_weight="1" android:layout_height="@dimen/dp_210"
android:gravity="center_vertical" android:background="@drawable/mine_bg"
android:orientation="vertical"> android:orientation="horizontal"
android:paddingTop="@dimen/dp_60">
<ImageView
android:id="@+id/ivHead"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginLeft="20dp"
android:src="@drawable/head_defaut" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="vertical">
<TextView <LinearLayout
android:id="@+id/tvName" android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxLines="1" android:gravity="center_vertical"
android:text="张学友" android:orientation="horizontal">
android:textColor="@color/black"
android:textSize="@dimen/sp_18" <TextView
android:textStyle="bold" /> android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="张学友"
android:textColor="@color/black"
android:textSize="@dimen/sp_18"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tvPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_3"
android:textSize="15dp"
tools:text="189****1230" />
<ImageView
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:background="@drawable/party" />
</LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout <ImageView
android:layout_width="match_parent" android:id="@+id/iv_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="@dimen/dp_18"
android:gravity="center_vertical" android:layout_marginRight="@dimen/dp_15"
android:orientation="horizontal"> android:background="@drawable/right" />
<TextView
android:id="@+id/tvPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_3"
android:textSize="15dp"
tools:text="189****1230" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:background="@drawable/party"/>
</LinearLayout>
</LinearLayout> </LinearLayout>
<ImageView <RelativeLayout
android:id="@+id/iv_setting" android:id="@+id/rlMoney"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_120"
android:layout_marginTop="@dimen/dp_18" android:layout_below="@+id/headContent"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_m_60"
android:layout_marginRight="@dimen/dp_15" android:layout_marginRight="@dimen/dp_15"
android:background="@drawable/right" /> android:background="@drawable/shape_white_12"
android:padding="@dimen/sp_16">
</LinearLayout> <TextView
android:id="@+id/tvMoneyTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的钱包"
android:textColor="@color/black"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />
<RelativeLayout <TextView
android:id="@+id/rlMoney" android:layout_width="wrap_content"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_height="@dimen/dp_120" android:layout_alignBaseline="@+id/tvMoneyTitle"
android:layout_below="@+id/headContent" android:layout_alignParentRight="true"
android:layout_marginLeft="@dimen/dp_15" android:drawableRight="@drawable/right_gray"
android:layout_marginTop="@dimen/dp_m_60" android:drawablePadding="@dimen/dp_5"
android:layout_marginRight="@dimen/dp_15" android:gravity="bottom"
android:background="@drawable/shape_white_12" android:text="进入钱包"
android:padding="@dimen/sp_16"> android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
<TextView
android:id="@+id/tvMoneyTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的钱包"
android:textColor="@color/black"
android:textSize="@dimen/sp_16"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/tvMoneyTitle"
android:layout_alignParentRight="true"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_5"
android:gravity="bottom"
android:text="进入钱包"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_alignParentBottom="true"
android:gravity="center" android:orientation="horizontal">
android:orientation="vertical">
<TextView <LinearLayout
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxLines="1" android:layout_weight="1"
android:singleLine="true" android:gravity="center"
android:text="26431.5" android:orientation="vertical">
android:textColor="@color/black"
android:textSize="@dimen/sp_20"
android:textStyle="bold"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:singleLine="true"
android:text="26431.5"
android:textColor="@color/black"
android:textSize="@dimen/sp_20"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="余额(元)"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10" android:layout_weight="1"
android:text="余额(元)" android:gravity="center"
android:orientation="vertical">
android:textColor="@color/color_9" <TextView
android:textSize="@dimen/sp_12"/> android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:textColor="@color/black"
android:textSize="@dimen/sp_20"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="银行卡"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2643.5"
android:textColor="@color/black"
android:textSize="@dimen/sp_20"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="累计收益(元)"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<TextView </RelativeLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:textColor="@color/black"
android:textSize="@dimen/sp_20"
android:textStyle="bold"/>
<TextView <RelativeLayout
android:layout_width="wrap_content" android:id="@+id/rlTools"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="银行卡"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2643.5"
android:textColor="@color/black"
android:textSize="@dimen/sp_20"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="累计收益(元)"
android:textColor="@color/color_9"
android:textSize="@dimen/sp_12"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/rlTools"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_120"
android:layout_below="@+id/rlMoney"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginRight="@dimen/dp_15"
android:background="@drawable/shape_white_12">
<TextView
android:id="@+id/tvToolsTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_16"
android:paddingTop="@dimen/dp_16"
android:paddingBottom="@dimen/dp_16"
android:text="常用工具"
android:textColor="@color/black"
android:textSize="@dimen/sp_16"
android:textStyle="bold"/>
<GridView
android:listSelector="@color/color_transparent"
android:id="@+id/gvTools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_120"
android:layout_below="@+id/tvToolsTitle" android:layout_below="@+id/rlMoney"
android:layout_alignParentBottom="true" android:layout_marginLeft="@dimen/dp_15"
android:numColumns="4"/> android:layout_marginTop="@dimen/dp_12"
android:layout_marginRight="@dimen/dp_15"
android:background="@drawable/shape_white_12">
<TextView
android:id="@+id/tvToolsTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_16"
android:paddingTop="@dimen/dp_16"
android:paddingBottom="@dimen/dp_16"
android:text="常用工具"
android:textColor="@color/black"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />
</RelativeLayout> <GridView
android:id="@+id/gvTools"
<RelativeLayout android:layout_width="match_parent"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_height="@dimen/dp_190" android:layout_below="@+id/tvToolsTitle"
android:layout_below="@+id/rlTools" android:layout_alignParentBottom="true"
android:layout_marginLeft="@dimen/dp_15" android:listSelector="@color/color_transparent"
android:layout_marginTop="@dimen/dp_12" android:numColumns="4" />
android:layout_marginRight="@dimen/dp_15"
android:background="@drawable/shape_white_12">
<TextView
android:id="@+id/tvplatTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_16"
android:paddingTop="@dimen/dp_16"
android:paddingBottom="@dimen/dp_16"
android:text="平台规则"
android:textColor="@color/black"
android:textSize="@dimen/sp_16"
android:textStyle="bold"/>
<GridView </RelativeLayout>
android:listSelector="@color/color_transparent"
android:id="@+id/gvPlat" <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_190"
android:layout_below="@+id/tvplatTitle" android:layout_below="@+id/rlTools"
android:layout_alignParentBottom="true" android:layout_marginLeft="@dimen/dp_15"
android:numColumns="4" android:layout_marginTop="@dimen/dp_12"
android:verticalSpacing="@dimen/dp_20"/> android:layout_marginRight="@dimen/dp_15"
android:background="@drawable/shape_white_12">
<TextView
android:id="@+id/tvplatTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_16"
android:paddingTop="@dimen/dp_16"
android:paddingBottom="@dimen/dp_16"
android:text="平台规则"
android:textColor="@color/black"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />
<GridView
android:id="@+id/gvPlat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tvplatTitle"
android:layout_alignParentBottom="true"
android:listSelector="@color/color_transparent"
android:numColumns="4"
android:verticalSpacing="@dimen/dp_20" />
</RelativeLayout>
</RelativeLayout> </RelativeLayout>
</androidx.core.widget.NestedScrollView>
</RelativeLayout>
</androidx.core.widget.NestedScrollView> </com.scwang.smart.refresh.layout.SmartRefreshLayout>

View File

@ -944,6 +944,20 @@ public final class TimeUtil {
return millis2String(string2Millis(time, format) + timeSpan2Millis(timeSpan, unit), format); return millis2String(string2Millis(time, format) + timeSpan2Millis(timeSpan, unit), format);
} }
/**
* 获取与给定时间等于时间差的时间字符串
* <p>格式为format</p>
* @param time
* @param format
* @param newformat
* @param timeSpan
* @param unit
* @return
*/
public static String getString(final String time, final DateFormat format, final DateFormat newformat, final long timeSpan, @TimeConstants.Unit final int unit) {
return millis2String(string2Millis(time, format) + timeSpan2Millis(timeSpan, unit), newformat);
}
/** /**
* 获取与给定时间等于时间差的时间字符串 * 获取与给定时间等于时间差的时间字符串
* <p>格式为yyyy-MM-dd HH:mm:ss</p> * <p>格式为yyyy-MM-dd HH:mm:ss</p>