From cece79bf75a9b672b33b772acffca209eecfc8f2 Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期四, 26 六月 2025 08:27:25 +0800
Subject: [PATCH] refactor(generallibrary):优化补卡界面布局和样式- 调整了卡片信息展示区域的样式,包括背景色、文字颜色等 - 优化了输入区域的布局结构,减小了控件间距和尺寸- 更新了确认补卡按钮的样式 - 统一了文字大小和颜色,提高了可读性

---
 generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt |  136 +++++++++++++++++++++++++++------------------
 1 files changed, 82 insertions(+), 54 deletions(-)

diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt
index 07015c8..5ca214d 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardReadActivity.kt
@@ -4,16 +4,16 @@
 import android.content.Intent
 import android.os.Bundle
 import com.dayu.baselibrary.net.subscribers.SubscriberListener
-import com.dayu.baselibrary.utils.ToastUtil
+import com.dayu.baselibrary.utils.MornyUtil
 import com.dayu.baselibrary.view.TipDialog
 import com.dayu.baselibrary.view.TitleBar
+import com.dayu.general.bean.card.UserCard
 import com.dayu.general.bean.net.CardInfoResult
 import com.dayu.general.databinding.ActivityCardReadBinding
 import com.dayu.general.net.ApiManager
 import com.dayu.general.net.BaseResponse
-import com.dayu.general.tool.NfcReadHelper
-import com.dayu.general.bean.card.UserCard
 import com.dayu.general.tool.CardCommon
