Browse Source

1.银行预约列表页面
2.银行预约的查询页面
3.银行预约的查询详情页面

liukai 2 years ago
parent
commit
5003958a28
23 changed files with 1044 additions and 7 deletions
  1. 6 0
      cpt_ewallet/src/main/AndroidManifest.xml
  2. 14 0
      cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/mvvm/AppointmentEnquiryDetailViewModel.kt
  3. 16 0
      cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/mvvm/AppointmentEnquiryViewModel.kt
  4. 4 0
      cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/mvvm/BankWithdrawViewModel.kt
  5. 74 0
      cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/mvvm/WithdrawAppointmentViewModel.kt
  6. 53 0
      cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/ui/AppointmentEnquiryActivity.kt
  7. 44 0
      cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/ui/AppointmentEnquiryDetailActivity.kt
  8. 1 1
      cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/ui/EWalletMainFragment.kt
  9. 98 0
      cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/ui/WithdrawAppointmentActivity.kt
  10. BIN
      cpt_ewallet/src/main/res/drawable-xxhdpi/iv_enquiry_giro_status_date.webp
  11. BIN
      cpt_ewallet/src/main/res/drawable-xxhdpi/iv_enquiry_giro_status_reply.webp
  12. BIN
      cpt_ewallet/src/main/res/drawable-xxhdpi/iv_enquiry_giro_write.webp
  13. BIN
      cpt_ewallet/src/main/res/drawable-xxhdpi/iv_giro_appointment_date.webp
  14. BIN
      cpt_ewallet/src/main/res/drawable-xxhdpi/iv_giro_appointment_hotphone.webp
  15. 7 0
      cpt_ewallet/src/main/res/drawable/shape_gray_bg_border_line.xml
  16. 90 0
      cpt_ewallet/src/main/res/layout/activity_appointment_enquiry.xml
  17. 122 0
      cpt_ewallet/src/main/res/layout/activity_appointment_enquiry_detail.xml
  18. 10 6
      cpt_ewallet/src/main/res/layout/activity_bank_withdraw.xml
  19. 47 0
      cpt_ewallet/src/main/res/layout/activity_withdraw_appointment.xml
  20. 262 0
      cpt_ewallet/src/main/res/layout/item_withdraw_appointment.xml
  21. 77 0
      cpt_ewallet/src/main/res/layout/item_withdraw_appointment_footer.xml
  22. 111 0
      cs_baselib/src/main/java/com/guadou/lib_baselib/utils/AsynAnimUtil.kt
  23. 8 0
      cs_cptServices/src/main/res/drawable/shape_profile_red_round3.xml

+ 6 - 0
cpt_ewallet/src/main/AndroidManifest.xml

@@ -10,6 +10,12 @@
 
         <activity android:name=".ui.BankWithdrawActivity"/>
 
+        <activity android:name=".ui.WithdrawAppointmentActivity"/>
+
+        <activity android:name=".ui.AppointmentEnquiryActivity"/>
+
+        <activity android:name=".ui.AppointmentEnquiryDetailActivity"/>
+
     </application>
 
 </manifest>

+ 14 - 0
cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/mvvm/AppointmentEnquiryDetailViewModel.kt

@@ -0,0 +1,14 @@
+package com.hongyegroup.cpt_ewallet.mvvm
+
+import androidx.lifecycle.SavedStateHandle
+import com.guadou.lib_baselib.base.vm.BaseViewModel
+import dagger.hilt.android.lifecycle.HiltViewModel
+import javax.inject.Inject
+
+
+@HiltViewModel
+class AppointmentEnquiryDetailViewModel @Inject constructor(
+    private val savedStateHandle: SavedStateHandle
+) : BaseViewModel() {
+
+}

+ 16 - 0
cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/mvvm/AppointmentEnquiryViewModel.kt

@@ -0,0 +1,16 @@
+package com.hongyegroup.cpt_ewallet.mvvm
+
+import androidx.lifecycle.SavedStateHandle
+import com.guadou.lib_baselib.base.vm.BaseViewModel
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.flow.MutableStateFlow
+import javax.inject.Inject
+
+
+@HiltViewModel
+class AppointmentEnquiryViewModel @Inject constructor(
+    private val savedStateHandle: SavedStateHandle
+) : BaseViewModel() {
+
+    var mEnquiryMsg = MutableStateFlow("")
+}

