Commit 9332f040 authored by yinjiacheng's avatar yinjiacheng

add 订单详情页UI

parent abd66ec9
...@@ -49,4 +49,6 @@ ...@@ -49,4 +49,6 @@
<color name="color_3693FF">#3693FF</color> <color name="color_3693FF">#3693FF</color>
<color name="color_1751F1">#1751F1</color> <color name="color_1751F1">#1751F1</color>
<color name="color_FF3A3A">#FF3A3A</color> <color name="color_FF3A3A">#FF3A3A</color>
<color name="color_E5E5E5">#E5E5E5</color>
<color name="color_D66948">#D66948</color>
</resources> </resources>
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<dimen name="toolbar_height">50dp</dimen> <dimen name="toolbar_height">50dp</dimen>
<!--全局字号--> <!--全局字号-->
<dimen name="sp11">11sp</dimen>
<dimen name="sp12">12sp</dimen> <dimen name="sp12">12sp</dimen>
<dimen name="sp13">13sp</dimen> <dimen name="sp13">13sp</dimen>
<dimen name="sp14">14sp</dimen> <dimen name="sp14">14sp</dimen>
...@@ -13,6 +14,7 @@ ...@@ -13,6 +14,7 @@
<dimen name="sp17">17sp</dimen> <dimen name="sp17">17sp</dimen>
<dimen name="sp18">18sp</dimen> <dimen name="sp18">18sp</dimen>
<dimen name="sp20">20sp</dimen> <dimen name="sp20">20sp</dimen>
<dimen name="sp22">22sp</dimen>
<dimen name="sp23">23sp</dimen> <dimen name="sp23">23sp</dimen>
<dimen name="sp24">24sp</dimen> <dimen name="sp24">24sp</dimen>
<dimen name="sp40">40sp</dimen> <dimen name="sp40">40sp</dimen>
......
...@@ -50,6 +50,7 @@ android { ...@@ -50,6 +50,7 @@ android {
} }
} }
buildFeatures { buildFeatures {
viewBinding true
dataBinding true dataBinding true
} }
kapt { kapt {
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<application> <application>
<activity android:name="com.yidian.shenghuoquan.border.ui.ConfirmOrderActivity"/> <activity android:name="com.yidian.shenghuoquan.border.ui.ConfirmOrderActivity"/>
<activity android:name="com.yidian.shenghuoquan.border.ui.OrderDetailActivity" />
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.yidian.shenghuoquan.border.app ...@@ -2,6 +2,7 @@ package com.yidian.shenghuoquan.border.app
import com.yidian.bcommon.constant.XRouterPathConstants import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.shenghuoquan.border.ui.ConfirmOrderActivity import com.yidian.shenghuoquan.border.ui.ConfirmOrderActivity
import com.yidian.shenghuoquan.border.ui.OrderDetailActivity
/** /**
...@@ -10,7 +11,8 @@ import com.yidian.shenghuoquan.border.ui.ConfirmOrderActivity ...@@ -10,7 +11,8 @@ import com.yidian.shenghuoquan.border.ui.ConfirmOrderActivity
object ClassMapUtil { object ClassMapUtil {
val xPageNodeMap = mapOf( val xPageNodeMap = mapOf(
XRouterPathConstants.Companion.CONFIRM_ORDER_ACTIVITY to ConfirmOrderActivity::class.java,// 优惠券选择类目 XRouterPathConstants.Companion.CONFIRM_ORDER_ACTIVITY to ConfirmOrderActivity::class.java, // 确认订单
XRouterPathConstants.Companion.ORDER_DETAIL_ACTIVITY to OrderDetailActivity::class.java, // 订单详情
) )
} }
package com.yidian.shenghuoquan.border.dto
import com.google.gson.annotations.SerializedName
/**
* author: yinjiacheng
* date: 2021/8/21 14:42
* description: 订单详情数据结构
*/
data class OrderDetailDto(
@SerializedName("appid")
val appid: String,
@SerializedName("audit_status")
val auditStatus: Int,
@SerializedName("audit_time")
val auditTime: String,
@SerializedName("business_from")
val businessFrom: Int,
@SerializedName("close_time")
val closeTime: String,
@SerializedName("comment")
val comment: String,
@SerializedName("coupon_list")
val couponList: List<Any>,
@SerializedName("create_time")
val createTime: String,
@SerializedName("discount_fee")
val discountFee: String,
@SerializedName("is_refund")
val isRefund: Int,
@SerializedName("life_account_icon")
val lifeAccountIcon: String,
@SerializedName("life_account_id")
val lifeAccountId: String,
@SerializedName("life_account_name")
val lifeAccountName: String,
@SerializedName("marketing_id")
val marketingId: Int,
@SerializedName("marketing_name")
val marketingName: String,
@SerializedName("merge_order_item_list")
val mergeOrderItemList: List<MergeOrderItem>,
@SerializedName("order_id")
val orderId: String,
@SerializedName("order_item_list")
val orderItemList: List<OrderItem>,
@SerializedName("order_shipping_info")
val orderShippingInfo: OrderShippingInfo,
@SerializedName("order_status")
val orderStatus: Int,
@SerializedName("order_status_text")
val orderStatusText: String,
@SerializedName("order_type")
val orderType: Int,
@SerializedName("pay_expiration_time")
val payExpirationTime: String,
@SerializedName("pay_time")
val payTime: String,
@SerializedName("payment")
val payment: Int,
@SerializedName("place_list")
val placeList: PlaceList,
@SerializedName("post_fee")
val postFee: Int,
@SerializedName("receive_time")
val receiveTime: String,
@SerializedName("refund_amount")
val refundAmount: Int,
@SerializedName("refund_apply_time")
val refundApplyTime: String,
@SerializedName("refund_finish_time")
val refundFinishTime: String,
@SerializedName("shop_id")
val shopId: String,
@SerializedName("total_price")
val totalPrice: Int,
@SerializedName("update_time")
val updateTime: String,
@SerializedName("use_coupon")
val useCoupon: Int,
@SerializedName("user_id")
val userId: Long,
@SerializedName("wechat")
val wechat: Wechat
)
data class MergeOrderItem(
@SerializedName("desc_pic_url")
val descPicUrl: String,
@SerializedName("goods_name")
val goodsName: String,
@SerializedName("goods_num")
val goodsNum: Int,
@SerializedName("price")
val price: Int
)
data class OrderItem(
@SerializedName("clear_price")
val clearPrice: Int,
@SerializedName("create_time")
val createTime: String,
@SerializedName("desc_pic_url")
val descPicUrl: String,
@SerializedName("expiration_time")
val expirationTime: String,
@SerializedName("goods_name")
val goodsName: String,
@SerializedName("goods_num")
val goodsNum: Int,
@SerializedName("goods_sale_type")
val goodsSaleType: Int,
@SerializedName("goods_share_code")
val goodsShareCode: String,
@SerializedName("goods_sku_id")
val goodsSkuId: String,
@SerializedName("goods_spu_id")
val goodsSpuId: String,
@SerializedName("goods_type")
val goodsType: Int,
@SerializedName("goods_version")
val goodsVersion: Int,
@SerializedName("introduce_pic_url")
val introducePicUrl: String,
@SerializedName("is_used")
val isUsed: Int,
@SerializedName("marketing_id")
val marketingId: Int,
@SerializedName("marketing_type")
val marketingType: Int,
@SerializedName("order_id")
val orderId: String,
@SerializedName("order_item_id")
val orderItemId: String,
@SerializedName("payment")
val payment: Int,
@SerializedName("price")
val price: Int,
@SerializedName("refund_amount")
val refundAmount: Int,
@SerializedName("refund_count")
val refundCount: Int,
@SerializedName("refund_finish_time")
val refundFinishTime: String,
@SerializedName("refund_status")
val refundStatus: Int,
@SerializedName("rule_refund")
val ruleRefund: Int,
@SerializedName("settle_code")
val settleCode: Int,
@SerializedName("share_coupon")
val shareCoupon: Int,
@SerializedName("shop_id")
val shopId: String,
@SerializedName("sub_shop_id")
val subShopId: String,
@SerializedName("update_time")
val updateTime: String,
@SerializedName("use_time")
val useTime: String,
@SerializedName("user_id")
val userId: Long
)
data class OrderShippingInfo(
@SerializedName("create_time")
val createTime: String,
@SerializedName("order_id")
val orderId: String,
@SerializedName("receiver_address")
val receiverAddress: String,
@SerializedName("receiver_mobile")
val receiverMobile: String,
@SerializedName("receiver_name")
val receiverName: String,
@SerializedName("take_place_id")
val takePlaceId: Int,
@SerializedName("update_time")
val updateTime: String,
@SerializedName("user_id")
val userId: Long
)
data class PlaceList(
@SerializedName("address")
val address: String,
@SerializedName("area")
val area: String,
@SerializedName("city")
val city: String,
@SerializedName("contact_name")
val contactName: String,
@SerializedName("create_time")
val createTime: String,
@SerializedName("is_delete")
val isDelete: Int,
@SerializedName("latitude")
val latitude: String,
@SerializedName("life_account_id")
val lifeAccountId: String,
@SerializedName("location")
val location: String,
@SerializedName("longitude")
val longitude: String,
@SerializedName("phone")
val phone: String,
@SerializedName("province")
val province: String,
@SerializedName("take_place_id")
val takePlaceId: Int,
@SerializedName("take_place_name")
val takePlaceName: String,
@SerializedName("update_time")
val updateTime: String
)
data class Wechat(
@SerializedName("activity_type")
val activityType: Int,
@SerializedName("city")
val city: String,
@SerializedName("country")
val country: String,
@SerializedName("create_time")
val createTime: String,
@SerializedName("gender")
val gender: String,
@SerializedName("invite_user_id")
val inviteUserId: Int,
@SerializedName("is_history")
val isHistory: Int,
@SerializedName("language")
val language: String,
@SerializedName("openid")
val openid: String,
@SerializedName("phone")
val phone: String,
@SerializedName("province")
val province: String,
@SerializedName("session_key")
val sessionKey: String,
@SerializedName("union_id")
val unionId: String,
@SerializedName("update_time")
val updateTime: String,
@SerializedName("user_avatar")
val userAvatar: String,
@SerializedName("user_id")
val userId: Long,
@SerializedName("user_nick")
val userNick: String,
@SerializedName("wechat_app_id")
val wechatAppId: String,
@SerializedName("wechat_id")
val wechatId: Int
)
package com.yidian.shenghuoquan.border.manager
/**
* author: yinjiacheng
* date: 2021/8/21 12:43
* description: 订单状态管理
*/
object OrderStatusManager {
/**
* 获取订单状态
*/
fun getOrderStatus(status: Int): OrderStatus {
return when (status) {
0 -> OrderStatus.ORDER_STATUS_CONFIRM
1 -> OrderStatus.ORDER_STATUS_PAID
2 -> OrderStatus.ORDER_STATUS_WAIT_REFUND
3 -> OrderStatus.ORDER_STATUS_ON_REFUND
4 -> OrderStatus.ORDER_STATUS_REFUNDED
5 -> OrderStatus.ORDER_STATUS_REFUSE_REFUND
else -> OrderStatus.ORDER_STATUS_UNKNOWN
}
}
}
/**
* 订单状态
* e.g. 未知、确认中、已支付、待退款、退款中、已退款、拒绝退款
*/
enum class OrderStatus(val code: Int, val text: String) {
ORDER_STATUS_UNKNOWN(-1, "未知"),
ORDER_STATUS_CONFIRM(0, "确认中"),
ORDER_STATUS_PAID(1, "已支付"),
ORDER_STATUS_WAIT_REFUND(2, "待退款"),
ORDER_STATUS_ON_REFUND(3, "退款中"),
ORDER_STATUS_REFUNDED(4, "已退款"),
ORDER_STATUS_REFUSE_REFUND(5, "已拒绝退款")
}
package com.yidian.shenghuoquan.border.ui
import androidx.activity.viewModels
import com.yidian.bcommon.mvvm.BaseMvvmActivity
import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderActivityOrderDetailBinding
import com.yidian.shenghuoquan.border.manager.OrderStatus
/**
* author: yinjiacheng
* date: 2021/8/21 09:29
* description: 订单详情页
*/
class OrderDetailActivity : BaseMvvmActivity<BorderActivityOrderDetailBinding, OrderDetailViewModel>() {
override val layoutId: Int = R.layout.border_activity_order_detail
override val vm: OrderDetailViewModel by viewModels()
override fun initView() {
binding.svOrderStatus.setOrderStatus(OrderStatus.ORDER_STATUS_REFUSE_REFUND)
binding.pvPickupPointInfo.setPickupPoint(OrderStatus.ORDER_STATUS_CONFIRM, null)
binding.ivConsigneeInfo.setConsigneeInfo(OrderStatus.ORDER_STATUS_CONFIRM, null)
}
}
package com.yidian.shenghuoquan.border.ui
import com.yidian.bcommon.mvvm.BaseViewModel
/**
* author: yinjiacheng
* date: 2021/8/21 09:31
* description: 订单详情页
*/
class OrderDetailViewModel : BaseViewModel() {
}
package com.yidian.shenghuoquan.border.ui.widget
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderViewOrderStatusInfoBinding
import com.yidian.shenghuoquan.border.manager.OrderStatus
/**
* author: yinjiacheng
* date: 2021/8/21 09:57
* description: 订单详情页-订单状态
*/
class OderStatusInfoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
ConstraintLayout(context, attrs, defStyle) {
private val viewBinding =
BorderViewOrderStatusInfoBinding.bind(View.inflate(getContext(), R.layout.border_view_order_status_info, this))
/**
* 设置订单状态
*/
// TODO: 2021/8/21 传入退款金额
fun setOrderStatus(status: OrderStatus) {
viewBinding.tvOrderStatus.text = status.text
when (status) {
OrderStatus.ORDER_STATUS_UNKNOWN -> {
viewBinding.ivOrderStatus.setImageResource(R.drawable.icon_order_status_paid)
}
OrderStatus.ORDER_STATUS_PAID -> {
viewBinding.ivOrderStatus.setImageResource(R.drawable.icon_order_status_paid)
}
OrderStatus.ORDER_STATUS_WAIT_REFUND -> {
viewBinding.ivOrderStatus.setImageResource(R.drawable.icon_order_status_wait_refund)
}
OrderStatus.ORDER_STATUS_ON_REFUND -> {
viewBinding.ivOrderStatus.setImageResource(R.drawable.icon_order_status_on_refund)
}
OrderStatus.ORDER_STATUS_REFUNDED -> {
viewBinding.ivOrderStatus.setImageResource(R.drawable.icon_order_status_refunded)
viewBinding.tvOrderSubStatus.isVisible = true
viewBinding.tvOrderSubStatus.text = "退款金额:"
}
OrderStatus.ORDER_STATUS_REFUSE_REFUND -> {
viewBinding.ivOrderStatus.setImageResource(R.drawable.icon_order_status_refuse_refund)
viewBinding.tvOrderSubStatus.isVisible = true
viewBinding.tvOrderSubStatus.text = "如有疑问请联系卖家"
}
}
}
}
package com.yidian.shenghuoquan.border.ui.widget
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderViewOrderCommodityInfoBinding
import com.yidian.shenghuoquan.border.dto.OrderDetailDto
import com.yidian.shenghuoquan.border.manager.OrderStatus
/**
* author: yinjiacheng
* date: 2021/8/21 22:19
* description: 订单商品信息
*/
class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
ConstraintLayout(context, attrs, defStyle) {
private val viewBinding =
BorderViewOrderCommodityInfoBinding.bind(View.inflate(getContext(), R.layout.border_view_order_commodity_info, this))
/**
* 设置商品信息
* @param status 订单状态
* @param info 商品信息
*/
fun setCommodityInfo(status: OrderStatus, info: OrderDetailDto) {
}
}
package com.yidian.shenghuoquan.border.ui.widget
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderViewOrderConsigneeInfoBinding
import com.yidian.shenghuoquan.border.dto.OrderShippingInfo
import com.yidian.shenghuoquan.border.manager.OrderStatus
/**
* author: yinjiacheng
* date: 2021/8/21 15:15
* description: 订单收货人信息
*/
class OrderConsigneeInfoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
ConstraintLayout(context, attrs, defStyle) {
private val viewBinding =
BorderViewOrderConsigneeInfoBinding.bind(View.inflate(getContext(), R.layout.border_view_order_consignee_info, this))
/**
* 设置收货人信息
* @param status 订单状态 确认订单时固定传ORDER_STATUS_CONFIRM
* @param info 收货人信息
*/
fun setConsigneeInfo(status: OrderStatus, info: OrderShippingInfo?) {
if (status != OrderStatus.ORDER_STATUS_UNKNOWN && status != OrderStatus.ORDER_STATUS_CONFIRM) {
// 订单状态除未知和确认中 收件人信息禁止修改(仅展示)
disableModify()
}
info?.let {
viewBinding.etConsigneeName.setText(it.receiverName)
viewBinding.etConsigneePhone.setText(it.receiverMobile)
}
}
/**
* 禁止修改
*/
fun disableModify() {
viewBinding.etConsigneeName.keyListener = null
viewBinding.etConsigneePhone.keyListener = null
}
}
package com.yidian.shenghuoquan.border.ui.widget
import android.content.Context
import android.util.AttributeSet
import androidx.constraintlayout.widget.ConstraintLayout
import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderViewOrderInfoBinding
import com.yidian.shenghuoquan.border.dto.OrderDetailDto
import com.yidian.shenghuoquan.border.manager.OrderStatus
/**
* author: yinjiacheng
* date: 2021/8/22 19:59
* description: 订单信息
*/
class OrderInfoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
ConstraintLayout(context, attrs, defStyle) {
private val viewBinding = BorderViewOrderInfoBinding.bind(inflate(getContext(), R.layout.border_view_order_info, this))
/**
* 设置订单信息
* @param status 订单状态
* @param info 订单信息
*/
fun setOrderInfo(status: OrderStatus, info: OrderDetailDto) {
}
}
package com.yidian.shenghuoquan.border.ui.widget
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderViewOrderPickupPointInfoBinding
import com.yidian.shenghuoquan.border.dto.PlaceList
import com.yidian.shenghuoquan.border.manager.OrderStatus
import java.util.*
/**
* author: yinjiacheng
* date: 2021/8/21 13:45
* description: 订单自提点信息
*/
class OrderPickupPointInfoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
ConstraintLayout(context, attrs, defStyle) {
private val viewBinding =
BorderViewOrderPickupPointInfoBinding.bind(View.inflate(getContext(), R.layout.border_view_order_pickup_point_info, this))
/**
* 设置自提点
* @param status 订单状态 确认订单时固定传ORDER_STATUS_CONFIRM
* @param info 自提点信息
*/
fun setPickupPoint(status: OrderStatus, info: PlaceList?) {
// 订单状态除未知和确认中 自提点选择入口隐藏
if (status != OrderStatus.ORDER_STATUS_UNKNOWN && status != OrderStatus.ORDER_STATUS_CONFIRM) {
viewBinding.ivPickupPointSelect.isVisible = false
}
// 填充自提点信息
info?.let {
viewBinding.tvPickupPoint.isVisible = true
viewBinding.tvPickupPointName.text = it.takePlaceName
viewBinding.tvPickupPointAddress.isVisible = true
viewBinding.tvPickupPointAddress.text = it.address
viewBinding.tvPickupPointContact.isVisible = true
viewBinding.tvPickupPointContact.text =
String.format(Locale.getDefault(), resources.getString(R.string.pickup_point_contract), info.contactName, info.phone)
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_1852F1" />
<size
android:width="@dimen/dp2"
android:height="@dimen/dp19" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_D66948" />
<corners android:radius="@dimen/dp9" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="@dimen/dp20" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="@dimen/dp0.5"
android:color="#E5E5E5" />
<corners android:radius="@dimen/dp14" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="vm"
type="com.yidian.shenghuoquan.border.ui.OrderDetailViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.yidian.bcommon.widget.CommonTopBarView
android:id="@+id/bv_top_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:CommonTopBarView_title_text="@string/order_detail"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/bv_top_bar">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp16"
android:paddingEnd="@dimen/dp16"
android:paddingBottom="@dimen/dp46">
<com.yidian.shenghuoquan.border.ui.widget.OderStatusInfoView
android:id="@+id/sv_order_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp20"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.yidian.shenghuoquan.border.ui.widget.OrderPickupPointInfoView
android:id="@+id/pv_pickup_point_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp20"
app:layout_constraintTop_toBottomOf="@id/sv_order_status" />
<com.yidian.shenghuoquan.border.ui.widget.OrderConsigneeInfoView
android:id="@+id/iv_consignee_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp8"
app:layout_constraintTop_toBottomOf="@id/pv_pickup_point_info" />
<com.yidian.shenghuoquan.border.ui.widget.OrderCommodityInfoView
android:id="@+id/iv_commodity_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp8"
app:layout_constraintTop_toBottomOf="@id/iv_consignee_info" />
<com.yidian.shenghuoquan.border.ui.widget.OrderInfoView
android:id="@+id/iv_order_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp8"
app:layout_constraintTop_toBottomOf="@id/iv_commodity_info" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_solid_ffffff_corner_20"
android:paddingStart="@dimen/dp16"
android:paddingTop="@dimen/dp20"
android:paddingEnd="@dimen/dp16"
android:paddingBottom="@dimen/dp20">
<TextView
android:id="@+id/tv_activity_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="拼餐优惠多多" />
<ImageView
android:layout_width="@dimen/dp14"
android:layout_height="@dimen/dp14"
android:layout_marginStart="@dimen/dp4"
android:src="@drawable/icon_next"
app:layout_constraintBottom_toBottomOf="@id/tv_activity_title"
app:layout_constraintStart_toEndOf="@id/tv_activity_title"
app:layout_constraintTop_toTopOf="@id/tv_activity_title" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_commodity_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tv_activity_title" />
<TextView
android:id="@+id/tv_apply_refund"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp8"
android:background="@drawable/shape_stroke_e5e5e5_corner_14"
android:paddingStart="@dimen/dp13"
android:paddingTop="@dimen/dp9"
android:paddingEnd="@dimen/dp13"
android:paddingBottom="@dimen/dp8"
android:text="@string/apply_refund"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp11"
app:layout_constraintEnd_toStartOf="@id/tv_contract_seller"
app:layout_constraintTop_toTopOf="@id/tv_contract_seller" />
<TextView
android:id="@+id/tv_contract_seller"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp8"
android:background="@drawable/shape_stroke_e5e5e5_corner_14"
android:paddingStart="@dimen/dp13"
android:paddingTop="@dimen/dp9"
android:paddingEnd="@dimen/dp13"
android:paddingBottom="@dimen/dp8"
android:text="@string/contract_seller"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp11"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/rv_commodity_list" />
<ImageView
android:id="@+id/iv_coupon"
android:layout_width="@dimen/dp20"
android:layout_height="@dimen/dp20"
android:layout_marginTop="@dimen/dp18"
android:src="@drawable/icon_order_coupon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_contract_seller" />
<TextView
android:id="@+id/tv_coupon_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp3"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/red_packet_or_coupon"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp14"
app:layout_constraintBottom_toBottomOf="@id/iv_coupon"
app:layout_constraintEnd_toStartOf="@id/tv_coupon_amount"
app:layout_constraintStart_toEndOf="@id/iv_coupon"
app:layout_constraintTop_toTopOf="@id/iv_coupon" />
<TextView
android:id="@+id/tv_coupon_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_solid_d66948_corner_9"
android:drawableEnd="@drawable/icon_next_white"
android:paddingStart="@dimen/dp8"
android:paddingTop="@dimen/dp2"
android:paddingEnd="@dimen/dp2"
android:paddingBottom="@dimen/dp2"
android:textColor="@color/white"
android:textSize="@dimen/sp11"
app:layout_constraintBottom_toBottomOf="@id/iv_coupon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_coupon"
tools:ignore="UseCompatTextViewDrawableXml"
tools:text="3张优惠券可用" />
<TextView
android:id="@+id/tv_discount_amount_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/discount_amount"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp14"
app:layout_constraintBaseline_toBaselineOf="@id/tv_total_amount"
app:layout_constraintEnd_toStartOf="@id/tv_discount_amount" />
<TextView
android:id="@+id/tv_discount_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp8"
android:textColor="@color/color_D66948"
android:textSize="@dimen/sp14"
app:layout_constraintBaseline_toBaselineOf="@id/tv_total_amount"
app:layout_constraintEnd_toStartOf="@id/tv_total_amount_text"
tools:text="¥10.00" />
<TextView
android:id="@+id/tv_total_amount_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/total_amount"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp14"
app:layout_constraintBaseline_toBaselineOf="@id/tv_total_amount"
app:layout_constraintEnd_toStartOf="@id/tv_total_amount" />
<TextView
android:id="@+id/tv_total_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp24"
android:textColor="@color/black"
android:textSize="@dimen/sp18"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_coupon"
tools:text="¥35.00" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_solid_ffffff_corner_20"
android:paddingStart="@dimen/dp16"
android:paddingTop="20dp"
android:paddingEnd="@dimen/dp16"
android:paddingBottom="20dp">
<TextView
android:id="@+id/tv_consignee_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/consignee_name"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/et_consignee_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp12"
android:autofillHints="123"
android:background="@null"
android:hint="@string/please_input_consignee_name"
android:inputType="text"
android:textColor="@color/color_333333"
android:textColorHint="@color/color_999999"
android:textCursorDrawable="@drawable/shape_bg_input_cursor"
android:textSize="@dimen/sp16"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_consignee_name"
app:layout_constraintTop_toTopOf="@id/tv_consignee_name" />
<TextView
android:id="@+id/tv_consignee_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp20"
android:text="@string/consignee_phone"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
app:layout_constraintStart_toStartOf="@id/tv_consignee_name"
app:layout_constraintTop_toBottomOf="@id/tv_consignee_name" />
<EditText
android:id="@+id/et_consignee_phone"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@null"
android:hint="@string/please_input_consignee_phone"
android:inputType="phone"
android:maxLength="11"
android:textColor="@color/color_333333"
android:textColorHint="@color/color_999999"
android:textCursorDrawable="@drawable/shape_bg_input_cursor"
android:textSize="@dimen/sp16"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/et_consignee_name"
app:layout_constraintTop_toTopOf="@id/tv_consignee_phone" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_solid_ffffff_corner_20"
android:paddingStart="@dimen/dp16"
android:paddingTop="@dimen/dp20"
android:paddingEnd="@dimen/dp16"
android:paddingBottom="@dimen/dp20">
<TextView
android:id="@+id/tv_order_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/order_info"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_order_no_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp28"
android:text="@string/order_no"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_order_info" />
<TextView
android:id="@+id/tv_order_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp8"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp14"
app:layout_constraintEnd_toStartOf="@id/tv_copy"
app:layout_constraintTop_toTopOf="@id/tv_order_no_text"
tools:text="98567572479254325580" />
<TextView
android:id="@+id/tv_copy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_stroke_e5e5e5_corner_14"
android:paddingStart="@dimen/dp12"
android:paddingTop="@dimen/dp5"
android:paddingEnd="@dimen/dp12"
android:paddingBottom="@dimen/dp5"
android:text="@string/copy"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp12"
app:layout_constraintBottom_toBottomOf="@id/tv_order_no_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_order_no_text" />
<TextView
android:id="@+id/tv_order_payment_time_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp20"
android:text="@string/payment_time"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_order_no_text" />
<TextView
android:id="@+id/tv_order_payment_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_order_payment_time_text"
tools:text="2021-5-10 10:23" />
<TextView
android:id="@+id/tv_order_refund_apply_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp20"
android:text="@string/refund_apply"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_order_payment_time_text" />
<TextView
android:id="@+id/tv_order_refund_apply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_order_refund_apply_text"
tools:text="2021-5-10 10:23" />
<TextView
android:id="@+id/tv_order_refund_time_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp20"
android:text="@string/refund_time"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_order_refund_apply_text" />
<TextView
android:id="@+id/tv_order_refund_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_order_refund_time_text"
tools:text="2021-5-10 10:23" />
<TextView
android:id="@+id/tv_order_remark_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp20"
android:text="@string/order_remark"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_order_refund_time_text" />
<TextView
android:id="@+id/tv_order_remark"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp14"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_order_remark_text"
app:layout_constraintTop_toTopOf="@id/tv_order_remark_text"
tools:text="不喜欢吃辣,希望少放点辣椒不喜欢吃辣,希望少放点辣椒不喜欢吃辣" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_solid_ffffff_corner_20"
android:paddingStart="@dimen/dp16"
android:paddingTop="@dimen/dp20"
android:paddingEnd="@dimen/dp16"
android:paddingBottom="@dimen/dp20">
<TextView
android:id="@+id/tv_pickup_point"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pickup_point"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_pickup_point_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp12"
android:text="@string/please_select_pickup_point"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@id/tv_pickup_point"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_pickup_point_select"
android:layout_width="@dimen/dp14"
android:layout_height="@dimen/dp14"
android:src="@drawable/icon_next"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_pickup_point_address"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp8"
android:ellipsize="end"
android:maxLines="2"
android:text="@string/pickup_point"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp14"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/tv_pickup_point_name"
app:layout_constraintTop_toBottomOf="@id/tv_pickup_point_name"
tools:text="经济技术开发区燕郊顺路123号经济技术开发区燕郊顺路123号经济技术开发区燕郊顺路123号经济技术开发区燕郊顺路123号" />
<TextView
android:id="@+id/tv_pickup_point_contact"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp4"
android:text="@string/pickup_point"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp14"
android:visibility="gone"
app:layout_constraintStart_toStartOf="@id/tv_pickup_point_name"
app:layout_constraintTop_toBottomOf="@id/tv_pickup_point_address"
tools:text="提货点联系人:面团儿" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_order_status"
android:layout_width="@dimen/dp24"
android:layout_height="@dimen/dp24"
app:layout_constraintBottom_toBottomOf="@id/tv_order_sub_status"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_order_status"
tools:src="@drawable/icon_order_status_paid" />
<TextView
android:id="@+id/tv_order_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp8"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp22"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@id/iv_order_status"
app:layout_constraintTop_toTopOf="parent"
tools:text="已支付" />
<TextView
android:id="@+id/tv_order_sub_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp8"
android:layout_marginTop="@dimen/dp8"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp14"
android:textStyle="bold"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/iv_order_status"
app:layout_constraintTop_toBottomOf="@id/tv_order_status"
tools:text="待商家确认" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="order_detail">订单详情</string>
<string name="pickup_point">自提点</string>
<string name="pickup_point_contract">提货点联系人: %s %s</string>
<string name="please_select_pickup_point">请选择自提点</string>
<string name="consignee_name">收货姓名</string>
<string name="consignee_phone">手机号码</string>
<string name="please_input_consignee_name">请输入收货人姓名</string>
<string name="please_input_consignee_phone">请输入收货人电话号码</string>
<string name="contract_seller">联系卖家</string>
<string name="apply_refund">申请退款</string>
<string name="red_packet_or_coupon">红包/优惠券</string>
<string name="discount_amount">已优惠:</string>
<string name="total_amount">合计:</string>
<string name="order_info">订单信息</string>
<string name="order_no">订单编号</string>
<string name="copy">复制</string>
<string name="payment_time">支付时间</string>
<string name="refund_apply">退款申请</string>
<string name="refund_time">退款时间</string>
<string name="order_remark">订单备注</string>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment