feat: 收运检查-交接单

This commit is contained in:
2025-12-06 15:42:56 +08:00
parent f17b68a94c
commit 21e0857790
7 changed files with 424 additions and 12 deletions

View File

@@ -0,0 +1,41 @@
package com.lukouguoji.module_base.bean
/**
* 国际出港货物交接单Bean
*/
data class GjcHandoverSheetBean(
// ========== API文档字段 ==========
var id: Long? = null, // 主键id
var maWbId: Long? = null, // 运单主键id
var no: String? = null, // 编号
var prefix: String? = null, // 前缀
var chargeWeight: Double? = null, // 计费重量
var saleAgentCode: String? = null, // 销售代理人
var expressName: String? = null, // 平台或快递企业名称
var cbEcFlag: String? = null, // 是否为跨境电商货物(0:否;1:是)
var opName: String? = null, // 经办人签名
var opCardId: String? = null, // 经办人身份证号
// ========== 防止隐含危险品检查单 ==========
var goodsName: String? = null, // 申报货物的品名为确指品名(0/1)
var danger: String? = null, // 确认货物内不含未申报的危险品(0/1)
var fish: String? = null, // 是否非观赏鱼类货物(0/1)
var packaging: String? = null, // 包装件没有油渍或液体渗漏(0/1)
var labels: String? = null, // 清除或涂去无关标记或标签(0/1)
// ========== 高风险货物检查单 ==========
var appearance: String? = null, // 航空货物外观显现异常(0/1)
var threat: String? = null, // 有具体情报显示威胁(0/1)
var highRisk: String? = null, // 结论:是否可以判定为高风险货物(0/1)
// ========== 跨境电商检查单 ==========
var submitStatement: String? = null, // 是否已提交声明(0/1/2: 是/否/不适用)
// ========== 货站收运人员 ==========
var staOpName: String? = null, // 货站收运人员签名
// ========== 安检信息(用户手动填写) ==========
var securityChannel: String? = null, // 安检机通道号
var securityStartTime: String? = null, // 开始过机时间
var securityEndTime: String? = null // 结束过机时间
)

View File

@@ -0,0 +1,9 @@
package com.lukouguoji.module_base.bean
/**
* 国际出港货物交接单查询接口返回Bean
*/
data class GjcHandoverSheetResponse(
var maWb: GjcMaWb? = null, // 主单信息
var handoverSheet: GjcHandoverSheetBean? = null // 交接单信息(可能为null)
)

View File