+ 4 - 0
cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/mvvm/BankWithdrawViewModel.kt

@@ -1,5 +1,6 @@
 package com.hongyegroup.cpt_ewallet.mvvm
 
+import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.SavedStateHandle
 import com.guadou.lib_baselib.base.vm.BaseViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
@@ -14,4 +15,7 @@ class BankWithdrawViewModel @Inject constructor(
 
     var mWithdrawMoney = MutableStateFlow("")
 
+    var mBankCardNum = MutableStateFlow("")  //银行卡卡号
+    var mSelectBankName = MutableStateFlow("")  //选中的银行名称
+    var mHoldAccount = MutableLiveData<String>()  //持卡人姓名
 }

+ 74 - 0
cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/mvvm/WithdrawAppointmentViewModel.kt

@@ -0,0 +1,74 @@
+package com.hongyegroup.cpt_ewallet.mvvm
+
+import android.annotation.SuppressLint
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.SavedStateHandle
+import com.guadou.cs_cptservices.binding.BaseDataBindingAdapter
+import com.guadou.lib_baselib.base.vm.BaseViewModel
+import com.guadou.lib_baselib.ext.checkEmpty
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_ewallet.BR
+import com.hongyegroup.cpt_ewallet.R
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.withContext
+import javax.inject.Inject
+
+@HiltViewModel
+class WithdrawAppointmentViewModel @Inject constructor(
+    private val savedStateHandle: SavedStateHandle
+) : BaseViewModel() {
+
+    var mDatas = mutableListOf<String>()
+    val mAdapter by lazy { BaseDataBindingAdapter(R.layout.item_withdraw_appointment, BR.item, mDatas) }
+    var isNeedPlaceHolder = true
+
+    fun getAppointmentList(): LiveData<Boolean> {
+        val liveData = MutableLiveData<Boolean>()
+
+        launchOnUI {
+            //开始Loading
+            if (isNeedPlaceHolder) loadStartLoading()
+            val result = withContext(Dispatchers.IO) {
+                delay(1000)
+
+                val list = mutableListOf<String>()
+                for (i in 1..2) {
+                    list.add(i.toString())
+                }
+                return@withContext list
+            }
+
+            loadSuccess()
+            handleData(result)
+            liveData.postValue(true)
+
+        }
+
+        return liveData
+    }
+
+    @SuppressLint("NotifyDataSetChanged")
+    private fun handleData(list: MutableList<String>) {
+
+        if (!list.checkEmpty()) {
+
+            mDatas.clear()
+            mDatas.addAll(list)
+            mAdapter.notifyDataSetChanged()
+
+        } else {
+            //展示无数据
+            mDatas.clear()
+            mAdapter.notifyDataSetChanged()
+            //展示无数据的布局
+            val emptyView = CommUtils.inflate(R.layout.item_empty_layout)
+            mAdapter.setEmptyView(emptyView)
+        }
+
+        isNeedPlaceHolder = false
+    }
+
+}

+ 53 - 0
cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/ui/AppointmentEnquiryActivity.kt

@@ -0,0 +1,53 @@
+package com.hongyegroup.cpt_ewallet.ui
+
+import android.os.Bundle
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.engine.toast
+import com.guadou.lib_baselib.ext.commContext
+import com.guadou.lib_baselib.ext.gotoActivity
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.hongyegroup.cpt_ewallet.BR
+import com.hongyegroup.cpt_ewallet.R
+import com.hongyegroup.cpt_ewallet.databinding.ActivityAppointmentEnquiryBinding
+import com.hongyegroup.cpt_ewallet.mvvm.AppointmentEnquiryViewModel
+
+/**
+ * 提现预约的反馈页面
+ */
+class AppointmentEnquiryActivity : YYBaseVDBActivity<AppointmentEnquiryViewModel, ActivityAppointmentEnquiryBinding>() {
+
+    companion object {
+        fun startInstance() {
+            commContext().gotoActivity<AppointmentEnquiryActivity>()
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_appointment_enquiry, BR.viewModel, mViewModel)
+            .addBindingParams(BR.click, ClickProxy())
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+    }
+
+    override fun startObserve() {
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        fun submitEnquiry() {
+            KeyboardUtils.hideSoftInput(mActivity)
+
+            toast("提交反馈查询:" + mViewModel.mEnquiryMsg.value)
+
+            AppointmentEnquiryDetailActivity.startInstance()
+        }
+
+    }
+}

+ 44 - 0
cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/ui/AppointmentEnquiryDetailActivity.kt

@@ -0,0 +1,44 @@
+package com.hongyegroup.cpt_ewallet.ui
+
+import android.os.Bundle
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.ext.commContext
+import com.guadou.lib_baselib.ext.gotoActivity
+import com.hongyegroup.cpt_ewallet.BR
+import com.hongyegroup.cpt_ewallet.R
+import com.hongyegroup.cpt_ewallet.databinding.ActivityAppointmentEnquiryDetailBinding
+import com.hongyegroup.cpt_ewallet.mvvm.AppointmentEnquiryDetailViewModel
+
+/**
+ * 提现预约的反馈页面
+ */
+class AppointmentEnquiryDetailActivity : YYBaseVDBActivity<AppointmentEnquiryDetailViewModel, ActivityAppointmentEnquiryDetailBinding>() {
+
+    companion object {
+        fun startInstance() {
+            commContext().gotoActivity<AppointmentEnquiryDetailActivity>()
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_appointment_enquiry_detail, BR.viewModel, mViewModel)
+            .addBindingParams(BR.click, ClickProxy())
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+    }
+
+    override fun startObserve() {
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+    }
+
+}

+ 1 - 1
cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/ui/EWalletMainFragment.kt

@@ -117,7 +117,7 @@ class EWalletMainFragment : YYBaseVDBFragment<EWalletMainViewModel, FragmentEwal
 
         //去提现预约页面
         fun gotoAppointmentPage() {
-            toast("去提现预约页面")
+            WithdrawAppointmentActivity.startInstance()
         }
 
 

+ 98 - 0
cpt_ewallet/src/main/java/com/hongyegroup/cpt_ewallet/ui/WithdrawAppointmentActivity.kt

@@ -0,0 +1,98 @@
+package com.hongyegroup.cpt_ewallet.ui
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import androidx.asynclayoutinflater.view.AsyncLayoutInflater
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBLoadingActivity
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.ext.commContext
+import com.guadou.lib_baselib.ext.gotoActivity
+import com.guadou.lib_baselib.ext.vertical
+import com.guadou.lib_baselib.view.gloading.GLoadingTitleStatus
+import com.guadou.lib_baselib.view.gloading.Gloading
+import com.guadou.lib_baselib.view.gloading.GloadingGlobalAdapter
+import com.hongyegroup.cpt_ewallet.R
+import com.hongyegroup.cpt_ewallet.databinding.ActivityWithdrawAppointmentBinding
+import com.hongyegroup.cpt_ewallet.mvvm.WithdrawAppointmentViewModel
+import com.scwang.smart.refresh.layout.api.RefreshLayout
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener
+
+/**
+ * 提现的预约列表
+ */
+class WithdrawAppointmentActivity : YYBaseVDBLoadingActivity<WithdrawAppointmentViewModel, ActivityWithdrawAppointmentBinding>(), OnRefreshListener {
+
+    companion object {
+        fun startInstance() {
+            commContext().gotoActivity<WithdrawAppointmentActivity>()
+        }
+    }
+
+    override fun generateGLoading(): Gloading.Holder {
+        return Gloading.from(GloadingGlobalAdapter())
+            .wrap(this, GLoadingTitleStatus(true, true, false))
+            .withRetry { onGoadingRetry() }
+    }
+
+    override fun onGoadingRetry() {
+        mViewModel.isNeedPlaceHolder = true
+        initData()
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_withdraw_appointment)
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+        setStatusBarBlackText()
+
+        initRV()
+        initData()
+        initListener()
+    }
+
+    private fun initData() {
+        mViewModel.getAppointmentList().observe(this) {
+            mBinding.refreshLayout.finishRefresh()
+        }
+    }
+
+    @SuppressLint("InflateParams")
+    private fun initRV() {
+        mBinding.recyclerView.vertical().adapter = mViewModel.mAdapter
+
+        AsyncLayoutInflater(mActivity).inflate(R.layout.item_withdraw_appointment_footer, null) { view, _, _ ->
+            mViewModel.mAdapter.addFooterView(view)
+        }
+    }
+
+
+    private fun initListener() {
+        mViewModel.mAdapter.loadMoreModule.isEnableLoadMore = false
+
+        //刷新控件初始化
+        mBinding.refreshLayout.setEnableNestedScroll(true)
+        mBinding.refreshLayout.setEnableLoadMore(false)
+        mBinding.refreshLayout.setEnableRefresh(true)
+        mBinding.refreshLayout.setOnRefreshListener(this)
+
+        //点击事件
+        mViewModel.mAdapter.addChildClickViewIds(R.id.btn_query_status)
+        mViewModel.mAdapter.setOnItemChildClickListener { _, view, position ->
+            if (view.id == R.id.btn_query_status) {
+                //去反馈页面
+                AppointmentEnquiryActivity.startInstance()
+            }
+        }
+
+    }
+
+    override fun onRefresh(refreshLayout: RefreshLayout) {
+        initData()
+    }
+
+    override fun startObserve() {
+
+    }
+
+}

