From 040f1aba13b179ff318366680a6346af7fd97795 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 11 四月 2025 16:11:23 +0800
Subject: [PATCH] feat(generallibrary): 新增补卡功能并优化底部导航栏

---
 baselibrary/src/main/res/drawable/bukou.xml                                   |    9 
 generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt        |   21 
 generallibrary/src/main/res/drawable/bottom_tab_selector.xml                  |   13 
 generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt    |  126 +++++
 generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt          |    5 
 generallibrary/src/main/res/layout/fragment_card.xml                          |    6 
 generallibrary/src/main/res/drawable/recharge_button_ripple.xml               |   11 
 generallibrary/src/main/res/drawable/text_color_selector.xml                  |    5 
 generallibrary/src/main/res/layout/fragment_my.xml                            |   43 -
 generallibrary/src/main/java/com/dayu/general/adapter/CardReplaceAdapter.kt   |  110 ++++
 generallibrary/src/main/res/layout/activity_main.xml                          |  111 ++--
 generallibrary/build.gradle                                                   |   16 
 generallibrary/src/main/AndroidManifest.xml                                   |   23 
 generallibrary/src/main/res/layout/activity_card_replace.xml                  |   49 ++
 generallibrary/src/main/res/drawable/tab_indicator.xml                        |    2 
 generallibrary/src/main/res/drawable/tab_selector_background.xml              |    5 
 generallibrary/src/main/res/drawable/bottom_tab_bg.xml                        |    7 
 generallibrary/src/main/java/com/dayu/general/bean/db/CardRegistrationBean.kt |    1 
 generallibrary/src/main/java/com/dayu/general/bean/net/CardInfoResult.kt      |   16 
 generallibrary/src/main/java/com/dayu/general/bean/net/CardReplaceInfo.kt     |   28 +
 baselibrary/src/main/res/drawable/fanxie.xml                                  |    9 
 generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt              |    4 
 generallibrary/src/main/java/com/dayu/general/bean/db/RechargeRecordBean.kt   |   21 
 generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt |  173 +++++++
 generallibrary/src/main/java/com/dayu/general/dao/RechargeRecordDao.kt        |   35 +
 generallibrary/src/main/res/drawable/bottom_tab_selected.xml                  |   14 
 generallibrary/src/main/res/layout/fragment_recharge.xml                      |  428 +++++++++---------
 generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt         |   37 +
 baselibrary/src/main/res/drawable/chongzheng.xml                              |    9 
 generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt               |    7 
 30 files changed, 995 insertions(+), 349 deletions(-)