@@ -27,6 +27,8 @@ import com.lukouguoji.module_base.bean.GjcCheckInRecord
import com.lukouguoji.module_base.bean.GjcGoodsAddBean
import com.lukouguoji.module_base.bean.GjcGoodsBean
import com.lukouguoji.module_base.bean.GjcGoodsDetailsBean
import com.lukouguoji.module_base.bean.GjcHandoverSheetBean
import com.lukouguoji.module_base.bean.GjcHandoverSheetResponse
import com.lukouguoji.module_base.bean.GjcInspectionBean
import com.lukouguoji.module_base.bean.GjcMaWb
import com.lukouguoji.module_base.bean.GjcMove
@@ -418,6 +420,23 @@ interface Api {
@POST("IntExpCheckInCheck/pageQueryTotal")
suspend fun getGjcInspectionTotal(@Body data: RequestBody): BaseResultBean<ManifestTotalDto>
/**
* 国际出港收运审核-交接单-获取交接单内容
* 接口路径: /IntExpCheckInCheck/queryHandoverSheet
*/
@GET("IntExpCheckInCheck/queryHandoverSheet")
suspend fun queryHandoverSheet(@Query("maWbId") maWbId: Long): BaseResultBean<GjcHandoverSheetResponse>
/**
* 国际出港收运审核-交接单-保存
* 接口路径: /IntExpCheckInCheck/saveHandoverSheet
*/
@POST("IntExpCheckInCheck/saveHandoverSheet")
suspend fun saveHandoverSheet(@Body data: RequestBody): BaseResultBean<Long>
///////////////////////////////////////////////////////////////////////////
// 国际出 - 查询
///////////////////////////////////////////////////////////////////////////
/**
* 国际出港查询-分页查询
* 接口路径: /IntExpSearch/pageQuery

View File

@@ -8,6 +8,7 @@ import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.databinding.ActivityGjcHandoverBinding
import com.lukouguoji.gjc.viewModel.GjcHandoverViewModel
import com.lukouguoji.module_base.base.BaseBindingActivity
import com.lukouguoji.module_base.common.Constant
import com.lukouguoji.module_base.router.ARouterConstants
/**
@@ -25,12 +26,16 @@ class GjcHandoverActivity :
setBackArrow("货物交接单")
binding.viewModel = viewModel
// 初始化数据
viewModel.initOnCreated(intent)
}
companion object {
@JvmStatic
fun start(context: Context) {
fun start(context: Context, maWbId: Long) {
val starter = Intent(context, GjcHandoverActivity::class.java)
.putExtra(Constant.Key.MAWB_ID, maWbId)
context.startActivity(starter)
}
}

View File

@@ -38,7 +38,8 @@ class GjcInspectionDetailsActivity :
// 右侧文档按钮点击事件
findViewById<android.widget.ImageView>(R.id.ivDocument).setOnClickListener {
GjcHandoverActivity.start(this)
val maWbId = viewModel.dataBean.value?.maWbId ?: 0L
GjcHandoverActivity.start(this, maWbId)
}
binding.viewModel = viewModel

View File

@@ -1,19 +1,305 @@
package com.lukouguoji.gjc.viewModel
import android.app.AlertDialog
import android.content.Intent
import androidx.lifecycle.MutableLiveData
import com.lukouguoji.module_base.base.BaseViewModel
import com.lukouguoji.module_base.bean.GjcHandoverSheetBean
import com.lukouguoji.module_base.common.Constant
import com.lukouguoji.module_base.http.net.NetApply
import com.lukouguoji.module_base.ktx.*
/**
* 国际出港货物交接单 ViewModel
*/
class GjcHandoverViewModel : BaseViewModel() {
// 暂时为静态页面,无业务逻辑
// 运单主键ID
var maWbId: Long = 0L
// 数据Bean
val dataBean = MutableLiveData(GjcHandoverSheetBean())
// ========== 跨境电商单选框 ==========
val cbEcFlag = MutableLiveData("1") // 默认选中"是"
/**
* 跨境电商RadioButton点击
*/
fun onCbEcFlagClick(value: String) {
cbEcFlag.value = value
}
// ========== 防止隐含危险品检查单 ==========
val goodsNameYes = MutableLiveData(false) // 品名为确指品名-是
val goodsNameNo = MutableLiveData(false) // 品名为确指品名-否
val dangerYes = MutableLiveData(false) // 不含危险品-是
val dangerNo = MutableLiveData(false) // 不含危险品-否
val fishYes = MutableLiveData(false) // 非观赏鱼类-是
val fishNo = MutableLiveData(false) // 非观赏鱼类-否
val packagingYes = MutableLiveData(false) // 无油渍渗漏-是
val packagingNo = MutableLiveData(false) // 无油渍渗漏-否
val labelsYes = MutableLiveData(false) // 清除标记-是
val labelsNo = MutableLiveData(false) // 清除标记-否
// ========== 高风险货物检查单 ==========
val appearanceYes = MutableLiveData(false) // 外观异常-是
val appearanceNo = MutableLiveData(false) // 外观异常-否
val threatYes = MutableLiveData(false) // 情报威胁-是
val threatNo = MutableLiveData(false) // 情报威胁-否
val highRiskYes = MutableLiveData(false) // 高风险-是
val highRiskNo = MutableLiveData(false) // 高风险-否
// ========== 跨境电商检查单 ==========
val submitStatementYes = MutableLiveData(false) // 提交声明-是
val submitStatementNA = MutableLiveData(false) // 提交声明-不适用
val submitStatementNo = MutableLiveData(false) // 提交声明-否
// ========== 安检信息 ==========
val securityChannel = MutableLiveData("") // 安检机通道号
val securityStartTime = MutableLiveData("") // 开始过机时间
val securityEndTime = MutableLiveData("") // 结束过机时间
/**
* 初始化(从Intent获取参数并加载数据)
*/
fun initOnCreated(intent: Intent) {
maWbId = intent.getLongExtra(Constant.Key.MAWB_ID, 0L)
if (maWbId > 0) {
loadData()
}
}
/**
* 加载交接单数据
*/
private fun loadData() {
launchLoadingCollect({ NetApply.api.queryHandoverSheet(maWbId) }) {
onSuccess = { result ->
val response = result.data
val maWb = response?.maWb
val handoverSheet = response?.handoverSheet
// 创建或更新dataBean
val bean = (handoverSheet ?: GjcHandoverSheetBean()).apply {
// 如果handoverSheet为null从maWb填充基础信息
if (handoverSheet == null && maWb != null) {
this.maWbId = maWb.maWbId
this.prefix = maWb.prefix
this.no = maWb.no
this.chargeWeight = maWb.weight // 使用主单重量作为计费重量
this.saleAgentCode = maWb.agentCode
}
}
dataBean.value = bean
// 填充CheckBox状态
updateCheckBoxState(bean)
// 填充安检信息
securityChannel.value = bean.securityChannel ?: ""
securityStartTime.value = bean.securityStartTime ?: ""
securityEndTime.value = bean.securityEndTime ?: ""
}
}
}
/**
* 根据Bean数据更新CheckBox状态
*/
private fun updateCheckBoxState(bean: GjcHandoverSheetBean) {
// 跨境电商
cbEcFlag.value = bean.cbEcFlag ?: "1"
// 防止隐含危险品检查单
goodsNameYes.value = (bean.goodsName == "1")
goodsNameNo.value = (bean.goodsName == "0")
dangerYes.value = (bean.danger == "1")
dangerNo.value = (bean.danger == "0")
fishYes.value = (bean.fish == "1")
fishNo.value = (bean.fish == "0")
packagingYes.value = (bean.packaging == "1")
packagingNo.value = (bean.packaging == "0")
labelsYes.value = (bean.labels == "1")
labelsNo.value = (bean.labels == "0")
// 高风险货物检查单
appearanceYes.value = (bean.appearance == "1")
appearanceNo.value = (bean.appearance == "0")
threatYes.value = (bean.threat == "1")
threatNo.value = (bean.threat == "0")
highRiskYes.value = (bean.highRisk == "1")
highRiskNo.value = (bean.highRisk == "0")
// 跨境电商检查单
submitStatementYes.value = (bean.submitStatement == "1")
submitStatementNA.value = (bean.submitStatement == "2")
submitStatementNo.value = (bean.submitStatement == "0")
}
/**
* CheckBox点击事件处理(防止隐含危险品)
*/
fun onGoodsNameClick(isYes: Boolean) {
if (isYes) {
goodsNameYes.value = true
goodsNameNo.value = false
} else {
goodsNameYes.value = false
goodsNameNo.value = true
}
}
fun onDangerClick(isYes: Boolean) {
if (isYes) {
dangerYes.value = true
dangerNo.value = false
} else {
dangerYes.value = false
dangerNo.value = true
}
}
fun onFishClick(isYes: Boolean) {
if (isYes) {
fishYes.value = true
fishNo.value = false
} else {
fishYes.value = false
fishNo.value = true
}
}
fun onPackagingClick(isYes: Boolean) {
if (isYes) {
packagingYes.value = true
packagingNo.value = false
} else {
packagingYes.value = false
packagingNo.value = true
}
}
fun onLabelsClick(isYes: Boolean) {
if (isYes) {
labelsYes.value = true
labelsNo.value = false
} else {
labelsYes.value = false
labelsNo.value = true
}
}
/**
* CheckBox点击事件处理(高风险货物)
*/
fun onAppearanceClick(isYes: Boolean) {
if (isYes) {
appearanceYes.value = true
appearanceNo.value = false
} else {
appearanceYes.value = false
appearanceNo.value = true
}
}
fun onThreatClick(isYes: Boolean) {
if (isYes) {
threatYes.value = true
threatNo.value = false
} else {
threatYes.value = false
threatNo.value = true
}
}
fun onHighRiskClick(isYes: Boolean) {
if (isYes) {
highRiskYes.value = true
highRiskNo.value = false
} else {
highRiskYes.value = false
highRiskNo.value = true
}
}
/**
* CheckBox点击事件处理(跨境电商)
*/
fun onSubmitStatementClick(type: Int) {
when (type) {
1 -> { // 是
submitStatementYes.value = true
submitStatementNA.value = false
submitStatementNo.value = false
}
2 -> { // 不适用
submitStatementYes.value = false
submitStatementNA.value = true
submitStatementNo.value = false
}
0 -> { // 否
submitStatementYes.value = false
submitStatementNA.value = false
submitStatementNo.value = true
}
}
}
/**
* 取消按钮点击
*/
fun cancelClick() {
AlertDialog.Builder(getTopActivity())
.setTitle("提示")
.setMessage("确定要取消吗?未保存的数据将丢失")
.setPositiveButton("确定") { _, _ -> getTopActivity().finish() }
.setNegativeButton("取消", null)
.show()
}
/**
* 保存按钮点击
*/
fun saveClick() {
val bean = dataBean.value ?: GjcHandoverSheetBean()
// 更新Bean中的CheckBox字段
bean.maWbId = maWbId
bean.cbEcFlag = cbEcFlag.value
// 防止隐含危险品检查单
bean.goodsName = if (goodsNameYes.value == true) "1" else if (goodsNameNo.value == true) "0" else null
bean.danger = if (dangerYes.value == true) "1" else if (dangerNo.value == true) "0" else null
bean.fish = if (fishYes.value == true) "1" else if (fishNo.value == true) "0" else null
bean.packaging = if (packagingYes.value == true) "1" else if (packagingNo.value == true) "0" else null
bean.labels = if (labelsYes.value == true) "1" else if (labelsNo.value == true) "0" else null
// 高风险货物检查单
bean.appearance = if (appearanceYes.value == true) "1" else if (appearanceNo.value == true) "0" else null
bean.threat = if (threatYes.value == true) "1" else if (threatNo.value == true) "0" else null
bean.highRisk = if (highRiskYes.value == true) "1" else if (highRiskNo.value == true) "0" else null
// 跨境电商检查单
bean.submitStatement = when {
submitStatementYes.value == true -> "1"
submitStatementNA.value == true -> "2"
submitStatementNo.value == true -> "0"
else -> null
}
// 安检信息
bean.securityChannel = securityChannel.value
bean.securityStartTime = securityStartTime.value
bean.securityEndTime = securityEndTime.value
// 发送保存请求
launchLoadingCollect({ NetApply.api.saveHandoverSheet(bean.toRequestBody()) }) {
onSuccess = {
showToast("保存成功")
getTopActivity().finish()
}
}
}
}

View File

@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.view.View" />
<variable
name="viewModel"
@@ -123,6 +124,7 @@
android:layout_weight="2"
android:background="@drawable/bg_table_cell"
android:gravity="center"
android:text="@{viewModel.dataBean.saleAgentCode ?? ``}"
android:textColor="@color/color_33"
android:textSize="14sp" />
@@ -258,6 +260,7 @@
android:layout_weight="2"
android:background="@drawable/bg_table_cell"
android:gravity="center"
android:text="@{String.valueOf(viewModel.dataBean.chargeWeight != null ? viewModel.dataBean.chargeWeight : 0.0d)}"
android:textColor="@color/color_33"
android:textSize="14sp" />
@@ -365,6 +368,8 @@
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.cbEcFlag.equals(`0`)}"
android:onClick="@{() -> viewModel.onCbEcFlagClick(`0`)}"
android:text="否"
android:textSize="14sp" />
@@ -372,7 +377,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:checked="true"
android:checked="@{viewModel.cbEcFlag.equals(`1`)}"
android:onClick="@{() -> viewModel.onCbEcFlagClick(`1`)}"
android:text="是"
android:textSize="14sp" />
</RadioGroup>
@@ -394,6 +400,7 @@
android:layout_weight="3"
android:background="@drawable/bg_table_cell"
android:gravity="center"
android:text="@{viewModel.dataBean.expressName ?? ``}"
android:textColor="@color/color_33"
android:textSize="14sp" />
</LinearLayout>
@@ -433,6 +440,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.dataBean.saleAgentCode ?? ``}"
android:textColor="@color/color_33"
tools:text="李某某" />
</LinearLayout>
@@ -482,12 +490,13 @@
android:textColor="@color/color_33"
android:textSize="14sp" />
<TextView
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@drawable/bg_table_cell"
android:gravity="center"
android:text="@={viewModel.dataBean.opName}"
android:textColor="@color/color_33"
android:textSize="14sp" />
</LinearLayout>
@@ -507,12 +516,13 @@
android:textColor="@color/color_33"
android:textSize="14sp" />
<TextView
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
android:background="@drawable/bg_table_cell"
android:gravity="center"
android:text="@={viewModel.dataBean.opCardId}"
android:textColor="@color/color_33"
android:textSize="14sp" />
</LinearLayout>
@@ -645,6 +655,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.goodsNameYes}"
android:onClick="@{() -> viewModel.onGoodsNameClick(true)}"
android:text="" />
</LinearLayout>
@@ -658,6 +670,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.goodsNameNo}"
android:onClick="@{() -> viewModel.onGoodsNameClick(false)}"
android:text="" />
</LinearLayout>
</LinearLayout>
@@ -688,6 +702,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.dangerYes}"
android:onClick="@{() -> viewModel.onDangerClick(true)}"
android:text="" />
</LinearLayout>
@@ -701,6 +717,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.dangerNo}"
android:onClick="@{() -> viewModel.onDangerClick(false)}"
android:text="" />
</LinearLayout>
</LinearLayout>
@@ -718,7 +736,7 @@
android:background="@drawable/bg_table_cell"
android:gravity="start|center_vertical"
android:padding="5dp"
android:text="3.是否非观赏鱼类货物,或属于无“暖宝宝”且无“高锰酸钾等氧化剂类或其他类消毒剂的观赏鱼类货物"
android:text="3.是否非观赏鱼类货物,或属于无&quot;暖宝宝&quot;且无&quot;高锰酸钾等氧化剂类或其他类消毒剂&quot;的观赏鱼类货物"
android:textColor="@color/color_33"
android:textSize="13sp" />
@@ -732,6 +750,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.fishYes}"
android:onClick="@{() -> viewModel.onFishClick(true)}"
android:text="" />
</LinearLayout>
@@ -745,6 +765,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.fishNo}"
android:onClick="@{() -> viewModel.onFishClick(false)}"
android:text="" />
</LinearLayout>
</LinearLayout>
@@ -775,6 +797,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.packagingYes}"
android:onClick="@{() -> viewModel.onPackagingClick(true)}"
android:text="" />
</LinearLayout>
@@ -788,6 +812,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.packagingNo}"
android:onClick="@{() -> viewModel.onPackagingClick(false)}"
android:text="" />
</LinearLayout>
</LinearLayout>
@@ -818,6 +844,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.labelsYes}"
android:onClick="@{() -> viewModel.onLabelsClick(true)}"
android:text="" />
</LinearLayout>
@@ -831,6 +859,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.labelsNo}"
android:onClick="@{() -> viewModel.onLabelsClick(false)}"
android:text="" />
</LinearLayout>
</LinearLayout>
@@ -915,6 +945,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.appearanceYes}"
android:onClick="@{() -> viewModel.onAppearanceClick(true)}"
android:text="" />
</LinearLayout>
@@ -929,6 +961,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.appearanceNo}"
android:onClick="@{() -> viewModel.onAppearanceClick(false)}"
android:text="" />
</LinearLayout>
</LinearLayout>
@@ -962,6 +996,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.threatYes}"
android:onClick="@{() -> viewModel.onThreatClick(true)}"
android:text="" />
</LinearLayout>
@@ -976,6 +1012,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.threatNo}"
android:onClick="@{() -> viewModel.onThreatClick(false)}"
android:text="" />
</LinearLayout>
</LinearLayout>
@@ -1009,6 +1047,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.highRiskYes}"
android:onClick="@{() -> viewModel.onHighRiskClick(true)}"
android:text="" />
</LinearLayout>
@@ -1023,6 +1063,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.highRiskNo}"
android:onClick="@{() -> viewModel.onHighRiskClick(false)}"
android:text="" />
</LinearLayout>
</LinearLayout>
@@ -1115,6 +1157,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.submitStatementYes}"
android:onClick="@{() -> viewModel.onSubmitStatementClick(1)}"
android:text="" />
</LinearLayout>
@@ -1129,6 +1173,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.submitStatementNA}"
android:onClick="@{() -> viewModel.onSubmitStatementClick(2)}"
android:text="" />
</LinearLayout>
@@ -1143,6 +1189,8 @@
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="@{viewModel.submitStatementNo}"
android:onClick="@{() -> viewModel.onSubmitStatementClick(0)}"
android:text="" />
</LinearLayout>
</LinearLayout>
@@ -1219,12 +1267,13 @@
android:textColor="@color/color_33"
android:textSize="14sp" />
<TextView
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_table_cell"
android:gravity="center"
android:text="@={viewModel.securityChannel}"
android:textColor="@color/color_33"
android:textSize="14sp" />
</LinearLayout>
@@ -1236,12 +1285,13 @@
android:orientation="horizontal">
<TextView
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_table_cell"
android:gravity="center"
android:text="@={viewModel.securityStartTime}"
android:textColor="@color/color_33"
android:textSize="14sp" />
@@ -1255,12 +1305,13 @@
android:textColor="@color/color_33"
android:textSize="14sp" />
<TextView
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_table_cell"
android:gravity="center"
android:text="@={viewModel.securityEndTime}"
android:textColor="@color/color_33"
android:textSize="14sp" />
</LinearLayout>