BIN
cpt_ewallet/src/main/res/drawable-xxhdpi/iv_enquiry_giro_status_date.webp


BIN
cpt_ewallet/src/main/res/drawable-xxhdpi/iv_enquiry_giro_status_reply.webp


BIN
cpt_ewallet/src/main/res/drawable-xxhdpi/iv_enquiry_giro_write.webp


BIN
cpt_ewallet/src/main/res/drawable-xxhdpi/iv_giro_appointment_date.webp


BIN
cpt_ewallet/src/main/res/drawable-xxhdpi/iv_giro_appointment_hotphone.webp


+ 7 - 0
cpt_ewallet/src/main/res/drawable/shape_gray_bg_border_line.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <solid android:color="#F2F4F8"/>
+    <stroke android:color="@color/divider_color" android:width="@dimen/d_0.5dp"/>
+
+</shape>

+ 90 - 0
cpt_ewallet/src/main/res/layout/activity_appointment_enquiry.xml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="viewModel"
+            type="com.hongyegroup.cpt_ewallet.mvvm.AppointmentEnquiryViewModel" />
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_ewallet.ui.AppointmentEnquiryActivity.ClickProxy" />
+
+        <import type="android.text.TextUtils" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="我的银行转账状态咨询" />
+
+        <!--Description-->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/d_20dp"
+            android:layout_marginBottom="@dimen/d_15dp"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:paddingLeft="@dimen/d_20dp"
+            android:paddingRight="@dimen/d_20dp">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:src="@drawable/iv_enquiry_giro_write" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:text="如果需要查询您的转帐状态,请留言咨询"
+                android:textColor="@color/black"
+                android:textSize="@dimen/d_14sp" />
+
+        </LinearLayout>
+
+        <EditText
+            android:layout_width="match_parent"
+            android:layout_height="226dp"
+            android:layout_marginLeft="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_20dp"
+            android:background="@drawable/shape_gray_bg_border_line"
+            android:gravity="top|left"
+            android:maxLines="9999"
+            android:paddingLeft="@dimen/d_10dp"
+            android:paddingTop="@dimen/d_15dp"
+            android:paddingRight="@dimen/d_10dp"
+            android:paddingBottom="@dimen/d_15dp"
+            android:text="@={viewModel.mEnquiryMsg}"
+            android:textColor="@color/black"
+            android:textSize="@dimen/d_15sp" />
+
+        <com.guadou.lib_baselib.font_text_view.TextViewMedium
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_42dp"
+            android:layout_marginLeft="@dimen/d_25dp"
+            android:layout_marginTop="@dimen/d_35dp"
+            android:layout_marginRight="@dimen/d_25dp"
+            android:background="@drawable/selector_app_blue_button_round2_bg"
+            android:gravity="center"
+            android:text="提交"
+            android:textColor="@color/white"
+            android:textSize="@dimen/d_16sp"
+            binding:clicks="@{click.submitEnquiry}" />
+
+    </LinearLayout>
+
+</layout>

+ 122 - 0
cpt_ewallet/src/main/res/layout/activity_appointment_enquiry_detail.xml

@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="viewModel"
+            type="com.hongyegroup.cpt_ewallet.mvvm.AppointmentEnquiryDetailViewModel" />
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_ewallet.ui.AppointmentEnquiryDetailActivity.ClickProxy" />
+
+        <import type="android.text.TextUtils" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="我的银行转账状态咨询" />
+
+        <!--Submit Date-->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/d_20dp"
+            android:layout_marginBottom="@dimen/d_15dp"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:paddingLeft="@dimen/d_20dp"
+            android:paddingRight="@dimen/d_20dp">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:src="@drawable/iv_enquiry_giro_status_date" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                android:id="@+id/tv_enquiry_giro_status_detail_date"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:text="Submission Date:-"
+                android:textColor="@color/black"
+                android:textSize="@dimen/d_14sp" />
+
+        </LinearLayout>
+
+        <com.guadou.lib_baselib.font_text_view.TextViewMedium
+            android:id="@+id/tv_enquiry_giro_status_detail_message"
+            android:layout_width="match_parent"
+            android:layout_height="122dp"
+            android:layout_marginLeft="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_20dp"
+            android:background="@drawable/shape_gray_bg_border_line"
+            android:paddingLeft="@dimen/d_10dp"
+            android:paddingTop="@dimen/d_15dp"
+            android:paddingRight="@dimen/d_10dp"
+            android:paddingBottom="@dimen/d_15dp"
+            android:text="-"
+            android:textColor="@color/black"
+            android:textSize="@dimen/d_15sp" />
+
+        <!--Reply-->
+        <LinearLayout
+            android:id="@+id/ll_enquiry_giro_status_detail_reply"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/d_20dp"
+            android:layout_marginBottom="@dimen/d_15dp"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:paddingLeft="@dimen/d_20dp"
+            android:paddingRight="@dimen/d_20dp"
+            android:visibility="visible">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:src="@drawable/iv_enquiry_giro_status_reply" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                android:id="@+id/tv_enquiry_giro_status_detail_reply_date"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:text="回复"
+                android:textColor="@color/black"
+                android:textSize="@dimen/d_14sp" />
+
+        </LinearLayout>
+
+        <com.guadou.lib_baselib.font_text_view.TextViewMedium
+            android:id="@+id/tv_enquiry_giro_status_detail_reply"
+            android:layout_width="match_parent"
+            android:layout_height="166dp"
+            android:layout_marginLeft="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_20dp"
+            android:background="@drawable/shape_gray_bg_border_line"
+            android:paddingLeft="@dimen/d_10dp"
+            android:paddingTop="@dimen/d_15dp"
+            android:paddingRight="@dimen/d_10dp"
+            android:paddingBottom="@dimen/d_15dp"
+            android:text="很抱歉让你等了这么久。由于公司的系统问题和银行账户问题,我们很长时间没有收到您的申请。现在我们正在帮助您尽快处理,请耐心等待三天。"
+            android:textColor="@color/profile_red"
+            android:textSize="@dimen/d_15sp"
+            android:visibility="visible" />
+
+    </LinearLayout>
+
+</layout>

+ 10 - 6
cpt_ewallet/src/main/res/layout/activity_bank_withdraw.xml

@@ -133,7 +133,6 @@
                     android:textSize="@dimen/d_15sp" />
 
                 <EditText
-                    android:id="@+id/et_giro_withdraw_bank_account"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
@@ -146,9 +145,11 @@
                     android:paddingRight="@dimen/d_20dp"
                     android:paddingBottom="@dimen/d_10dp"
                     android:singleLine="true"
-                    android:text="-"
                     android:textColor="@color/app_blue"
-                    android:textSize="@dimen/d_16sp" />
+                    android:textSize="@dimen/d_16sp"
+                    binding:default="@{@string/normal_empty}"
+                    tools:text="@string/normal_empty"
+                    android:text="@={viewModel.mBankCardNum}" />
 
 
                 <!--                <com.guadou.componentservice.font_text_view.TextViewRegular-->
@@ -206,7 +207,9 @@
                         android:paddingRight="@dimen/d_20dp"
                         android:paddingBottom="@dimen/d_10dp"
                         android:singleLine="true"
-                        android:text=""
+                        tools:text="@string/normal_empty"
+                        binding:text="@{viewModel.mSelectBankName}"
+                        binding:default="@{@string/normal_empty}"
                         android:textColor="@color/app_blue"
                         android:textSize="@dimen/d_16sp" />
 
@@ -243,7 +246,9 @@
                     android:paddingRight="@dimen/d_20dp"
                     android:paddingBottom="@dimen/d_10dp"
                     android:singleLine="true"
-                    android:text="-"
+                    android:text='@{viewModel.mHoldAccount}'
+                    binding:default="@{@string/normal_empty}"
+                    tools:text="@string/normal_empty"
                     android:textColor="@color/app_blue"
                     android:textSize="@dimen/d_16sp" />
 
@@ -264,7 +269,6 @@
                     android:visibility="visible"
                     binding:clicks="@{click.submitForm}" />
 
-
             </LinearLayout>
 
         </ScrollView>

+ 47 - 0
cpt_ewallet/src/main/res/layout/activity_withdraw_appointment.xml

@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="我的预约" />
+
+        <com.scwang.smart.refresh.layout.SmartRefreshLayout
+            android:id="@+id/refresh_layout"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            app:srlEnablePreviewInEditMode="true"
+            app:srlPrimaryColor="@color/white">
+
+            <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:overScrollMode="never"
+                android:scrollbars="vertical" />
+
+        </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+    </LinearLayout>
+
+</layout>

+ 262 - 0
cpt_ewallet/src/main/res/layout/item_withdraw_appointment.xml

@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <data>
+
+        <variable
+            name="item"
+            type="String" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/d_5dp"
+        android:layout_marginRight="@dimen/d_5dp"
+        android:background="@drawable/profile_white_shadow_comm_bg"
+        android:orientation="vertical">
+
+        <!--日期-->
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/d_5dp"
+            android:paddingLeft="@dimen/d_18dp"
+            android:paddingTop="@dimen/d_20dp"
+            android:paddingRight="@dimen/d_18dp"
+            android:paddingBottom="@dimen/d_20dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewMedium
+                android:id="@+id/tv_giro_appointment_date"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="Mon,01 July 2021 13:52pm"
+                android:textColor="@color/app_blue"
+                android:textSize="@dimen/d_16sp" />
+
+            <TextView
+                android:id="@+id/tv_giro_appointment_time"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="@dimen/d_5dp"
+                android:layout_toRightOf="@id/tv_giro_appointment_date"
+                android:text=""
+                android:textColor="@color/app_blue"
+                android:textSize="@dimen/d_16sp"
+                android:visibility="gone" />
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:src="@drawable/iv_giro_appointment_date" />
+
+        </RelativeLayout>
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_0.5dp"
+            android:layout_marginLeft="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_20dp"
+            android:src="@color/divider_color" />
+
+        <!--提现金额-->
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="51dp"
+            android:paddingLeft="@dimen/d_18dp"
+            android:paddingRight="@dimen/d_18dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="预约提现的金额"
+                android:textColor="@color/gray_76"
+                android:textSize="@dimen/d_14sp" />
+
+            <TextView
+                android:id="@+id/tv_giro_appointment_request_money"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="@dimen/d_5dp"
+                android:text="-"
+                android:textColor="@color/app_blue"
+                android:textSize="@dimen/d_16sp" />
+
+        </RelativeLayout>
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_0.5dp"
+            android:layout_marginLeft="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_20dp"
+            android:src="@color/divider_color" />
+
+        <!--提现日期-->
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="51dp"
+            android:paddingLeft="@dimen/d_18dp"
+            android:paddingRight="@dimen/d_18dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="预约日期"
+                android:textColor="@color/gray_76"
+                android:textSize="@dimen/d_14sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:id="@+id/tv_giro_appointment_giro_date"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:text="-"
+                android:textColor="@color/black"
+                android:textSize="@dimen/d_14sp" />
+
+        </RelativeLayout>
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_0.5dp"
+            android:layout_marginLeft="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_20dp"
+            android:src="@color/divider_color" />
+
+        <!--银行卡号-->
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="51dp"
+            android:paddingLeft="@dimen/d_18dp"
+            android:paddingRight="@dimen/d_18dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="银行卡号"
+                android:textColor="@color/gray_76"
+                android:textSize="@dimen/d_14sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:id="@+id/tv_giro_appointment_bank_account"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:text="-"
+                android:textColor="@color/black"
+                android:textSize="@dimen/d_14sp" />
+
+        </RelativeLayout>
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_0.5dp"
+            android:layout_marginLeft="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_20dp"
+            android:src="@color/divider_color" />
+
+        <!--银行卡持有者-->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="51dp"
+            android:gravity="center_vertical"
+            android:paddingLeft="@dimen/d_18dp"
+            android:paddingRight="@dimen/d_18dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="银行卡持有人"
+                android:textColor="@color/gray_76"
+                android:textSize="@dimen/d_14sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:id="@+id/tv_giro_appointment_bank_account_holder"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="@dimen/d_10dp"
+                android:layout_weight="1"
+                android:gravity="right"
+                android:text="-"
+                android:textColor="@color/black"
+                android:textSize="@dimen/d_14sp" />
+
+        </LinearLayout>
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_0.5dp"
+            android:layout_marginLeft="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_20dp"
+            android:src="@color/divider_color" />
+
+        <!--状态-->
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="51dp"
+            android:paddingLeft="@dimen/d_18dp"
+            android:paddingRight="@dimen/d_18dp">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="状态"
+                android:textColor="@color/gray_76"
+                android:textSize="@dimen/d_14sp" />
+
+            <TextView
+                android:id="@+id/tv_giro_appointment_status"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:text="-"
+                android:textColor="@color/profile_red"
+                android:textSize="@dimen/d_16sp" />
+
+        </RelativeLayout>
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_0.5dp"
+            android:layout_marginLeft="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_20dp"
+            android:src="@color/divider_color" />
+
+        <com.guadou.lib_baselib.font_text_view.TextViewMedium
+            android:id="@+id/btn_query_status"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/d_42dp"
+            android:layout_marginLeft="@dimen/d_18dp"
+            android:layout_marginTop="@dimen/d_20dp"
+            android:layout_marginRight="@dimen/d_18dp"
+            android:layout_marginBottom="@dimen/d_25dp"
+            android:background="@drawable/selector_app_blue_button_round2_bg"
+            android:gravity="center"
+            android:text="查询我的转帐状况"
+            android:textColor="@color/white"
+            android:textSize="@dimen/d_16sp" />
+
+
+    </LinearLayout>
+
+</layout>

+ 77 - 0
cpt_ewallet/src/main/res/layout/item_withdraw_appointment_footer.xml

@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:paddingLeft="@dimen/d_27dp"
+    android:paddingTop="@dimen/d_22dp"
+    android:paddingRight="@dimen/d_27dp"
+    android:paddingBottom="@dimen/d_40dp">
+
+    <com.guadou.lib_baselib.font_text_view.TextViewMedium
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="备注:"
+        android:textColor="@color/gray_82"
+        android:textSize="@dimen/d_14sp" />
+
+    <com.guadou.lib_baselib.font_text_view.TextViewMedium
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/d_9dp"
+        android:text="- 中国所有银行均可选择转账方式。"
+        android:textColor="@color/gray_text"
+        android:textSize="@dimen/d_13dsp" />
+
+    <com.guadou.lib_baselib.font_text_view.TextViewMedium
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/d_9dp"
+        android:text="- 所有新的转帐申请将于下一个工作天内处理。"
+        android:textColor="@color/gray_text"
+        android:textSize="@dimen/d_13dsp" />
+
+    <com.guadou.lib_baselib.font_text_view.TextViewMedium
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/d_9dp"
+        android:text="- 一旦转账申请被处理,您的余额将被更新。"
+        android:textColor="@color/gray_text"
+        android:textSize="@dimen/d_13dsp" />
+
+    <com.guadou.lib_baselib.font_text_view.TextViewMedium
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/d_9dp"
+        android:text="- 您可以进入“交易历史”页面查看过去的交易。"
+        android:textColor="@color/gray_text"
+        android:textSize="@dimen/d_13dsp" />
+
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/d_19dp">
+
+        <com.guadou.lib_baselib.font_text_view.TextViewMedium
+            android:id="@+id/tv_giro_appointment_contact_num"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:text="更多帮助请联系66046896"
+            android:textColor="@color/app_blue"
+            android:textSize="@dimen/d_14sp" />
+
+        <ImageView
+            android:id="@+id/iv_giro_appointment_contact_num"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:padding="@dimen/d_5dp"
+            android:src="@drawable/iv_giro_appointment_hotphone" />
+
+    </RelativeLayout>
+
+
+</LinearLayout>