diff --git a/baselibrary/src/main/res/drawable/bukou.xml b/baselibrary/src/main/res/drawable/bukou.xml
new file mode 100644
index 0000000..a98e64b
--- /dev/null
+++ b/baselibrary/src/main/res/drawable/bukou.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M18,9l-1.41,-1.42L10,14.17l-2.59,-2.58L6,13l4,4zM19,3h-4.18C14.4,1.84 13.3,1 12,1c-1.3,0 -2.4,0.84 -2.82,2L5,3c-0.14,0 -0.27,0.01 -0.4,0.04 -0.39,0.08 -0.74,0.28 -1.01,0.55 -0.18,0.18 -0.33,0.4 -0.43,0.64 -0.1,0.23 -0.16,0.49 -0.16,0.77v14c0,0.27 0.06,0.54 0.16,0.78s0.25,0.45 0.43,0.64c0.27,0.27 0.62,0.47 1.01,0.55 0.13,0.02 0.26,0.03 0.4,0.03h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM12,2.75c0.41,0 0.75,0.34 0.75,0.75s-0.34,0.75 -0.75,0.75 -0.75,-0.34 -0.75,-0.75 0.34,-0.75 0.75,-0.75zM19,19L5,19L5,5h14v14z"
+      android:fillColor="#009ad6"/>
+</vector>
diff --git a/baselibrary/src/main/res/drawable/chongzheng.xml b/baselibrary/src/main/res/drawable/chongzheng.xml
new file mode 100644
index 0000000..66a2070
--- /dev/null
+++ b/baselibrary/src/main/res/drawable/chongzheng.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M11,15h2v2h-2zM11,7h2v6h-2zM19,3h-4.18C14.4,1.84 13.3,1 12,1c-1.3,0 -2.4,0.84 -2.82,2L5,3c-0.14,0 -0.27,0.01 -0.4,0.04 -0.39,0.08 -0.74,0.28 -1.01,0.55 -0.18,0.18 -0.33,0.4 -0.43,0.64 -0.1,0.23 -0.16,0.49 -0.16,0.77v14c0,0.27 0.06,0.54 0.16,0.78s0.25,0.45 0.43,0.64c0.27,0.27 0.62,0.47 1.01,0.55 0.13,0.02 0.26,0.03 0.4,0.03h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM12,2.75c0.41,0 0.75,0.34 0.75,0.75s-0.34,0.75 -0.75,0.75 -0.75,-0.34 -0.75,-0.75 0.34,-0.75 0.75,-0.75zM19,19L5,19L5,5h14v14z"
+      android:fillColor="#009ad6"/>
+</vector>
diff --git a/baselibrary/src/main/res/drawable/fanxie.xml b/baselibrary/src/main/res/drawable/fanxie.xml
new file mode 100644
index 0000000..12c9b85
--- /dev/null
+++ b/baselibrary/src/main/res/drawable/fanxie.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M12,2C6.5,2 2,6.5 2,12s4.5,10 10,10 10,-4.5 10,-10S17.5,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM7,15h10v2L7,17zM10.3,11.2L8.4,9.3 7,10.7l3.3,3.3L17,7.3l-1.4,-1.4z"
+      android:fillColor="#009ad6"/>
+</vector>
diff --git a/generallibrary/build.gradle b/generallibrary/build.gradle
index a598a66..23302f1 100644
--- a/generallibrary/build.gradle
+++ b/generallibrary/build.gradle
@@ -13,6 +13,13 @@
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         consumerProguardFiles "consumer-rules.pro"
+        
+        // 娣诲姞Room鏁版嵁搴撶殑瀵煎嚭schema閫夐」
+        javaCompileOptions {
+            annotationProcessorOptions {
+                arguments += ["room.schemaLocation": "$projectDir/schemas".toString()]
+            }
+        }
     }
 
     buildTypes {
@@ -56,11 +63,10 @@
 
     compileOnly project(':pickerviewlibrary')
 
-    //鏁版嵁搴�
-    implementation "androidx.room:room-runtime:2.3.0"
-    implementation "androidx.room:room-ktx:2.3.0"
-    runtimeOnly("androidx.room:room-common:2.3.0")
-    kapt "androidx.room:room-compiler:2.3.0"
+    //鏁版嵁搴� - 鏇存柊鐗堟湰浠ユ洿濂芥敮鎸佸崗绋�
+    implementation "androidx.room:room-runtime:2.6.1"
+    implementation "androidx.room:room-ktx:2.6.1"
+    kapt "androidx.room:room-compiler:2.6.1"
 
     //鏉冮檺鐢宠
     compileOnly 'com.github.getActivity:XXPermissions:18.5'
diff --git a/generallibrary/src/main/AndroidManifest.xml b/generallibrary/src/main/AndroidManifest.xml
index f167a9f..e1429f1 100644
--- a/generallibrary/src/main/AndroidManifest.xml
+++ b/generallibrary/src/main/AndroidManifest.xml
@@ -39,14 +39,6 @@
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
 
-        <!--        <activity-->
-        <!--            android:name="com.dayu.recharge.activity.LoginActivity"-->
-        <!--            android:exported="true">-->
-        <!--            <intent-filter>-->
-        <!--                <action android:name="android.intent.action.MAIN" />-->
-        <!--                <category android:name="android.intent.category.LAUNCHER" />-->
-        <!--            </intent-filter>-->
-        <!--        </activity>-->
         <activity android:name="com.dayu.general.activity.NewCardActivity" />
         <activity android:name="com.dayu.general.activity.ManageListActivity" />
         <activity android:name="com.dayu.general.activity.SearchUserListActivity" />
@@ -60,7 +52,17 @@
                 <data android:mimeType="text/plain" />
             </intent-filter>
         </activity>
-        <activity android:name=".activity.MainActivity" />
+        <activity
+            android:name=".activity.MainActivity"
+            android:launchMode="singleTop"
+            android:windowSoftInputMode="adjustPan">
+            <intent-filter>
+                <action android:name="android.nfc.action.ACTION_NDEF_DISCOVERED" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:mimeType="text/plain" />
+            </intent-filter>
+        </activity>
+
         <activity
             android:name=".activity.ManagerReadActivity"
             android:exported="false"
@@ -83,6 +85,9 @@
             </intent-filter>
         </activity>
 
+        <!-- 鏂板琛ュ崱Activity -->
+        <activity android:name=".activity.CardReplaceActivity" />
+
 
         <meta-data
             android:name="BUGLY_APP_VERSION"
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt
new file mode 100644
index 0000000..fae0023
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardReplaceActivity.kt
@@ -0,0 +1,173 @@
+package com.dayu.general.activity
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.inputmethod.EditorInfo
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.dayu.baselibrary.net.subscribers.SubscriberListener
+import com.dayu.baselibrary.utils.ToastUtil
+import com.dayu.general.adapter.CardReplaceAdapter
+import com.dayu.general.bean.net.CardReplaceInfo
+import com.dayu.general.bean.net.CardReplaceResponse
+import com.dayu.general.databinding.ActivityCardReplaceBinding
+import com.dayu.general.net.ApiManager
+import com.dayu.general.net.BaseResponse
+import com.scwang.smart.refresh.layout.api.RefreshLayout
+import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
+
+/**
+ * 鍗$墖琛ュ姙Activity
+ */
+class CardReplaceActivity : BaseActivity() {
+
+    private lateinit var binding: ActivityCardReplaceBinding
+    private var currentCardInfo: CardReplaceInfo? = null
+    private lateinit var adapter: CardReplaceAdapter
+    
+    // 鍒嗛〉鍙傛暟
+    private var pageCurr: Int = 1
+    private val pageSize: Int = 20
+    private var hasMoreData: Boolean = true
+    
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        binding = ActivityCardReplaceBinding.inflate(LayoutInflater.from(this))
+        setContentView(binding.root)
+        
+        initView()
+        initRecyclerView()
+        setupRefreshLayout()
+        loadCardReplaceList(true)
+    }
+    
+    /**
+     * 鍒濆鍖栬鍥�
+     */
+    private fun initView() {
+        // 鍒濆鍖栨爣棰樻爮
+        binding.titleBar.setOnItemclickListner(com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE) { 
+            finish() 
+        }
+    }
+    
+    /**
+     * 鍒濆鍖朢ecyclerView
+     */
+    private fun initRecyclerView() {
+        // 鍒涘缓閫傞厤鍣�
+        adapter = CardReplaceAdapter(this)
+        
+        // 璁剧疆甯冨眬绠$悊鍣ㄥ拰閫傞厤鍣�
+        binding.recyclerView.apply {
+            layoutManager = LinearLayoutManager(this@CardReplaceActivity)
+            adapter = this@CardReplaceActivity.adapter
+        }
+        
+        // 璁剧疆鍗$墖鐐瑰嚮鐩戝惉鍣� - 鐐瑰嚮鍒楄〃椤规椂鎵ц琛ュ姙鎿嶄綔
+        adapter.setOnItemClickListener { cardInfo ->
+            currentCardInfo = cardInfo
+            // 鐩存帴鎵ц琛ュ姙鎿嶄綔
+            performCardReplace(cardInfo)
+        }
+    }
+    
+    /**
+     * 璁剧疆鍒锋柊甯冨眬
+     */
+    private fun setupRefreshLayout() {
+        binding.refreshLayout.setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
+            override fun onRefresh(refreshLayout: RefreshLayout) {
+                // 涓嬫媺鍒锋柊锛岄噸缃〉鐮佸苟閲嶆柊鍔犺浇鏁版嵁
+                pageCurr = 1
+                hasMoreData = true
+                loadCardReplaceList(true)
+            }
+            
+            override fun onLoadMore(refreshLayout: RefreshLayout) {
+                // 涓婃媺鍔犺浇鏇村
+                if (hasMoreData) {
+                    pageCurr++
+                    loadCardReplaceList(false)
+                } else {
+                    // 娌℃湁鏇村鏁版嵁鏃讹紝缁撴潫鍔犺浇鏇村
+                    refreshLayout.finishLoadMoreWithNoMoreData()
+                }
+            }
+        })
+    }
+
+    /**
+     * 鍔犺浇鍙ˉ鍔炲崱鐗囧垪琛�
+     * 
+     * @param isRefresh 鏄惁涓哄埛鏂版搷浣滐紙true: 鍒锋柊锛宖alse: 鍔犺浇鏇村锛�
+     */
+    private fun loadCardReplaceList(isRefresh: Boolean = true) {
+        // 鏋勫缓鏌ヨ鍙傛暟
+        val params = HashMap<String, Any>().apply {
+            put("pageCurr", pageCurr)
+            put("pageSize", pageSize)
+        }
+
+        // 璋冪敤API鏌ヨ鎸傚け鍗$墖淇℃伅
+        ApiManager.getInstance().requestGetLoading(
+            this,
+            "sell/clientcard/getUnreplaced",
+            CardReplaceResponse::class.java,
+            params,
+            object : SubscriberListener<BaseResponse<CardReplaceResponse>>() {
+                override fun onNext(response: BaseResponse<CardReplaceResponse>) {
+                    // 缁撴潫鍒锋柊鎴栧姞杞芥洿澶氱姸鎬�
+                    finishRefreshOrLoadMore(isRefresh)
+                    
+                    if (response.success) {
+                        val cardResponse = response.content
+                        val cardList = cardResponse?.obj ?: emptyList()
+                        
+                        // 鏇存柊鏁版嵁鍒楄〃
+                        if (isRefresh) {
+                            adapter.setData(cardList)
+                        } else {
+                            adapter.addData(cardList)
+                        }
+                        
+                        // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁
+                        hasMoreData = cardList.size >= pageSize
+                        if (!hasMoreData && !isRefresh) {
+                            binding.refreshLayout.finishLoadMoreWithNoMoreData()
+                        }
+                    } else {
+                        ToastUtil.show(response.msg)
+                    }
+                }
+                
+                override fun onError(e: Throwable?) {
+                    // 缁撴潫鍒锋柊鎴栧姞杞芥洿澶氱姸鎬�
+                    finishRefreshOrLoadMore(isRefresh)
+                    ToastUtil.show("鏌ヨ澶辫触: ${e?.message ?: "鏈煡閿欒"}")
+                }
+            }
+        )
+    }
+    
+    /**
+     * 缁撴潫鍒锋柊鎴栧姞杞芥洿澶氱姸鎬�
+     */
+    private fun finishRefreshOrLoadMore(isRefresh: Boolean) {
+        if (isRefresh) {
+            binding.refreshLayout.finishRefresh()
+        } else {
+            binding.refreshLayout.finishLoadMore()
+        }
+    }
+    
+    /**
+     * 鎵ц鍗$墖琛ュ姙鎿嶄綔
+     */
+    private fun performCardReplace(cardInfo: CardReplaceInfo) {
+        // 杩欓噷瀹炵幇鍗$墖琛ュ姙鐨勪笟鍔¢�昏緫
+        ToastUtil.show("閫夋嫨浜嗗崱鐗囪繘琛岃ˉ鍔烇細${cardInfo.cardNum}")
+        
+        // TODO: 璋冪敤琛ュ姙鍗$墖API
+    }
+} 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
index 4e425e0..a57c9ef 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
@@ -1,5 +1,6 @@
 package com.dayu.general.activity
 
+import android.content.Intent
 import android.os.Bundle
 import android.view.KeyEvent
 import android.view.LayoutInflater
@@ -16,7 +17,7 @@
 import com.dayu.general.net.ApiManager
 import com.dayu.general.net.BaseResponse
 
-class MainActivity : BaseActivity() {
+class MainActivity : BaseNfcActivity() {
 
     var binding: ActivityMainBinding? = null
     private val fragments: ArrayList<Fragment> = ArrayList()
@@ -30,6 +31,18 @@
         initView()
         initTab()
         getUserInfo()
+    }
+
+    override fun onNfcBack(intent: Intent?) {
+        intent?.let { nfcIntent ->
+            // 鑾峰彇褰撳墠鏄剧ず鐨凢ragment
+            val currentFragment = fragments[binding?.viewPager?.currentItem ?: 0]
+            
+            // 濡傛灉褰撳墠鏄剧ず鐨勬槸鍏呭�糉ragment锛屽垯灏哊FC淇℃伅浼犻�掔粰瀹冨鐞�
+            if (currentFragment is RechargeFragment) {
+                currentFragment.handleNfcIntent(nfcIntent)
+            }
+        }
     }
 
 
@@ -63,8 +76,8 @@
 
     private fun initView() {
         binding!!.BSCardLL.setOnClickListener {  changeBottomState(Tab.BSC) }
-        binding!!.rechargeLL.setOnClickListener {  changeBottomState(Tab.RECHARGE) }
         binding!!.myLL.setOnClickListener { changeBottomState(Tab.MY) }
+        binding!!.rechargeLL.setOnClickListener { changeBottomState(Tab.RECHARGE) }
     }
 
 
@@ -153,8 +166,6 @@
         }
     }
 
-
-
     //鐐瑰嚮涓ゆ閫�鍑虹▼搴� 鏈夋椂闂撮棿闅� 闂撮殧鍐呯偣鍑诲垯閫�鍑虹▼搴� 鍚﹀垯 鍒欐彁绀�
     override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
         if (keyCode == KeyEvent.KEYCODE_BACK) {
@@ -169,6 +180,4 @@
         }
         return super.onKeyDown(keyCode, event)
     }
-
-
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt
index 0276426..7095fad 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt
@@ -1,5 +1,6 @@
 package com.dayu.general.activity
 
+import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -22,8 +23,10 @@
             ConfirmDialog(requireContext(), "鎻愮ず", "纭畾瑕侀��鍑虹櫥褰曞悧锛�") {
                 logout()
             }.show()
-
         }
+        
+
+        
         return binding?.root
     }
 
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt
index d1c6a49..703ab3f 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/RechargeFragment.kt
@@ -1,14 +1,23 @@
 package com.dayu.general.activity
 
+import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
+import com.dayu.baselibrary.net.subscribers.SubscriberListener
+import com.dayu.baselibrary.tools.nfc.NfcReadAdapter
+import com.dayu.baselibrary.utils.ToastUtil
+import com.dayu.general.bean.net.CardInfoResult
 import com.dayu.general.databinding.FragmentRechargeBinding
+import com.dayu.general.net.ApiManager
+import com.dayu.general.net.BaseResponse
 
 class RechargeFragment : Fragment() {
     var binding: FragmentRechargeBinding? = null
+    private var cardNumber: String? = null
+    private var cardInfo: CardInfoResult? = null
 
     override fun onCreateView(
         inflater: LayoutInflater,
@@ -16,6 +25,121 @@
         savedInstanceState: Bundle?
     ): View? {
         binding = FragmentRechargeBinding.inflate(inflater, container, false)
-        return binding?.root;
+        return binding?.root
     }
+    
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        initView()
+
+    }
+    
+    private fun initView() {
+        // 鍒濆鍖栫晫闈㈡樉绀鸿鍗$姸鎬�
+        binding?.rechargeReadLL?.visibility = View.VISIBLE
+        binding?.rechargeTextLL?.visibility = View.GONE
+    }
+    
+
+    
+    private fun resetView() {
+        // 閲嶇疆鐣岄潰鏄剧ず璇诲崱鐘舵��
+        binding?.rechargeReadLL?.visibility = View.VISIBLE
+        binding?.rechargeTextLL?.visibility = View.GONE
+        cardInfo = null
+    }
+    
+    /**
+     * 澶勭悊NFC鍒峰崱淇℃伅
+     * 璇ユ柟娉曠敱MainActivity璋冪敤
+     */
+    fun handleNfcIntent(intent: Intent) {
+        activity?.let { activity ->
+            try {
+                // 浣跨敤NfcReadAdapter璇诲彇鍗″彿
+                val nfcAdapter = NfcReadAdapter(intent, activity)
+                cardNumber = nfcAdapter.cardNumber
+                
+                if (cardNumber.isNullOrEmpty()) {
+                    ToastUtil.show("璇诲崱澶辫触锛岃閲嶆柊鍒峰崱")
+                    return
+                }
+                
+                // 鏄剧ず璇诲埌鐨勫崱鍙�
+                binding?.redInitCode?.text = cardNumber
+                
+                // 鏍规嵁鍗″彿鑾峰彇鍗$墖璇︾粏淇℃伅
+                getCardInfo(cardNumber!!)
+            } catch (e: Exception) {
+                ToastUtil.show("璇诲崱寮傚父锛�${e.message}")
+                e.printStackTrace()
+            }
+        }
+    }
+    
+    /**
+     * 鑾峰彇鍗$墖璇︾粏淇℃伅
+     */
+    private fun getCardInfo(cardNumber: String) {
+        activity?.let { activity ->
+            ApiManager.getInstance().requestGetLoading(
+                activity,
+                "card/getCardInfo/$cardNumber",  // 鍋囪API璺緞
+                CardInfoResult::class.java,
+                null,
+                object : SubscriberListener<BaseResponse<CardInfoResult>>() {
+                    override fun onNext(t: BaseResponse<CardInfoResult>) {
+                        if (t.success) {
+                            // 淇濆瓨鍗$墖淇℃伅
+                            cardInfo = t.content
+                            // 鏄剧ず鍗$墖淇℃伅
+                            displayCardInfo(t.content)
+                        } else {
+                            // 澶勭悊鑾峰彇澶辫触鐨勬儏鍐�
+                            ToastUtil.show(t.msg)
+                            binding?.redStatu?.text = "鍗$姸鎬佸紓甯�"
+                        }
+                    }
+
+                    override fun onError(e: Throwable?) {
+                        super.onError(e)
+                        ToastUtil.show("鑾峰彇鍗′俊鎭け璐�: ${e?.message ?: "鏈煡閿欒"}")
+                    }
+                }
+            )
+        }
+    }
+    
+    /**
+     * 鏄剧ず鍗$墖淇℃伅
+     */
+    private fun displayCardInfo(cardInfo: CardInfoResult?) {
+        if (cardInfo == null) {
+            ToastUtil.show("鍗′俊鎭负绌�")
+            return
+        }
+        
+        // 鍒囨崲鍒版樉绀轰俊鎭晫闈�
+        binding?.rechargeReadLL?.visibility = View.GONE
+        binding?.rechargeTextLL?.visibility = View.VISIBLE
+        
+        // 璁剧疆鍗$墖淇℃伅
+        binding?.userName?.text = cardInfo.userName ?: ""
+        binding?.redUserCode?.text = cardInfo.userCode ?: ""
+        binding?.redRemainderBlance?.text = "${cardInfo.balance ?: 0} 鍏�"
+        
+        // 璁剧疆鍗$姸鎬�
+        val cardStatus = when(cardInfo.status) {
+            1 -> "姝e父"
+            2 -> "鎸傚け"
+            3 -> "閿佸畾"
+            else -> "鏈煡"
+        }
+        binding?.redStatu?.text = cardStatus
+        
+
+    }
+    
+
+
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/CardReplaceAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/CardReplaceAdapter.kt
new file mode 100644
index 0000000..b46a848
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/adapter/CardReplaceAdapter.kt
@@ -0,0 +1,110 @@
+package com.dayu.general.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.databinding.DataBindingUtil
+import androidx.recyclerview.widget.RecyclerView
+import com.dayu.baselibrary.databinding.ItemNoMoreBinding
+import com.dayu.general.bean.net.CardReplaceInfo
+import com.dayu.general.databinding.ItemCardReplaceBinding
+
+/**
+ * 鍗$墖琛ュ姙閫傞厤鍣�
+ */
+class CardReplaceAdapter(private val context: Context) : BaseRecycleAdapter<RecyclerView.ViewHolder>() {
+
+    // 鍗$墖琛ュ姙鍒楄〃鏁版嵁
+    private var cardList: List<CardReplaceInfo> = emptyList()
+    
+    // 鐐瑰嚮鐩戝惉鍣� - 鐢ㄤ簬閫夋嫨瑕佽ˉ鍔炵殑鍗$墖
+    private var onItemClickListener: ((CardReplaceInfo) -> Unit)? = null
+
+    /**
+     * 璁剧疆鏂版暟鎹紙閲嶇疆锛�
+     */
+    fun setData(data: List<CardReplaceInfo>) {
+        cardList = data
+        notifyDataSetChanged()
+    }
+
+    /**
+     * 娣诲姞鏇村鏁版嵁锛堝垎椤靛姞杞斤級
+     */
+    fun addData(data: List<CardReplaceInfo>) {
+        val oldSize = cardList.size
+        cardList = cardList + data
+        notifyItemRangeInserted(oldSize, data.size)
+    }
+
+    /**
+     * 璁剧疆椤圭偣鍑荤洃鍚櫒 - 鐢ㄤ簬閫夋嫨鍗$墖杩涜琛ュ姙
+     */
+    fun setOnItemClickListener(listener: (CardReplaceInfo) -> Unit) {
+        onItemClickListener = listener
+    }
+
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
+        return if (viewType == VIEW_TYPE_EMPTY) {
+            // 绌鸿鍥�
+            val emptyView: ItemNoMoreBinding = DataBindingUtil.inflate(
+                (context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater),
+                com.dayu.baselibrary.R.layout.item_no_more,
+                parent,
+                false
+            )
+            ViewHolderEmpty(emptyView)
+        } else {
+            // 鍗$墖椤硅鍥�
+            val binding = ItemCardReplaceBinding.inflate(
+                context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater,
+                parent,
+                false
+            )
+            CardViewHolder(binding)
+        }
+    }
+
+    override fun getItemViewType(position: Int): Int {
+        return if (cardList.isEmpty()) {
+            VIEW_TYPE_EMPTY
+        } else {
+            VIEW_TYPE_ITEM
+        }
+    }
+
+    override fun getItemCount(): Int {
+        return if (cardList.isEmpty()) {
+            1  // 鏄剧ず绌鸿鍥�
+        } else {
+            cardList.size
+        }
+    }
+
+    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
+        if (holder is ViewHolderEmpty) {
+            // 绌鸿鍥炬棤闇�缁戝畾鏁版嵁
+            return
+        }
+        
+        if (holder is CardViewHolder) {
+            val card = cardList[position]
+            holder.bind(card)
+            
+            // 璁剧疆鏁翠釜椤圭殑鐐瑰嚮浜嬩欢锛岀敤浜庨�夋嫨瑕佽ˉ鍔炵殑鍗$墖
+            holder.itemView.setOnClickListener {
+                onItemClickListener?.invoke(card)
+            }
+        }
+    }
+
+    /**
+     * 鍗$墖瑙嗗浘鎸佹湁鑰�
+     */
+    inner class CardViewHolder(val binding: ItemCardReplaceBinding) : RecyclerView.ViewHolder(binding.root) {
+        fun bind(card: CardReplaceInfo) {
+            binding.cardInfo = card
+            binding.executePendingBindings()
+        }
+    }
+} 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/db/CardRegistrationBean.kt b/generallibrary/src/main/java/com/dayu/general/bean/db/CardRegistrationBean.kt
index e758469..7e2f26f 100644
--- a/generallibrary/src/main/java/com/dayu/general/bean/db/CardRegistrationBean.kt
+++ b/generallibrary/src/main/java/com/dayu/general/bean/db/CardRegistrationBean.kt
@@ -17,5 +17,6 @@
     val orderId: String? = null, // 璁㈠崟id锛屽垵濮嬩负null锛屽悗缁洿鏂�
     val isReported: Boolean = false, // 鏄惁涓婃姤鎴愬姛
     val isCardWritten: Boolean = false, // 鏄惁鍐欏崱鎴愬姛
+    val operatorId: String = "", // 鎿嶄綔浜篿d
     val createTime: Long = System.currentTimeMillis() // 鍒涘缓鏃堕棿
 ) 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/db/RechargeRecordBean.kt b/generallibrary/src/main/java/com/dayu/general/bean/db/RechargeRecordBean.kt
new file mode 100644
index 0000000..584e130
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/bean/db/RechargeRecordBean.kt
@@ -0,0 +1,21 @@
+package com.dayu.general.bean.db
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "recharge_record")
+data class RechargeRecordBean(
+    @PrimaryKey(autoGenerate = true)
+    val id: Long = 0,
+    val cardNumber: String, // 姘村崱缂栧彿
+    val balance: Double, // 浣欓
+    val rechargeAmount: Double, // 鍏呭�奸噾棰�
+    val bonusAmount: Double, // 璧犻�侀噾棰�
+    val paymentMethod: Int, // 鏀粯鏂瑰紡
+    val waterPrice: Double, // 姘翠环
+    val remark: String, // 澶囨敞
+    val operatorId: String, // 鎿嶄綔浜篿d
+    val orderId: String? = null, // 璁㈠崟id锛屽垵濮嬩负null锛屽悗缁洿鏂�
+    val isReported: Boolean = false, // 鏄惁涓婃姤鎴愬姛
+    val createTime: Long = System.currentTimeMillis() // 鍒涘缓鏃堕棿
+) 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/CardInfoResult.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/CardInfoResult.kt
new file mode 100644
index 0000000..cb1e39b
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/CardInfoResult.kt
@@ -0,0 +1,16 @@
+package com.dayu.general.bean.net
+
+/**
+ * 鍗$墖淇℃伅缁撴灉瀹炰綋绫�
+ */
+data class CardInfoResult(
+    val cardId: String? = null,      // 鍗″彿
+    val userName: String? = null,     // 鐢ㄦ埛濮撳悕
+    val userCode: String? = null,     // 鐢ㄦ埛缂栧彿
+    val phone: String? = null,        // 鎵嬫満鍙�
+    val address: String? = null,      // 鍦板潃
+    val balance: Double? = 0.0,       // 浣欓
+    val status: Int? = 0,             // 鍗$姸鎬�: 1-姝e父, 2-鎸傚け, 3-閿佸畾
+    val createTime: String? = null,   // 鍒涘缓鏃堕棿
+    val updateTime: String? = null    // 鏇存柊鏃堕棿
+) 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/CardReplaceInfo.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/CardReplaceInfo.kt
new file mode 100644
index 0000000..c5f3e14
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/CardReplaceInfo.kt
@@ -0,0 +1,28 @@
+package com.dayu.general.bean.net
+
+/**
+ * 鍗$墖琛ュ姙淇℃伅瀹炰綋绫�
+ * 瀵瑰簲鎺ュ彛杩斿洖鐨勫崱鐗囪ˉ鍔炰俊鎭暟鎹�
+ */
+data class CardReplaceResponse(
+    val itemTotal: Int = 0,
+    val obj: List<CardReplaceInfo> = emptyList(),
+    val pageCurr: Int = 0,
+    val pageSize: Int = 0,
+    val pageTotal: Int = 0
+)
+
+/**
+ * 鍗$墖琛ュ姙淇℃伅
+ */
+data class CardReplaceInfo(
+    val cardNum: String = "",         // 鍗″彿
+    val cardState: Int = 0,           // 鍗$墖鐘舵�佺爜
+    val cardType: String = "",        // 鍗$墖绫诲瀷
+    val clientName: String = "",      // 瀹㈡埛濮撳悕
+    val clientNum: String = "",       // 瀹㈡埛缂栧彿
+    val idCard: String = "",          // 韬唤璇佸彿
+    val money: String = "",           // 鍗″唴浣欓
+    val phone: String = "",           // 鎵嬫満鍙风爜
+    val stateName: String = ""        // 鍗$墖鐘舵�佸悕绉�
+) 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt b/generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt
index a8de4ec..f8cfcb7 100644
--- a/generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt
+++ b/generallibrary/src/main/java/com/dayu/general/dao/AppDataBase.kt
@@ -6,10 +6,12 @@
 import com.dayu.general.bean.db.CardRegistrationBean
 import com.dayu.general.bean.db.PassWordCardBean
 import com.dayu.general.bean.db.ProjectDataBean
+import com.dayu.general.bean.db.RechargeRecordBean
 
-@Database(entities = [PassWordCardBean::class, CardData::class, ProjectDataBean::class, CardRegistrationBean::class], version = 2, exportSchema = false)
+@Database(entities = [PassWordCardBean::class, CardData::class, ProjectDataBean::class, CardRegistrationBean::class, RechargeRecordBean::class], version = 4, exportSchema = false)
 abstract class AppDataBase : RoomDatabase() {
     abstract fun cardDataDao(): CardDataDao
     abstract fun projectDataDao(): ProjectDataDao
     abstract fun cardRegistrationDao(): CardRegistrationDao
+    abstract fun rechargeRecordDao(): RechargeRecordDao
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt b/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt
index 9ed72b7..a58d63f 100644
--- a/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt
+++ b/generallibrary/src/main/java/com/dayu/general/dao/BaseDaoSingleton.kt
@@ -3,7 +3,8 @@
 import android.content.Context
 import android.os.Environment
 import androidx.room.Room
-import com.dayu.general.activity.BaseActivity
+import androidx.room.migration.Migration
+import androidx.sqlite.db.SupportSQLiteDatabase
 import java.io.File
 
 class BaseDaoSingleton {
@@ -14,6 +15,15 @@
         @JvmField
         val SqlitePath: String =
             Environment.getExternalStorageDirectory().absolutePath + File.separator + ".dayu" + File.separator + "data" + File.separator
+
+        // 鏁版嵁搴撹縼绉荤瓥鐣ワ細浠庣増鏈�3杩佺Щ鍒扮増鏈�4
+        private val MIGRATION_3_4 = object : Migration(3, 4) {
+            override fun migrate(database: SupportSQLiteDatabase) {
+                // 杩欓噷涓嶉渶瑕佸疄闄呯殑鏁版嵁搴撶粨鏋勪慨鏀癸紝鍥犱负鎴戜滑鍙槸鏇存柊浜哛oom鐗堟湰
+                // 濡傛灉闇�瑕佷慨鏀规暟鎹簱缁撴瀯锛屽彲浠ュ湪杩欓噷娣诲姞 ALTER TABLE 璇彞
+            }
+        }
+
         fun getInstance(context: Context): AppDataBase {
             if (baseDao == null) {
                 baseDao = Room.databaseBuilder<AppDataBase>(
@@ -24,15 +34,26 @@
             }
             return baseDao as AppDataBase
         }
-        fun getAsynchInstance(context: Context?): AppDataBase? {
+        fun getAsynchInstance(context: Context): AppDataBase {
             if (AsynchBaseDao == null) {
-                AsynchBaseDao = Room.databaseBuilder<AppDataBase>(
-                    context!!,
-                    AppDataBase::class.java,
-                    SqlitePath + "ConfigurationData_generalV1"
-                ).build()
+                synchronized(this) {
+                    if (AsynchBaseDao == null) {
+                        AsynchBaseDao = Room.databaseBuilder(
+                            context.applicationContext,
+                            AppDataBase::class.java,
+                            "GeneralLibrary.db"
+                        )
+                        .addMigrations(MIGRATION_3_4) // 娣诲姞杩佺Щ绛栫暐
+                        .build()
+                    }
+                }
             }
-            return AsynchBaseDao
+            return AsynchBaseDao as AppDataBase
+        }
+
+        // 閿�姣佹暟鎹簱瀹炰緥
+        fun destroyInstance() {
+            AsynchBaseDao = null
         }
     }
 
diff --git a/generallibrary/src/main/java/com/dayu/general/dao/RechargeRecordDao.kt b/generallibrary/src/main/java/com/dayu/general/dao/RechargeRecordDao.kt
new file mode 100644
index 0000000..892faad
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/dao/RechargeRecordDao.kt
@@ -0,0 +1,35 @@
+package com.dayu.general.dao
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import androidx.room.Update
+import com.dayu.general.bean.db.RechargeRecordBean
+
+@Dao
+interface RechargeRecordDao {
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    fun insert(rechargeRecord: RechargeRecordBean)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    fun insertAll(rechargeRecords: List<RechargeRecordBean>)
+
+    @Update
+    fun update(rechargeRecord: RechargeRecordBean)
+
+    @Query("SELECT * FROM recharge_record WHERE id = :id")
+    fun findById(id: Long): RechargeRecordBean?
+
+    @Query("SELECT * FROM recharge_record WHERE cardNumber = :cardNumber ORDER BY createTime DESC")
+    fun findByCardNumber(cardNumber: String): List<RechargeRecordBean>
+
+    @Query("SELECT * FROM recharge_record WHERE isReported = 0")
+    fun findUnreportedRecords(): List<RechargeRecordBean>
+
+    @Query("UPDATE recharge_record SET isReported = 1 WHERE id = :id")
+    fun markAsReported(id: Long)
+
+    @Query("SELECT * FROM recharge_record ORDER BY createTime DESC")
+    fun getAllRecords(): List<RechargeRecordBean>
+} 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt b/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt
index ded47e8..79e1dae 100644
--- a/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt
+++ b/generallibrary/src/main/java/com/dayu/general/net/ApiManager.kt
@@ -2,6 +2,7 @@
 
 import android.content.Context
 import android.util.Log
+import com.dayu.baselibrary.business.BusinessProvider
 import com.dayu.baselibrary.net.subscribers.ProgressSubscriber
 import com.dayu.baselibrary.net.subscribers.SubscriberListener
 import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
@@ -120,13 +121,13 @@
 
         observable
             .subscribeOn(Schedulers.io())
-            .map(mapResponse(tClass))
+            .map(mapResponse(context, tClass))
             .unsubscribeOn(Schedulers.newThread())
             .observeOn(AndroidSchedulers.mainThread())
             .subscribe(mySubscriber)
     }
 
-    private fun <T> mapResponse(tClass: Class<T>): Function<Any, BaseResponse<T>> {
+    private fun <T> mapResponse(context: Context, tClass: Class<T>): Function<Any, BaseResponse<T>> {
         return Function { rawResponse ->
             when (rawResponse) {
                 is BaseResponse<*> -> {
@@ -142,7 +143,7 @@
                     // 澶勭悊token澶辨晥鐨勬儏鍐�
                     if (temp.code == NetConstans.TOKEN_INVALID) {
                         // 鍙互鍦ㄨ繖閲屾坊鍔犻噸瀹氬悜鍒扮櫥褰曢〉闈㈢殑閫昏緫
-                        // redirectToLogin()
+                        BusinessProvider.getBusinessProvider().startLoginNavigotor.navigateToLogin(context)
                         return@Function response
                     }
 
diff --git a/generallibrary/src/main/res/drawable/bottom_tab_bg.xml b/generallibrary/src/main/res/drawable/bottom_tab_bg.xml
new file mode 100644
index 0000000..3359b1e
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/bottom_tab_bg.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/bottom_color" />
+    <corners android:radius="0dp" />
+    <stroke android:width="0.5dp" android:color="#10000000" />
+</shape> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/bottom_tab_selected.xml b/generallibrary/src/main/res/drawable/bottom_tab_selected.xml
new file mode 100644
index 0000000..ebf62bd
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/bottom_tab_selected.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="rectangle">
+            <solid android:color="@color/bottom_color" />
+        </shape>
+    </item>
+    <item android:gravity="bottom" android:left="15dp" android:right="15dp">
+        <shape android:shape="rectangle">
+            <solid android:color="#4285F4" />
+            <size android:height="2dp" />
+        </shape>
+    </item>
+</layer-list> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/bottom_tab_selector.xml b/generallibrary/src/main/res/drawable/bottom_tab_selector.xml
new file mode 100644
index 0000000..2e94f9a
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/bottom_tab_selector.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true">
+        <shape android:shape="rectangle">
+            <solid android:color="#20000000" />
+        </shape>
+    </item>
+    <item android:state_focused="true">
+        <shape android:shape="rectangle">
+            <solid android:color="#10000000" />
+        </shape>
+    </item>
+</selector> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/recharge_button_ripple.xml b/generallibrary/src/main/res/drawable/recharge_button_ripple.xml
new file mode 100644
index 0000000..782e8f2
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/recharge_button_ripple.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="#40FFFFFF">
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <solid android:color="#FFFFFF" />
+            <corners android:radius="8dp" />
+        </shape>
+    </item>
+    <item android:drawable="@drawable/rounded_button_bg" />
+</ripple> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/tab_indicator.xml b/generallibrary/src/main/res/drawable/tab_indicator.xml
index ebc4a03..1a396ab 100644
--- a/generallibrary/src/main/res/drawable/tab_indicator.xml
+++ b/generallibrary/src/main/res/drawable/tab_indicator.xml
@@ -3,5 +3,5 @@
     android:shape="rectangle">
     <solid android:color="#4285F4" />
     <corners android:radius="2dp" />
-    <size android:height="3dp" android:width="20dp" />
+    <size android:height="3dp" />
 </shape> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/tab_selector_background.xml b/generallibrary/src/main/res/drawable/tab_selector_background.xml
new file mode 100644
index 0000000..ffe9536
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/tab_selector_background.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/bottom_tab_selected" android:state_selected="true" />
+    <item android:drawable="@drawable/bottom_tab_bg" />
+</selector> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/drawable/text_color_selector.xml b/generallibrary/src/main/res/drawable/text_color_selector.xml
new file mode 100644
index 0000000..00179aa
--- /dev/null
+++ b/generallibrary/src/main/res/drawable/text_color_selector.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="#4285F4" android:state_selected="true" />
+    <item android:color="#333333" />
+</selector> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/activity_card_replace.xml b/generallibrary/src/main/res/layout/activity_card_replace.xml
new file mode 100644
index 0000000..9d31abe
--- /dev/null
+++ b/generallibrary/src/main/res/layout/activity_card_replace.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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="match_parent"
+    android:background="@color/white"
+    android:orientation="vertical">
+
+    <com.dayu.baselibrary.view.TitleBar
+        android:id="@+id/titleBar"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dimen_title_height"
+        app:centerText="琛ュ崱" />
+
+
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1">
+
+        <com.scwang.smart.refresh.layout.SmartRefreshLayout
+            android:id="@+id/refreshLayout"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_below="@+id/titleBar">
+
+            <com.scwang.smart.refresh.header.ClassicsHeader
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/recyclerView"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@color/base_list_bg"
+                android:overScrollMode="never"
+                android:padding="10dp" />
+
+            <com.scwang.smart.refresh.footer.ClassicsFooter
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+        </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+
+    </FrameLayout>
+
+</LinearLayout> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/activity_main.xml b/generallibrary/src/main/res/layout/activity_main.xml
index e655d2c..cd5ed8a 100644
--- a/generallibrary/src/main/res/layout/activity_main.xml
+++ b/generallibrary/src/main/res/layout/activity_main.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="#ffffff">
@@ -12,115 +13,117 @@
         android:layout_height="match_parent"
         android:layout_above="@id/bottom_navigation" />
 
+    <!-- 搴曢儴瀵艰埅闃村奖 -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="3dp"
+        android:layout_above="@id/bottom_navigation"
+        android:background="@drawable/shadow_gradient" />
 
     <LinearLayout
         android:id="@+id/bottom_navigation"
         android:layout_width="match_parent"
-        android:layout_height="70dp"
+        android:layout_height="55dp"
         android:layout_alignParentBottom="true"
-        android:layout_marginTop="-20dp"
-        android:background="#00ffffff"
+        android:background="#FFFFFF"
+        android:elevation="8dp"
         android:gravity="bottom"
         android:orientation="horizontal">
 
         <LinearLayout
             android:id="@+id/BSCardLL"
             android:layout_width="0dp"
-            android:layout_height="50dp"
+            android:layout_height="match_parent"
             android:layout_weight="1"
-            android:background="@color/bottom_color"
+            android:background="@drawable/tab_selector_background"
+            android:clickable="true"
+            android:focusable="true"
+            android:foreground="@drawable/bottom_tab_selector"
             android:gravity="center"
             android:orientation="vertical">
 
-            <RelativeLayout
-                android:layout_width="25dp"
-                android:layout_height="33dp">
 
-                <ImageView
-                    android:id="@+id/BSCardImg"
-                    android:layout_width="wrap_content"
-                    android:layout_height="25dp"
-                    android:layout_marginTop="8dp"
-                    android:src="@drawable/bottom_card_black" />
+            <ImageView
+                android:id="@+id/BSCardImg"
+                android:layout_width="24dp"
+                android:layout_height="24dp"
+                android:layout_marginTop="6dp"
+                android:src="@drawable/bottom_card_black" />
 
-
-            </RelativeLayout>
 
             <TextView
                 android:id="@+id/BSCardText"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
                 android:layout_marginBottom="3dp"
                 android:text="鍒跺崱"
-
+                android:textColor="@drawable/text_color_selector"
                 android:textSize="12sp" />
 
         </LinearLayout>
 
-        <FrameLayout
+
+        <LinearLayout
             android:id="@+id/rechargeLL"
             android:layout_width="0dp"
             android:layout_height="match_parent"
+            android:layout_gravity="center"
             android:layout_weight="1"
-            android:gravity="bottom"
+            android:background="@drawable/tab_selector_background"
+            android:clickable="true"
+            android:focusable="true"
+            android:foreground="@drawable/bottom_tab_selector"
+            android:gravity="center"
             android:orientation="vertical">
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="50dp"
-                android:layout_gravity="bottom"
-                android:background="@color/bottom_color"
-                android:orientation="vertical" />
+            <ImageView
+                android:id="@+id/rechargeImg"
+                android:layout_width="24dp"
+                android:layout_height="24dp"
+                android:layout_marginTop="6dp"
+                android:src="@drawable/bottom_recharge_white" />
 
-            <LinearLayout
-                android:layout_width="80dp"
-                android:layout_height="70dp"
-                android:layout_gravity="center"
-                android:background="@drawable/bottom_circle_bg"
-                android:gravity="center"
-                android:orientation="vertical">
+            <TextView
+                android:id="@+id/rechargeText"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:layout_marginBottom="3dp"
+                android:text="鍏呭��"
+                android:textColor="@color/white"
+                android:textSize="12sp" />
 
-                <ImageView
-                    android:id="@+id/rechargeImg"
-                    android:layout_width="40dp"
-                    android:layout_height="40dp"
-                    android:layout_marginTop="8dp"
-                    android:src="@drawable/bottom_recharge_white" />
+        </LinearLayout>
 
-                <TextView
-                    android:id="@+id/rechargeText"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="鍏呭��"
-                    android:textColor="@color/white"
-                    android:textSize="15sp" />
-
-            </LinearLayout>
-
-        </FrameLayout>
 
         <LinearLayout
             android:id="@+id/myLL"
             android:layout_width="0dp"
-            android:layout_height="50dp"
+            android:layout_height="match_parent"
             android:layout_weight="1"
-            android:background="@color/bottom_color"
+            android:background="@drawable/tab_selector_background"
+            android:clickable="true"
+            android:focusable="true" 
+            android:foreground="@drawable/bottom_tab_selector"
             android:gravity="center"
             android:orientation="vertical">
 
             <ImageView
                 android:id="@+id/myImg"
-                android:layout_width="wrap_content"
-                android:layout_height="25dp"
-                android:layout_marginTop="8dp"
+                android:layout_width="24dp"
+                android:layout_height="24dp"
+                android:layout_marginTop="6dp"
                 android:src="@drawable/bottom_my_black" />
 
             <TextView
                 android:id="@+id/myText"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
                 android:layout_marginBottom="3dp"
                 android:text="鎴戠殑"
+                android:textColor="@drawable/text_color_selector"
                 android:textSize="12sp" />
 
         </LinearLayout>
diff --git a/generallibrary/src/main/res/layout/fragment_card.xml b/generallibrary/src/main/res/layout/fragment_card.xml
index fbc41d1..b0cff9a 100644
--- a/generallibrary/src/main/res/layout/fragment_card.xml
+++ b/generallibrary/src/main/res/layout/fragment_card.xml
@@ -263,7 +263,7 @@
                     <ImageView
                         android:layout_width="55dp"
                         android:layout_height="55dp"
-                        android:src="@drawable/home_system" />
+                        android:src="@drawable/chongzheng" />
 
                     <TextView
                         android:layout_width="wrap_content"
@@ -302,7 +302,7 @@
                     <ImageView
                         android:layout_width="55dp"
                         android:layout_height="55dp"
-                        android:src="@drawable/home_system" />
+                        android:src="@drawable/bukou" />
 
                     <TextView
                         android:layout_width="wrap_content"
@@ -341,7 +341,7 @@
                     <ImageView
                         android:layout_width="55dp"
                         android:layout_height="55dp"
-                        android:src="@drawable/home_system" />
+                        android:src="@drawable/fanxie" />
 
                     <TextView
                         android:layout_width="wrap_content"
diff --git a/generallibrary/src/main/res/layout/fragment_my.xml b/generallibrary/src/main/res/layout/fragment_my.xml
index 87243eb..5140657 100644
--- a/generallibrary/src/main/res/layout/fragment_my.xml
+++ b/generallibrary/src/main/res/layout/fragment_my.xml
@@ -331,35 +331,6 @@
                             android:src="@drawable/ic_arrow_right"/>
                     </RelativeLayout>
 
-                    <TextView
-                        android:id="@+id/sys_ip"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="12dp"
-                        android:background="#F9F9F9"
-                        android:drawableStart="@android:drawable/ic_menu_manage"
-                        android:drawablePadding="8dp"
-                        android:drawableTint="#666666"
-                        android:padding="12dp"
-                        android:text="IP璁剧疆"
-                        android:textColor="#333333"
-                        android:textSize="@dimen/text_size"
-                        android:visibility="gone" />
-
-                    <TextView
-                        android:id="@+id/card_replacement"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="12dp"
-                        android:background="#F9F9F9"
-                        android:drawableStart="@android:drawable/ic_menu_edit"
-                        android:drawablePadding="8dp"
-                        android:drawableTint="#666666"
-                        android:padding="12dp"
-                        android:text="鐢ㄦ埛琛ュ崱"
-                        android:textColor="#333333"
-                        android:textSize="@dimen/text_size"
-                        android:visibility="gone" />
 
                     <TextView
                         android:id="@+id/my_psw"
@@ -376,19 +347,7 @@
                         android:textSize="@dimen/text_size"
                         android:visibility="gone" />
 
-                    <TextView
-                        android:id="@+id/my_testConnect"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:background="#F9F9F9"
-                        android:drawableStart="@android:drawable/ic_menu_compass"
-                        android:drawablePadding="8dp"
-                        android:drawableTint="#666666"
-                        android:padding="12dp"
-                        android:text="鏈繛鎺ユ暟鎹腑蹇�"
-                        android:textColor="#333333"
-                        android:textSize="@dimen/text_size"
-                        android:visibility="gone" />
+
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
         </LinearLayout>
diff --git a/generallibrary/src/main/res/layout/fragment_recharge.xml b/generallibrary/src/main/res/layout/fragment_recharge.xml
index e9971e8..0c190b0 100644
--- a/generallibrary/src/main/res/layout/fragment_recharge.xml
+++ b/generallibrary/src/main/res/layout/fragment_recharge.xml
@@ -3,54 +3,73 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="#F5F5F5">
+    android:background="@color/base_green_bg">
 
-    <com.dayu.baselibrary.view.TitleBar
-        android:id="@+id/titleBar"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/dimen_title_height"
-        android:background="@color/title_bar_bg"
-        android:elevation="4dp"
-        app:centerText="鎴戠殑" />
 
     <LinearLayout
         android:id="@+id/recharge_read_LL"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_below="@+id/titleBar"
+        android:gravity="center"
         android:orientation="vertical"
         android:visibility="visible">
 
         <androidx.cardview.widget.CardView
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_height="match_parent"
             android:layout_margin="16dp"
             app:cardCornerRadius="8dp"
+
             app:cardElevation="2dp">
 
-            <LinearLayout
+            <RelativeLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
+                android:layout_height="match_parent"
                 android:padding="16dp">
 
                 <TextView
+                    android:id="@+id/text1"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginTop="10dp"
                     android:layout_marginBottom="16dp"
                     android:gravity="center"
-                    android:text="璇峰皢鍗¤创鍦ㄨ澶囦笂杩涜璇诲崱"
-                    android:textColor="#333333"
-                    android:textSize="@dimen/text_size"
+                    android:text="鍏呭�艰鍗�"
+                    android:textColor="@color/base_blue_bg"
+                    android:textSize="@dimen/big_text_size"
                     android:textStyle="bold" />
 
-                <ImageView
-                    android:layout_width="200dp"
-                    android:layout_height="200dp"
-                    android:layout_gravity="center"
-                    android:scaleType="fitCenter"
-                    android:src="@mipmap/nfc_write" />
-            </LinearLayout>
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:orientation="vertical">
+
+                    <TextView
+                        android:id="@+id/textView2"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_marginBottom="40dp"
+                        android:gravity="center"
+
+                        android:text="璇峰皢鍗¤创鍦ㄨ澶囦笂杩涜璇诲崱"
+                        android:textColor="#333333"
+                        android:textSize="@dimen/text_size"
+                        android:textStyle="bold" />
+
+                    <ImageView
+                        android:layout_width="200dp"
+                        android:layout_height="200dp"
+                        android:layout_below="@+id/textView2"
+                        android:layout_centerHorizontal="true"
+                        android:layout_gravity="center"
+                        android:scaleType="fitCenter"
+                        android:src="@mipmap/nfc_write" />
+                </LinearLayout>
+
+            </RelativeLayout>
         </androidx.cardview.widget.CardView>
     </LinearLayout>
 
@@ -58,8 +77,8 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_above="@+id/recharge_registBtn"
-        android:layout_below="@+id/header_layout"
-        android:fillViewport="true">
+        android:fillViewport="true"
+        android:visibility="gone">
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -72,68 +91,13 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical"
-                android:visibility="gone">
+                android:visibility="visible">
+
 
                 <androidx.cardview.widget.CardView
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-
-                    app:cardCornerRadius="8dp"
-                    app:cardElevation="2dp">
-
-                    <LinearLayout
-                        android:id="@+id/recharge_LL"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:orientation="vertical"
-                        android:padding="16dp">
-
-
-                        <TextView
-                            android:id="@+id/red_recharge_water"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
-                            android:text="鍏呭�兼按閲忥細"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/text_size"
-                            android:visibility="gone" />
-
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:background="#F9F9F9"
-                            android:orientation="vertical"
-                            android:padding="12dp">
-
-                            <TextView
-                                android:id="@+id/recharge_tx"
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:layout_marginBottom="8dp"
-                                android:text="鍏呭�奸噾棰濓紙鍏冿級锛�"
-                                android:textColor="@color/red"
-                                android:textSize="@dimen/new_card_size"
-                                android:textStyle="bold" />
-
-                            <EditText
-                                android:id="@+id/recharge_water"
-                                android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
-                                android:background="@android:color/white"
-                                android:hint="璇疯緭鍏ュ厖鍊肩殑閲戦"
-                                android:inputType="numberDecimal"
-                                android:padding="12dp"
-                                android:textSize="@dimen/new_card_size" />
-                        </LinearLayout>
-                    </LinearLayout>
-                </androidx.cardview.widget.CardView>
-
-                <androidx.cardview.widget.CardView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="15dp"
-                    android:layout_marginBottom="16dp"
+                    android:layout_marginBottom="10dp"
                     app:cardCornerRadius="8dp"
                     app:cardElevation="2dp">
 
@@ -141,7 +105,7 @@
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:orientation="vertical"
-                        android:padding="16dp">
+                        android:padding="12dp">
 
                         <TextView
                             android:layout_width="match_parent"
@@ -155,49 +119,7 @@
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
-                            android:orientation="horizontal">
-
-                            <TextView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:text="鍗$姸鎬侊細"
-                                android:textColor="#666666"
-                                android:textSize="@dimen/text_size" />
-
-                            <TextView
-                                android:id="@+id/red_statu"
-                                android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
-                                android:textColor="@color/red"
-                                android:textSize="@dimen/new_card_size" />
-                        </LinearLayout>
-
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
-                            android:orientation="horizontal">
-
-                            <TextView
-                                android:layout_width="wrap_content"
-                                android:layout_height="wrap_content"
-                                android:text="濮撳悕锛�"
-                                android:textColor="#666666"
-                                android:textSize="@dimen/new_card_size" />
-
-                            <TextView
-                                android:id="@+id/userName"
-                                android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
-                                android:textColor="#333333"
-                                android:textSize="@dimen/new_card_size" />
-                        </LinearLayout>
-
-                        <LinearLayout
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
+                            android:layout_marginBottom="5dp"
                             android:orientation="horizontal">
 
                             <TextView
@@ -219,7 +141,50 @@
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
+                            android:layout_marginBottom="5dp"
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="鍗$姸鎬侊細"
+                                android:textColor="#666666"
+                                android:textSize="@dimen/text_size" />
+
+                            <TextView
+                                android:id="@+id/red_statu"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:textColor="@color/red"
+                                android:textSize="@dimen/new_card_size" />
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginBottom="5dp"
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="濮撳悕锛�"
+                                android:textColor="#666666"
+                                android:textSize="@dimen/new_card_size" />
+
+                            <TextView
+                                android:id="@+id/userName"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:textColor="#333333"
+                                android:textSize="@dimen/new_card_size" />
+                        </LinearLayout>
+
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginBottom="5dp"
                             android:orientation="horizontal">
 
                             <TextView
@@ -241,14 +206,14 @@
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
+                            android:layout_marginBottom="5dp"
                             android:orientation="horizontal"
                             android:visibility="visible">
 
                             <TextView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:text="鍏呭�煎悗鍓╀綑閲戦锛�"
+                                android:text="褰撳墠浣欓锛�"
                                 android:textColor="#666666"
                                 android:textSize="@dimen/text_size" />
 
@@ -265,7 +230,73 @@
                 <androidx.cardview.widget.CardView
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginBottom="16dp"
+
+                    app:cardCornerRadius="8dp"
+                    app:cardElevation="2dp">
+
+                    <LinearLayout
+                        android:id="@+id/recharge_LL"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="vertical"
+                        android:padding="12dp">
+
+
+                        <TextView
+                            android:id="@+id/red_recharge_water"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginBottom="8dp"
+                            android:text="鍏呭�兼按閲忥細"
+                            android:textColor="#333333"
+                            android:textSize="@dimen/text_size"
+                            android:visibility="gone" />
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:background="@color/base_green_bg"
+                            android:orientation="vertical"
+                            android:padding="12dp">
+
+                            <TextView
+                                android:id="@+id/recharge_tx"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_marginBottom="8dp"
+                                android:text="鍏呭�奸噾棰濓紙鍏冿級锛�"
+                                android:textColor="@color/red"
+                                android:textSize="@dimen/new_card_size"
+                                android:textStyle="bold" />
+
+                            <EditText
+                                android:id="@+id/recharge_morny"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:background="@android:color/white"
+                                android:hint="璇疯緭鍏ュ厖鍊肩殑閲戦"
+                                android:inputType="numberDecimal"
+                                android:padding="5dp"
+                                android:textSize="@dimen/new_card_size" />
+
+                            <EditText
+                                android:id="@+id/recharge_water"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginTop="5dp"
+                                android:background="@android:color/white"
+                                android:hint="璇疯緭鍏ヨ禒閫佺殑閲戦(閫夊~)"
+                                android:inputType="numberDecimal"
+                                android:padding="5dp"
+                                android:textSize="@dimen/new_card_size" />
+                        </LinearLayout>
+                    </LinearLayout>
+                </androidx.cardview.widget.CardView>
+
+                <androidx.cardview.widget.CardView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
                     app:cardCornerRadius="8dp"
                     app:cardElevation="2dp">
 
@@ -273,103 +304,67 @@
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:orientation="vertical"
-                        android:padding="16dp">
+                        android:padding="12dp">
 
                         <TextView
-                            android:layout_width="match_parent"
+                            android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginBottom="12dp"
-                            android:text="鐢甸噺淇℃伅"
+                            android:layout_marginBottom="10dp"
+                            android:text="鏀粯鏂瑰紡"
                             android:textColor="#333333"
-                            android:textSize="16sp"
+                            android:textSize="18sp"
                             android:textStyle="bold" />
 
-                        <TextView
-                            android:id="@+id/red_balance_electric"
+                        <RadioGroup
+                            android:id="@+id/newCard_paymentMethod"
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
-                            android:background="#F9F9F9"
-                            android:padding="12dp"
-                            android:text="鍓╀綑鐢甸噺锛�"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/text_size"
-                            android:visibility="visible" />
+                            android:orientation="horizontal">
 
-                        <TextView
-                            android:id="@+id/red_rechargeDate"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
-                            android:background="#F9F9F9"
-                            android:padding="12dp"
-                            android:text="鏈�鍚庤喘姘存棩鏈燂細"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/text_size"
-                            android:visibility="visible" />
+                            <RadioButton
+                                android:id="@+id/newCard_cashPayment"
+                                android:layout_width="0dp"
+                                android:layout_height="40dp"
+                                android:layout_marginRight="15dp"
+                                android:layout_weight="1"
+                                android:background="@drawable/radio_selector"
+                                android:button="@null"
+                                android:checked="true"
+                                android:gravity="center"
 
-                        <TextView
-                            android:id="@+id/red_rechargeElectric"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
-                            android:background="#F9F9F9"
-                            android:padding="12dp"
-                            android:text="鐢甸噺鍗曚环锛�"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/text_size"
-                            android:visibility="visible" />
+                                android:text="鐜伴噾"
+                                android:textColor="@color/radio_button_text_color"
+                                android:textSize="@dimen/new_card_size" />
 
-                        <TextView
-                            android:id="@+id/red_rechargeNumber"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
-                            android:background="#F9F9F9"
-                            android:padding="12dp"
-                            android:text="鍏呭�兼鏁帮細"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/text_size"
-                            android:visibility="gone" />
+                            <RadioButton
+                                android:id="@+id/newCard_posPayment"
+                                android:layout_width="0dp"
+                                android:layout_height="40dp"
+                                android:layout_marginRight="15dp"
+                                android:layout_weight="1"
+                                android:background="@drawable/radio_selector"
+                                android:button="@null"
+                                android:gravity="center"
 
-                        <TextView
-                            android:id="@+id/red_total_water"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
-                            android:background="#F9F9F9"
-                            android:padding="12dp"
-                            android:text="鎬荤敤姘撮噺锛�"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/text_size"
-                            android:visibility="gone" />
+                                android:text="POS鏈�"
+                                android:textColor="@color/radio_button_text_color"
+                                android:textSize="@dimen/new_card_size" />
 
-                        <TextView
-                            android:id="@+id/red_total_power"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginBottom="8dp"
-                            android:background="#F9F9F9"
-                            android:padding="12dp"
-                            android:text="鎬荤敤鐢甸噺锛�"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/text_size"
-                            android:visibility="gone" />
+                            <RadioButton
+                                android:id="@+id/newCard_bankTransfer"
+                                android:layout_width="0dp"
+                                android:layout_height="40dp"
+                                android:layout_weight="1"
+                                android:background="@drawable/radio_selector"
+                                android:button="@null"
+                                android:gravity="center"
 
-                        <TextView
-                            android:id="@+id/red_waterPrice"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:background="#F9F9F9"
-                            android:padding="12dp"
-                            android:text="姣忕珛鏂圭背姘翠环鏍硷細"
-                            android:textColor="#333333"
-                            android:textSize="@dimen/text_size"
-                            android:visibility="gone" />
+                                android:text="閾惰杞处"
+                                android:textColor="@color/radio_button_text_color"
+                                android:textSize="@dimen/new_card_size" />
+                        </RadioGroup>
                     </LinearLayout>
                 </androidx.cardview.widget.CardView>
-
-
             </LinearLayout>
         </LinearLayout>
     </ScrollView>
@@ -379,11 +374,14 @@
         android:layout_width="match_parent"
         android:layout_height="50dp"
         android:layout_alignParentBottom="true"
-        android:layout_margin="16dp"
-        android:background="@drawable/rounded_button_bg"
+        android:layout_marginLeft="16dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginRight="16dp"
+        android:layout_marginBottom="10dp"
+        android:background="@drawable/recharge_button_ripple"
         android:elevation="2dp"
         android:gravity="center"
-        android:text="鍏呭��"
+        android:text="涓嬩竴姝ワ紙鍐欏崱锛�"
         android:textColor="@color/white"
         android:textSize="@dimen/new_card_size"
         android:textStyle="bold"

--
Gitblit v1.8.0