+import com.dayu.general.tool.NfcReadHelper
 
 /**
  * @author: zuo
@@ -122,6 +122,11 @@
                     handleUserCard(cardNumber, cardType, nfcAdapter)
                 }
 
+                "00" -> {
+                    // 鍦板尯鍗★細鏄剧ず鍗$墖绫诲瀷淇℃伅
+                    handleUserCard(cardNumber, cardType, nfcAdapter)
+                }
+
                 else -> {
                     // 绠$悊绫诲崱锛氭樉绀哄崱鐗囩被鍨嬩俊鎭�
                     handleManagementCard(cardNumber, cardType)
@@ -138,33 +143,39 @@
      * 澶勭悊鐢ㄦ埛鍗�
      */
     private fun handleUserCard(cardNumber: String, cardType: String, nfcAdapter: NfcReadHelper) {
-        // 瑙f瀽鐢ㄦ埛鍗℃暟鎹�
-        val userCard = nfcAdapter.getUserCardData()
-        if (userCard == null) {
-            showConfirmDialog("瑙f瀽鍗$墖鏁版嵁澶辫触锛岃閲嶆柊鍒峰崱") {
+        if (cardType != "00") {
+            // 瑙f瀽鐢ㄦ埛鍗℃暟鎹�
+            val userCard = nfcAdapter.getUserCardData()
+            if (userCard == null) {
+                showConfirmDialog("瑙f瀽鍗$墖鏁版嵁澶辫触锛岃閲嶆柊鍒峰崱") {
+                }
+                return
             }
-            return
+
+            // 杈撳嚭鐢ㄦ埛鍗″唴鎵�鏈変俊鎭埌鏃ュ織
+            android.util.Log.d("CardReadActivity", "=== 鐢ㄦ埛鍗′俊鎭� ===")
+            android.util.Log.d("CardReadActivity", "鍗″彿: $cardNumber")
+            android.util.Log.d("CardReadActivity", "鍗$墖绫诲瀷: $cardType")
+            android.util.Log.d("CardReadActivity", "鍥藉琛屾斂鍖哄煙鍙�: ${userCard.areaNumber}")
+            android.util.Log.d("CardReadActivity", "鐢ㄦ埛缂栧彿: ${userCard.userCode}")
+            android.util.Log.d("CardReadActivity", "鐢ㄦ埛鍗$紪鍙�: ${userCard.userCodeNumber}")
+            android.util.Log.d("CardReadActivity", "瀹屾暣鐢ㄦ埛缂栧彿: ${userCard.getMyUserCode()}")
+            android.util.Log.d("CardReadActivity", "鎵嬫満鍙�: ${userCard.phoneNumber}")
+            android.util.Log.d("CardReadActivity", "椤圭洰缂栫爜: ${userCard.projectCode}")
+            android.util.Log.d("CardReadActivity", "鍗″唴浣欓: ${userCard.balance}")
+            android.util.Log.d("CardReadActivity", "鍓╀綑姘撮噺: ${userCard.surplusWater}")
+            android.util.Log.d("CardReadActivity", "姘撮噺鍗曚环: ${userCard.waterPrice}")
+            android.util.Log.d("CardReadActivity", "鐢甸噺鍗曚环: ${userCard.electricPrice}")
+            android.util.Log.d("CardReadActivity", "鍏呭�兼椂闂�: ${userCard.rechargeDate}")
+            android.util.Log.d("CardReadActivity", "==================")
+            getCardInfo(cardNumber, cardType, userCard)
+        } else {
+            getCardInfo(cardNumber, cardType, null)
         }
-        binding.tvCardNumber.text = cardNumber
-        // 杈撳嚭鐢ㄦ埛鍗″唴鎵�鏈変俊鎭埌鏃ュ織
-        android.util.Log.d("CardReadActivity", "=== 鐢ㄦ埛鍗′俊鎭� ===")
-        android.util.Log.d("CardReadActivity", "鍗″彿: $cardNumber")
-        android.util.Log.d("CardReadActivity", "鍗$墖绫诲瀷: $cardType")
-        android.util.Log.d("CardReadActivity", "鍥藉琛屾斂鍖哄煙鍙�: ${userCard.areaNumber}")
-        android.util.Log.d("CardReadActivity", "鐢ㄦ埛缂栧彿: ${userCard.userCode}")
-        android.util.Log.d("CardReadActivity", "鐢ㄦ埛鍗$紪鍙�: ${userCard.userCodeNumber}")
-        android.util.Log.d("CardReadActivity", "瀹屾暣鐢ㄦ埛缂栧彿: ${userCard.getMyUserCode()}")
-        android.util.Log.d("CardReadActivity", "鎵嬫満鍙�: ${userCard.phoneNumber}")
-        android.util.Log.d("CardReadActivity", "椤圭洰缂栫爜: ${userCard.projectCode}")
-        android.util.Log.d("CardReadActivity", "鍗″唴浣欓: ${userCard.balance}")
-        android.util.Log.d("CardReadActivity", "鍓╀綑姘撮噺: ${userCard.surplusWater}")
-        android.util.Log.d("CardReadActivity", "姘撮噺鍗曚环: ${userCard.waterPrice}")
-        android.util.Log.d("CardReadActivity", "鐢甸噺鍗曚环: ${userCard.electricPrice}")
-        android.util.Log.d("CardReadActivity", "鍏呭�兼椂闂�: ${userCard.rechargeDate}")
-        android.util.Log.d("CardReadActivity", "==================")
+
 
         // 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅
-        getCardInfo(cardNumber, cardType, userCard)
+
     }
 
     /**
@@ -222,7 +233,7 @@
     /**
      * 鑾峰彇鍗$墖璇︾粏淇℃伅锛堢敤鎴峰崱涓撶敤锛�
      */
-    private fun getCardInfo(cardNumber: String, cardType: String, userCard: UserCard) {
+    private fun getCardInfo(cardNumber: String, cardType: String, userCard: UserCard?) {
         val map = mutableMapOf<String, Any>()
         map["cardAddr"] = cardNumber
         ApiManager.getInstance().requestGetLoading(
@@ -257,7 +268,7 @@
         cardInfo: CardInfoResult?,
         cardNumber: String,
         cardType: String,
-        userCard: UserCard
+        userCard: UserCard?
     ) {
         // 闅愯棌璇诲崱鎻愮ず锛屾樉绀轰俊鎭尯鍩�
         binding.cardReadLL.visibility = android.view.View.GONE
@@ -266,54 +277,71 @@
         val cardTypeName = getCardTypeName(cardType)
 
         // 鏄剧ず鍗″唴鏁版嵁
-
         binding.tvCardType.text = cardTypeName
         // 鏄剧ず鐢ㄦ埛鍗$壒鏈夊瓧娈�
         binding.llCardBalance.visibility = android.view.View.VISIBLE
         binding.llUserNumber.visibility = android.view.View.VISIBLE
         binding.llCardStatus.visibility = android.view.View.VISIBLE
-
-        userCard.let { card ->
-            // 浣欓杞崲涓哄厓锛堝師濮嬫暟鎹彲鑳芥槸鍒嗭級
-            val balanceInYuan = if (card.balance > 1000) {
-                String.format("%.2f", card.balance / 100.0)
-            } else {
-                card.balance.toString()
-            }
-            binding.tvCardBalance.text = "${balanceInYuan}鍏�"
-
-            // 浣跨敤瀹屾暣鐨勭敤鎴风紪鍙�
-            binding.tvUserNumber.text = cardInfo?.cardNum
-
-            // 鍗$墖鐘舵�侊紙鍋囪姝e父鐘舵�侊紝鍥犱负UserCard涓病鏈夌姸鎬佸瓧娈碉級
-            binding.tvCardStatus.text = "姝e父"
-            binding.tvCardStatus.setTextColor(android.graphics.Color.parseColor("#4CAF50"))
+        binding.tvCardNumber.text = cardNumber
+        // 澶勭悊鍗″唴鏁版嵁 - 浼樺厛浣跨敤userCard锛屽鏋滀负绌哄垯浠巆ardInfo鑾峰彇
+        if (userCard != null) {
+            // 浠庡崱鍐呮暟鎹幏鍙栦俊鎭�
+            binding.tvCardBalance.text = MornyUtil.changeF2Y(userCard.balance.toInt()) + "鍏�"
 
             // 鍏呭�兼椂闂翠綔涓烘渶鍚庝娇鐢ㄦ椂闂�
-            if (card.rechargeDate != null) {
+            val rechargeDate = userCard.rechargeDate
+            if (rechargeDate != null) {
                 binding.llLastUseTime.visibility = android.view.View.VISIBLE
                 val dateFormat =
                     java.text.SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault())
-                binding.tvLastUseTime.text = dateFormat.format(card.rechargeDate!!.time)
+                binding.tvLastUseTime.text = dateFormat.format(rechargeDate.time)
             } else {
+                binding.llLastUseTime.visibility = android.view.View.GONE
+            }
+        } else {
+            // userCard涓虹┖鏃讹紝浠巆ardInfo鑾峰彇鏁版嵁
+            cardInfo?.let { info ->
+                // 浠庢帴鍙h繑鍥炵殑鏁版嵁涓幏鍙栦綑棰濓紝杞崲涓烘纭殑绫诲瀷
+                val balance = info.balance ?: 0.0
+                binding.tvCardBalance.text = MornyUtil.changeF2Y((balance * 100).toInt()) + "鍏�"
+
+                // 濡傛灉cardInfo涓湁鏈�鍚庝娇鐢ㄦ椂闂寸浉鍏冲瓧娈碉紝鍙互鍦ㄨ繖閲岃缃�
+                // 鏆傛椂闅愯棌鏈�鍚庝娇鐢ㄦ椂闂�
+                binding.llLastUseTime.visibility = android.view.View.GONE
+            } ?: run {
+                // 濡傛灉cardInfo涔熶负绌猴紝鏄剧ず榛樿鍊�
+                binding.tvCardBalance.text = "0.00鍏�"
                 binding.llLastUseTime.visibility = android.view.View.GONE
             }
         }
 
         // 鏄剧ず鏈嶅姟鍣ㄦ暟鎹�
         cardInfo?.let { info ->
+            // 浣跨敤瀹屾暣鐨勭敤鎴风紪鍙�
+            binding.tvUserNumber.text = info.cardNum ?: cardNumber
+
             binding.tvUserName.text = info.userName ?: "鏈煡"
             binding.tvPhone.text = info.phone ?: "鏈粦瀹�"
             binding.tvIdCard.text = info.userCode ?: "鏈綍鍏�"  // 浣跨敤userCode浣滀负韬唤璇佸彿鐨勬浛浠�
 
-            // 鏍规嵁status瀛楁鏄剧ず鐘舵��
-            val statusText = when (info.state) {
-                1 -> "姝e父"
-                2 -> "鎸傚け"
-                3 -> "閿佸畾"
-                else -> "鏈煡"
+            // 鏍规嵁state瀛楁鏄剧ず鐘舵��
+            val (statusText, statusColor) = when (info.state) {
+                1 -> Pair("姝e父", android.graphics.Color.parseColor("#4CAF50")) // 缁胯壊
+                2 -> Pair("宸叉敞閿�", android.graphics.Color.parseColor("#FF5722")) // 娣辨鑹�
+                3 -> Pair("宸叉寕澶�", android.graphics.Color.parseColor("#FF9800")) // 姗欒壊
+                4 -> Pair("鏃犳晥鍗$墖", android.graphics.Color.parseColor("#F44336")) // 绾㈣壊
+                else -> Pair("鏈煡鐘舵��", android.graphics.Color.parseColor("#9E9E9E")) // 鐏拌壊
             }
-
+            binding.tvCardStatus.text = statusText
+            binding.tvCardStatus.setTextColor(statusColor)
+        } ?: run {
+            // 濡傛灉cardInfo涓虹┖锛屾樉绀洪粯璁ゅ��
+            binding.tvUserNumber.text = cardNumber
+            binding.tvUserName.text = "鏈煡"
+            binding.tvPhone.text = "鏈粦瀹�"
+            binding.tvIdCard.text = "鏈綍鍏�"
+            binding.tvCardStatus.text = "鏈煡鐘舵��"
+            binding.tvCardStatus.setTextColor(android.graphics.Color.parseColor("#9E9E9E"))
         }
     }
 

--
Gitblit v1.8.0