+ 111 - 0
cs_baselib/src/main/java/com/guadou/lib_baselib/utils/AsynAnimUtil.kt

@@ -0,0 +1,111 @@
+package com.guadou.lib_baselib.utils
+
+import android.animation.Animator
+import android.animation.AnimatorListenerAdapter
+import android.os.Handler
+import android.os.HandlerThread
+import android.view.ViewPropertyAnimator
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleObserver
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.OnLifecycleEvent
+
+/**
+ * 异步动画执行器-工具类
+ *
+ 使用方法
+val anim = mBinding.ivAnim.animate()
+.scaleX(2f)
+.scaleY(2f)
+.translationXBy(200f)
+.translationYBy(200f)
+.setDuration(2000)
+
+AsynAnimUtil.instance.startAnim(this, anim)
+
+ */
+class AsynAnimUtil private constructor() : LifecycleObserver {
+
+    private var mHandlerThread: HandlerThread? = HandlerThread("anim_run_in_thread")
+
+    private var mHandler: Handler? = mHandlerThread?.run {
+        start()
+        Handler(this.looper)
+    }
+
+    private var mOwner: LifecycleOwner? = null
+    private var mAnim: ViewPropertyAnimator? = null
+
+    companion object {
+        val instance: AsynAnimUtil by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
+            AsynAnimUtil()
+        }
+    }
+
+    //启动动画
+    fun startAnim(owner: LifecycleOwner?, animator: ViewPropertyAnimator) {
+        try {
+            if (mOwner != owner) {
+                mOwner = owner
+                addLoopLifecycleObserver()
+            }
+
+            if (mHandlerThread?.isAlive != true) {
+                mHandlerThread = HandlerThread("anim_run_in_thread")
+                mHandler = mHandlerThread?.run {
+                    start()
+                    Handler(this.looper)
+                }
+            }
+
+            mHandler?.post {
+                mAnim = animator.setListener(object : AnimatorListenerAdapter() {
+                    override fun onAnimationEnd(animation: Animator?) {
+                        super.onAnimationEnd(animation)
+                        destory()
+                    }
+
+                    override fun onAnimationCancel(animation: Animator?) {
+                        super.onAnimationCancel(animation)
+                        destory()
+                    }
+
+                    override fun onAnimationEnd(animation: Animator?, isReverse: Boolean) {
+                        super.onAnimationEnd(animation, isReverse)
+                        destory()
+                    }
+                })
+                mAnim?.start()
+            }
+
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+
+    }
+
+    // 绑定当前页面生命周期
+    private fun addLoopLifecycleObserver() {
+        mOwner?.lifecycle?.addObserver(this)
+    }
+
+    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
+    fun onDestroy() {
+        mAnim?.cancel()
+        destory()
+    }
+
+    private fun destory() {
+        try {
+            mHandlerThread?.quitSafely()
+
+            mAnim = null
+            mOwner = null
+            mHandler = null
+            mHandlerThread = null
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
+
+}

+ 8 - 0
cs_cptServices/src/main/res/drawable/shape_profile_red_round3.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <solid android:color="@color/profile_red" />
+
+    <corners android:radius="@dimen/d_3dp" />
+
+</shape>