成功订单页面

This commit is contained in:
2026-02-12 12:44:30 +08:00
parent f562abc12f
commit b034e9371f
11 changed files with 300 additions and 104 deletions
+1
View File
@@ -58,6 +58,7 @@
<activity android:name="com.sw.inbound.activity.FoodCollectionActivity" <activity android:name="com.sw.inbound.activity.FoodCollectionActivity"
android:windowSoftInputMode="adjustPan" /> android:windowSoftInputMode="adjustPan" />
<activity android:name="com.sw.inbound.activity.LocalImagePreviewActivity" /> <activity android:name="com.sw.inbound.activity.LocalImagePreviewActivity" />
<activity android:name="com.sw.inbound.activity.PurchaseOrderActivity" />
<!-- <activity--> <!-- <activity-->
<!-- android:name=".InitActivity"--> <!-- android:name=".InitActivity"-->
@@ -1,17 +1,91 @@
package com.sw.inbound.activity package com.sw.inbound.activity
import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.viewModels
import androidx.compose.runtime.collectAsState
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import com.sw.inbound.R
import com.sw.inbound.adapter.PurchaseOrderAdapter
import com.sw.inbound.databinding.ActivityPurchaseOrderBinding
import com.sw.inbound.dialog.Loading
import com.sw.inbound.model.response.SupplierInfo
import com.sw.inbound.utils.ext.clickWithDebounce
import com.sw.inbound.utils.ext.gone
import com.sw.inbound.utils.ext.startActivity
import com.sw.inbound.utils.ext.visible
import com.sw.inbound.viewmodel.PurchaseOrderViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
/** /**
* 采购单列表 * 采购单列表
*/ */
@AndroidEntryPoint @AndroidEntryPoint
class PurchaseOrderActivity : ComponentActivity(){ class PurchaseOrderActivity : ComponentActivity() {
private var list = mutableListOf<SupplierInfo>()
private val adapter by lazy {
PurchaseOrderAdapter(list).apply {
setOnItemClickListener { adapter, view, position ->
openReceiptPage(list[position])
}
addOnItemChildClickListener(R.id.btnReceive) { adapter, view, position ->
openReceiptPage(list[position])
}
}
}
private fun openReceiptPage(item: SupplierInfo) {
startActivity<ReceiptActivity> {
putExtra(GoodsListActivity.ID, item.id)
putExtra(GoodsListActivity.SUPPLIER_ID, item.supplierId)
putExtra(GoodsListActivity.IS_RECEIPT_PAGE, true)
//putExtra(GoodsListActivity.IS_NEW_RECEIPT, false)
}
}
private lateinit var binding: ActivityPurchaseOrderBinding
val viewModel: PurchaseOrderViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityPurchaseOrderBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.rvOrderList.let {
it.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
it.adapter = adapter
}
binding.btnBack.setOnClickListener { finish() }
binding.btnAddReceipt.clickWithDebounce {
startActivity<SelfProcurementActivity> {
putExtra(GoodsListActivity.IS_RECEIPT_PAGE, false)
}
}
Loading.show(this)
viewModel.getOrderListNew(pageNum = 1, pageSize = 100) { suppliers ->
runOnUiThread {
binding.root.postDelayed({
Loading.dismiss()
}, 600)
updateSupplierList(suppliers)
}
}
}
@SuppressLint("NotifyDataSetChanged")
private fun updateSupplierList(suppliers: List<SupplierInfo>?) {
if (suppliers.isNullOrEmpty()) {
binding.rvOrderList.gone()
binding.layoutEmptyView.visible()
return
}
list.addAll(suppliers)
adapter.notifyDataSetChanged()
binding.rvOrderList.visible()
binding.layoutEmptyView.gone()
} }
} }
@@ -1,29 +1,59 @@
//package com.sw.inbound.adapter package com.sw.inbound.adapter
//
//import android.content.Context import android.content.Context
//import android.view.LayoutInflater import android.view.LayoutInflater
//import android.view.ViewGroup import android.view.ViewGroup
//import com.chad.library.adapter4.BaseQuickAdapter import androidx.core.content.ContextCompat
//import com.chad.library.adapter4.viewholder.QuickViewHolder import androidx.core.view.updateLayoutParams
//import com.sw.inbound.databinding.ListItemCollectSearchBinding import com.chad.library.adapter4.BaseQuickAdapter
//import com.sw.inbound.databinding.ListItemPurchaseOrderBinding import com.chad.library.adapter4.viewholder.QuickViewHolder
//import com.sw.inbound.model.response.SearchGoodsInfo import com.sw.inbound.R
//import com.sw.inbound.model.response.SupplierInfo import com.sw.inbound.databinding.ListItemPurchaseOrderBinding
// import com.sw.inbound.ext.screenSize
////List<SupplierInfo?> import com.sw.inbound.ext.toFormattedString
//class PurchaseOrderAdapter:BaseQuickAdapter<SupplierInfo, > { import com.sw.inbound.model.response.SupplierInfo
// import com.sw.inbound.utils.ext.dp
// inner class VH(var binding: ListItemCollectSearchBinding) : QuickViewHolder(binding.root) import com.sw.inbound.utils.ext.ifNullOrBlank
//
// override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {
// val inflater = LayoutInflater.from(context) class PurchaseOrderAdapter(var list:List<SupplierInfo>):BaseQuickAdapter<SupplierInfo, PurchaseOrderAdapter.VH>(list) {
// val binding = ListItemPurchaseOrderBinding.inflate(inflater, parent, false)
// return VH(binding) inner class VH(var binding: ListItemPurchaseOrderBinding) : QuickViewHolder(binding.root)
// }
// override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH {
// override fun onBindViewHolder(holder: VH, position: Int, item: SupplierInfo) { val inflater = LayoutInflater.from(context)
// val binding = ListItemPurchaseOrderBinding.inflate(inflater, parent, false)
// return VH(binding)
// } }
//
//} override fun onBindViewHolder(holder: VH, position: Int, item: SupplierInfo?) {
val screenWidth = context.screenSize[0]
holder.itemView.updateLayoutParams {
width = (screenWidth - 2*60.dp) / 3
}
val binding = holder.binding
val receiveStatus = item?.receiveStatus?:""
val (statusColor, statusLabel) = when(receiveStatus) {
1 -> R.color.red to "待收货"
2 -> R.color.origin to "已收货"
3 -> R.color.black to "已关闭"
else -> R.color.black to "未知状态"
}
binding.tvReceiveState.run {
text = statusLabel
setTextColor(ContextCompat.getColor(context, statusColor))
}
binding.tvSupplierName.text = item?.supplierName.ifNullOrBlank("-")
binding.tvOrderNo.text = "单号 ${item?.purCode.ifNullOrBlank("-")}"
binding.tvGoodsCount.text = item?.goodCount?.toFormattedString()
binding.tvPurchaseDate.text = item?.purchaseDate.ifNullOrBlank("-")
binding.tvReceiveDate.text = item?.receiveDate.ifNullOrBlank("-")
binding.tvPurchaseMan.text = item?.receiveUser.ifNullOrBlank("-")
binding.btnReceive.text = if (item?.receiveStatus == 4) "部分收货" else "收货"
}
}
@@ -1,10 +1,16 @@
package com.sw.inbound.ext package com.sw.inbound.ext
import android.app.Activity import android.content.Context
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.view.WindowManager
fun Activity.getScreenWidth(): Int { val Context.screenSize: IntArray
get() {
val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
val displayMetrics = DisplayMetrics() val displayMetrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(displayMetrics) windowManager.defaultDisplay.getMetrics(displayMetrics)
return displayMetrics.widthPixels return intArrayOf(
} displayMetrics.widthPixels,
displayMetrics.heightPixels
)
}
@@ -26,6 +26,7 @@ import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import com.sw.inbound.R import com.sw.inbound.R
import com.sw.inbound.activity.GoodsListActivity import com.sw.inbound.activity.GoodsListActivity
import com.sw.inbound.activity.PurchaseOrderActivity
import com.sw.inbound.activity.SelfProcurementActivity import com.sw.inbound.activity.SelfProcurementActivity
import com.sw.inbound.ui.Screen import com.sw.inbound.ui.Screen
import com.sw.inbound.ui.weight.TopTitleBar import com.sw.inbound.ui.weight.TopTitleBar
@@ -79,12 +80,13 @@ fun HomeScreen(
interactionSource = remember { MutableInteractionSource() }, interactionSource = remember { MutableInteractionSource() },
indication = null indication = null
) { ) {
navController.navigate(Screen.PurchaseOrder.route) // navController.navigate(Screen.PurchaseOrder.route)
//navController.context.startActivity<ReceiptActivity> { //navController.context.startActivity<ReceiptActivity> {
// putExtra(GoodsListActivity.ID, "123123") // putExtra(GoodsListActivity.ID, "123123")
// putExtra(GoodsListActivity.SUPPLIER_ID, "123123123123") // putExtra(GoodsListActivity.SUPPLIER_ID, "123123123123")
// putExtra(GoodsListActivity.IS_RECEIPT_PAGE, true) // putExtra(GoodsListActivity.IS_RECEIPT_PAGE, true)
//} //}
navController.context.startActivity<PurchaseOrderActivity>()
}, },
painter = painterResource(R.mipmap.ic_order_purchase), painter = painterResource(R.mipmap.ic_order_purchase),
contentDescription = "采购单入库" contentDescription = "采购单入库"
@@ -135,7 +135,7 @@ fun PurchaseOrderScreen(
if (first.value) { if (first.value) {
return@Box return@Box
} }
if (products.isEmpty()) { if (products.isNullOrEmpty()) {
PurchaseEmptyItem() PurchaseEmptyItem()
} else { } else {
LazyRow( LazyRow(
@@ -144,7 +144,7 @@ fun PurchaseOrderScreen(
contentPadding = PaddingValues(16.dp), contentPadding = PaddingValues(16.dp),
horizontalArrangement = Arrangement.spacedBy(30.dp) horizontalArrangement = Arrangement.spacedBy(30.dp)
) { ) {
items(items = products, key = { it!!.id ?: "" }) { product -> items(items = products!!, key = { it!!.id ?: "" }) { product ->
PurchaseOrderItem(product!!) { PurchaseOrderItem(product!!) {
// navController.navigate( // navController.navigate(
// Screen.ReceiptProduct.createRoute( // Screen.ReceiptProduct.createRoute(
@@ -171,9 +171,7 @@ fun EditText.addOnActionSearchListener(searchCallback: () -> Unit) {
* @param action 点击执行逻辑 * @param action 点击执行逻辑
*/ */
fun View.clickWithDebounce(delay: Long = 300, action: () -> Unit) { fun View.clickWithDebounce(delay: Long = 300, action: () -> Unit) {
var job: Job? = null
setOnClickListener { setOnClickListener {
job?.cancel()
// 用View的tag存储是否可点击的状态(默认可点击) // 用View的tag存储是否可点击的状态(默认可点击)
if (tag as? Boolean ?: true) { if (tag as? Boolean ?: true) {
tag = false // 标记为不可点击 tag = false // 标记为不可点击
@@ -21,8 +21,8 @@ class PurchaseOrderViewModel @Inject constructor(
/** /**
* 采购订单-供应商列表 * 采购订单-供应商列表
*/ */
private val _supplierList = MutableStateFlow<List<SupplierInfo?>>(emptyList()) private val _supplierList = MutableStateFlow<List<SupplierInfo>?>(emptyList())
val supplierList: StateFlow<List<SupplierInfo?>> = _supplierList val supplierList: StateFlow<List<SupplierInfo>?> = _supplierList
private val _firstOperate = MutableStateFlow<Boolean>(true) private val _firstOperate = MutableStateFlow<Boolean>(true)
val firstOperate:StateFlow<Boolean> = _firstOperate val firstOperate:StateFlow<Boolean> = _firstOperate
@@ -33,6 +33,14 @@ class PurchaseOrderViewModel @Inject constructor(
/** /**
* 获取采购订单-供应商列表 * 获取采购订单-供应商列表
*/ */
fun getOrderListNew(pageNum: Int = 1, pageSize: Int = 5, block:(List<SupplierInfo>?)-> Unit) {
launch {
val response = repository.getReceiveList(pageNum, pageSize)
block(
if (parseResponse(response)) response.result else null
)
}
}
fun getOrderList(pageNum: Int = 1, pageSize: Int = 5) { fun getOrderList(pageNum: Int = 1, pageSize: Int = 5) {
if (pageNum != 1) { if (pageNum != 1) {
launch { launch {
@@ -45,7 +53,7 @@ class PurchaseOrderViewModel @Inject constructor(
response.result?.let { response.result?.let {
updateCanLoadMore(it.size >= pageSize) updateCanLoadMore(it.size >= pageSize)
Timber.d("加载更多 canLoadMore =${it.size >= pageSize}") Timber.d("加载更多 canLoadMore =${it.size >= pageSize}")
_supplierList.value = _supplierList.value + it _supplierList.value = _supplierList.value?.plus(it)
} }
} }
updateFirstState(false) updateFirstState(false)
@@ -54,9 +62,9 @@ class PurchaseOrderViewModel @Inject constructor(
launchWithLoading { launchWithLoading {
val response = repository.getReceiveList(pageNum, pageSize) val response = repository.getReceiveList(pageNum, pageSize)
if (parseResponse(response)) { if (parseResponse(response)) {
response.result?.let { _supplierList.value = response.result ?: emptyList()
_supplierList.value = it } else {
} _supplierList.value = null
} }
updateFirstState(false) updateFirstState(false)
} }
@@ -34,8 +34,8 @@
android:textColor="#141428" android:textColor="#141428"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="冯厨子" android:visibility="gone"
android:visibility="gone"/> tools:text="冯厨子" />
<ImageView <ImageView
android:id="@+id/ivLogout" android:id="@+id/ivLogout"
@@ -44,32 +44,50 @@
android:layout_marginEnd="40dp" android:layout_marginEnd="40dp"
android:paddingHorizontal="20dp" android:paddingHorizontal="20dp"
android:src="@mipmap/ic_logout" android:src="@mipmap/ic_logout"
tools:ignore="ContentDescription" android:visibility="gone"
android:visibility="gone"/> tools:ignore="ContentDescription" />
</LinearLayout> </LinearLayout>
<LinearLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/bg_white_alpha40_radius6" android:background="@drawable/bg_white_alpha40_radius6">
android:orientation="vertical"
android:padding="0dp">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvOrderList" android:id="@+id/rvOrderList"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:overScrollMode="never"
android:orientation="horizontal"
android:layout_marginHorizontal="10dp" android:layout_marginHorizontal="10dp"
tools:listitem="@layout/list_item_purchase_order" android:orientation="horizontal"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="8" /> tools:itemCount="8"
tools:listitem="@layout/list_item_purchase_order" />
</LinearLayout> <FrameLayout
android:id="@+id/layoutEmptyView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableTop="@mipmap/ic_empty_data"
android:drawablePadding="20dp"
android:gravity="center"
android:text="暂无数据"
android:textColor="@color/title"
android:textSize="40sp"
android:textStyle="bold" />
</FrameLayout>
</FrameLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -3,11 +3,11 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="20dp"
android:maxWidth="600dp" android:maxWidth="600dp"
android:maxHeight="750dp" android:maxHeight="750dp"
android:layout_marginVertical="20dp"
android:layout_marginHorizontal="10dp"
app:cardBackgroundColor="@color/white" app:cardBackgroundColor="@color/white"
app:cardCornerRadius="6dp" app:cardCornerRadius="6dp"
app:cardElevation="0dp"> app:cardElevation="0dp">
@@ -18,168 +18,227 @@
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical"> android:orientation="vertical">
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2" />
<TextView <TextView
android:id="@+id/tvEnterPriseName" android:id="@+id/tvSupplierName"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center" android:gravity="center"
android:maxLines="1" android:maxLines="1"
android:layout_marginHorizontal="20dp"
android:layout_marginTop="50dp"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="30sp" android:textSize="30sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="山东蔬农农业有限公司" /> tools:text="山东蔬农农业有限公司" />
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<TextView <TextView
android:id="@+id/tvOrderNo" android:id="@+id/tvOrderNo"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginVertical="26dp" android:layout_marginHorizontal="20dp"
android:textColor="#ff78788c" android:textColor="@color/gray"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:layout_marginHorizontal="20dp"
tools:text="单号 CG202505271711504865817002" /> tools:text="单号 CG202505271711504865817002" />
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<View <View
android:id="@+id/dividerLine" android:id="@+id/dividerLine"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:background="#FFDCDCF0" /> android:background="@color/divider" />
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3" />
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center" android:gravity="center"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="物品(项)"
android:layout_marginTop="2dp" android:layout_marginTop="2dp"
android:text="物品(项)"
android:textColor="#ff78788c" android:textColor="#ff78788c"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
android:id="@+id/tvGoodsNum" android:id="@+id/tvGoodsCount"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20sp" android:layout_marginTop="5dp"
android:includeFontPadding="false"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="90sp" android:textSize="80sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="5" /> tools:text="5" />
</LinearLayout> </LinearLayout>
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="120dp"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:background="@drawable/shape_dash_border" android:background="@drawable/shape_dash_border"
android:orientation="horizontal" android:baselineAligned="false"
android:paddingVertical="26dp"> android:gravity="center_vertical"
android:paddingVertical="0dp">
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/tvPurchaseDateTitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="采购日期"
android:textColor="#FF78788C" android:textColor="#FF78788C"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold" />
tools:text="采购日期" />
<TextView <TextView
android:id="@+id/tvSendGoodsDate" android:id="@+id/tvPurchaseDate"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:layout_marginTop="15dp"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="2025-05-29" /> tools:text="2025-05-29" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/tvReceiveDateTitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="到货日期"
android:textColor="#FF78788C" android:textColor="#FF78788C"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold" />
tools:text="到货日期" />
<TextView <TextView
android:id="@+id/tvReceiveGoodsDate" android:id="@+id/tvReceiveDate"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:layout_marginTop="15dp"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="2025-06-11" /> tools:text="2025-06-11" />
</LinearLayout>
</LinearLayout>
</LinearLayout> </LinearLayout>
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginVertical="30dp"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="收货状态:"
android:textColor="#ff78788c"
android:textSize="24sp"
android:textStyle="bold" />
<TextView <TextView
android:id="@+id/tvReceiveState" android:id="@+id/tvReceiveState"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="#ff78788c" android:textColor="@color/black"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="收货状态:部分收货" /> tools:text="部分收货" />
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end|center_vertical"
android:text="采购人:"
android:textColor="#ff78788c"
android:textSize="24sp"
android:textStyle="bold" />
<TextView <TextView
android:id="@+id/tvPurchaseMan" android:id="@+id/tvPurchaseMan"
android:layout_width="0dp" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end|center_vertical" android:gravity="end|center_vertical"
android:textColor="#ff78788c" android:textColor="@color/black"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="采购人:冯厨子" /> tools:text="冯厨子" />
</LinearLayout> </LinearLayout>
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<androidx.appcompat.widget.AppCompatButton <androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnReceive"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="80dp" android:layout_height="80dp"
android:background="@drawable/bg_green_ripple"
android:text="收货"
android:textSize="30sp"
android:layout_marginBottom="20dp"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:layout_marginBottom="20dp"
android:background="@drawable/bg_green_ripple"
android:gravity="center" android:gravity="center"
android:text="收货"
android:textColor="@color/white" android:textColor="@color/white"
android:textStyle="bold"/> android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout> </LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB