Browse Source

1.添加获取其他测评历史记录功能UI

王鹏鹏 2 years ago
parent
commit
1359b25912

+ 66 - 0
baselib/src/main/java/com/yingyangfly/baselib/mvvm/BaseTvMVVMActivity.kt

@@ -0,0 +1,66 @@
+package com.yingyangfly.baselib.mvvm
+
+import androidx.databinding.ViewDataBinding
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.lifecycleScope
+import com.yingyangfly.baselib.base.BaseTvActivity
+import com.yingyangfly.baselib.bean.StatusViewType
+import com.yingyangfly.baselib.ext.logi
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.collect
+import kotlinx.coroutines.launch
+
+private const val TAG = "BaseTvMVVMActivity"
+
+abstract class BaseTvMVVMActivity<DB : ViewDataBinding, VM : BaseViewModel> : BaseTvActivity<DB>() {
+    val viewModel: VM by lazy {
+        ViewModelProvider(this).get(getVmClass(this))
+    }
+
+    fun launch(block: suspend CoroutineScope.() -> Unit) {
+        lifecycleScope.launch {
+            block()
+        }
+    }
+
+    override fun initMVVM() {
+        super.initMVVM()
+        launch {
+            viewModel.loadingStateFlow.collect {
+                when (it) {
+                    StatusViewType.DEFAULT -> {
+                        "$TAG -->MVVM:DEFAULT".logi()
+                    }
+                    StatusViewType.LOADING -> {
+                        "$TAG -->MVVM:LOADING".logi()
+                        showLoading()
+                    }
+                    StatusViewType.DISMISS -> {
+                        "$TAG -->MVVM:DISMISS".logi()
+                        dismissLoading()
+                        finishLoadMore()
+                        finishRefresh()
+                    }
+                    StatusViewType.EMPTY -> {
+                        "$TAG -->MVVM:EMPTY".logi()
+                    }
+                    StatusViewType.ERROR -> {
+                        "$TAG -->MVVM:ERROR".logi()
+                        onErrorView()
+                    }
+                    else -> {
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 加载错误失败要显示的布局
+     */
+    open fun onErrorView() {
+        dismissLoading()
+        finishLoadMore()
+        finishRefresh()
+    }
+}

+ 1 - 1
home/src/main/java/com/yingyangfly/home/activity/HomeActivity.kt

@@ -476,7 +476,7 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>(), Vie
 
                     R.id.tvProfessionalEvaluation -> {
                         //专业测评
-                        JumpUtil.jumpActivity(RouterUrlCommon.evaluation, mContext)
+                        JumpUtil.jumpActivity(RouterUrlCommon.hospitalEvaluation, mContext)
                     }
 
                     R.id.tvHealthCounseling -> {

+ 1 - 1
home/src/main/java/com/yingyangfly/home/evaluation/BindingEvaluationActivity.kt

@@ -92,7 +92,7 @@ class BindingEvaluationActivity :
      */
     private fun loginOut() {
         viewModel.logout(fail = {
-            "退出失败,请重试".toast()
+            "解绑失败,请重试".toast()
         }, success = {
             runOnUiThread {
                 binding.tvPhone.text = ""

+ 110 - 5
home/src/main/java/com/yingyangfly/home/hospital/HospitalActivity.kt

@@ -1,16 +1,29 @@
 package com.yingyangfly.home.hospital
 
+import android.annotation.SuppressLint
+import android.text.TextUtils
+import android.view.MotionEvent
+import android.view.View
 import com.alibaba.android.arouter.facade.annotation.Route
+import com.yingyang.home.R
 import com.yingyang.home.databinding.ActivityHospitalBinding
-import com.yingyangfly.baselib.base.BaseTvActivity
+import com.yingyangfly.baselib.dialog.BindingPhoneDialog
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
+import com.yingyangfly.baselib.ext.show
+import com.yingyangfly.baselib.ext.toast
+import com.yingyangfly.baselib.mvvm.BaseTvMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
+import com.yingyangfly.baselib.utils.JumpUtil
+import com.yingyangfly.baselib.utils.User
 import com.youth.banner.indicator.RectangleIndicator
 
 /**
  * 医院电视端首页
  */
 @Route(path = RouterUrlCommon.hospitalEvaluation)
-class HospitalActivity : BaseTvActivity<ActivityHospitalBinding>() {
+class HospitalActivity : BaseTvMVVMActivity<ActivityHospitalBinding, HospitalViewModel>(),
+    View.OnTouchListener {
 
     private var str1 = "https://15463311.s21i.faiusr.com/4/ABUIABAEGAAgiOzT0AUo6vfflwQwgA84ggQ.png"
     private var str2 =
@@ -27,16 +40,108 @@ class HospitalActivity : BaseTvActivity<ActivityHospitalBinding>() {
         imageList.add(str3)
         imageList.add(str4)
         adapterGuide = GuidePageAdapter(imageList, mContext)
-        binding.guide.addBannerLifecycleObserver(this)
-            ?.setAdapter(adapterGuide)?.indicator = RectangleIndicator(mContext)
+        binding.guide.addBannerLifecycleObserver(this)?.setAdapter(adapterGuide)?.indicator =
+            RectangleIndicator(mContext)
 
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
-
+        binding {
+            loginOutLayout.setOnTouchListener(this@HospitalActivity)
+            searchLayout.setOnTouchListener(this@HospitalActivity)
+            otherEvaluationsLayout.setOnTouchListener(this@HospitalActivity)
+            mocaLayout.setOnTouchListener(this@HospitalActivity)
+            mmseLayout.setOnTouchListener(this@HospitalActivity)
+        }
     }
 
     override fun initData() {
 
     }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.loginOutLayout || v.id == R.id.searchLayout || v.id == R.id.otherEvaluationsLayout || v.id == R.id.mocaLayout || v.id == R.id.mmseLayout) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                when (v.id) {
+                    R.id.loginOutLayout -> {
+                        loginOut()
+                    }
+
+                    R.id.searchLayout -> {
+                        JumpUtil.jumpActivity(RouterUrlCommon.evaluationHistory)
+                    }
+
+                    R.id.otherEvaluationsLayout -> {
+                        JumpUtil.jumpActivity(RouterUrlCommon.mocaEvaluation)
+                    }
+
+                    R.id.mocaLayout -> {
+                        JumpUtil.jumpActivity(RouterUrlCommon.mocaEvaluation)
+                    }
+
+                    R.id.mmseLayout -> {
+                        JumpUtil.jumpActivity(RouterUrlCommon.mmseEvaluation)
+                    }
+                }
+            }
+
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.loginOutLayout || v.id == R.id.searchLayout || v.id == R.id.otherEvaluationsLayout || v.id == R.id.mocaLayout || v.id == R.id.mmseLayout) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
+    override fun onResume() {
+        super.onResume()
+        if (TextUtils.isEmpty(User.getToken())) {
+            binding.imageLoginOut.show(false)
+            binding.tvLoginOut.show(false)
+            showBindingPhoneDialog()
+        } else {
+            binding.imageLoginOut.show(true)
+            binding.tvLoginOut.show(true)
+        }
+    }
+
+    /**
+     * 退出登录
+     */
+    private fun loginOut() {
+        viewModel.logout(fail = {
+            "解绑失败,请重试".toast()
+        }, success = {
+            runOnUiThread {
+                binding.imageLoginOut.show(false)
+                binding.tvLoginOut.show(false)
+                User.saveToken("")
+                User.savePhone("")
+                showBindingPhoneDialog()
+            }
+        })
+    }
+
+    /**
+     * 展示绑定手机号弹窗
+     */
+    @SuppressLint("SetTextI18n")
+    private fun showBindingPhoneDialog() {
+        val bindingPhoneDialog = BindingPhoneDialog()
+        bindingPhoneDialog.onDialogClickListener = {
+            binding.imageLoginOut.show(true)
+            binding.tvLoginOut.show(true)
+        }
+        bindingPhoneDialog.show(supportFragmentManager, "bindingPhoneDialog")
+    }
 }

+ 21 - 0
home/src/main/java/com/yingyangfly/home/hospital/HospitalViewModel.kt

@@ -0,0 +1,21 @@
+package com.yingyangfly.home.hospital
+
+import com.yingyangfly.baselib.mvvm.BaseViewModel
+import com.yingyangfly.home.net.HOME_API
+
+/**
+ * @author 王鹏鹏
+ * @description 工作台页面ViewModel
+ */
+class HospitalViewModel : BaseViewModel() {
+
+    fun logout(
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: String?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        HOME_API.logout()
+    }.runUI(
+        success,
+        fail
+    )
+}