Ver Fonte

1.优化webview加载

王鹏鹏 há 2 anos atrás
pai
commit
ca940db993

+ 1 - 0
.idea/misc.xml

@@ -58,6 +58,7 @@
         <entry key="..\:/workspace/hcp-pad/healthconsultation/src/main/res/drawable/bg_payment_timing.xml" value="0.155" />
         <entry key="..\:/workspace/hcp-pad/healthconsultation/src/main/res/drawable/bg_payment_unselected.xml" value="0.155" />
         <entry key="..\:/workspace/hcp-pad/healthconsultation/src/main/res/drawable/bg_recommended_doctor.xml" value="0.155" />
+        <entry key="..\:/workspace/hcp-pad/healthconsultation/src/main/res/drawable/bg_record_cancel_order.xml" value="0.155" />
         <entry key="..\:/workspace/hcp-pad/healthconsultation/src/main/res/drawable/bg_select_pic.xml" value="0.155" />
         <entry key="..\:/workspace/hcp-pad/healthconsultation/src/main/res/drawable/bg_select_pic_item.xml" value="0.155" />
         <entry key="..\:/workspace/hcp-pad/healthconsultation/src/main/res/drawable/bg_selected__hospital.xml" value="0.155" />

+ 34 - 2
healthconsultation/src/main/java/com/yingyang/healthconsultation/adapter/ConsultationRecordAdapter.kt

@@ -5,45 +5,77 @@ import com.yingyang.healthconsultation.databinding.ItemConsultationRecordBinding
 import com.yingyang.healthconsultation.entity.Record
 import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
 import com.yingyangfly.baselib.db.DoctorBean
+import com.yingyangfly.baselib.ext.setOnSingleClickListener
 import com.yingyangfly.baselib.ext.setTextColorResource
 import com.yingyangfly.baselib.ext.show
+import com.yingyangfly.baselib.ext.timeFormat
 
 /**
  * 问诊记录adapter
  */
 class ConsultationRecordAdapter(override val layoutId: Int = R.layout.item_consultation_record) :
     BaseDataBindingAdapter<DoctorBean, ItemConsultationRecordBinding>() {
+
+    var onLeftClickListener: ((bean: DoctorBean) -> Unit)? = null
+
+
+    var onRightClickListener: ((bean: DoctorBean) -> Unit)? = null
+
     override fun onBindViewHolder(
         binding: ItemConsultationRecordBinding,
         item: DoctorBean,
         position: Int
     ) {
         binding.data = item
+        binding.tvTime.text = timeFormat(item.createTime)
         if (item.status.isNullOrEmpty().not()) {
             when (item.status) {
                 "0" -> {
                     //0未支付
                     binding.btnEvaluate.show(true)
                     binding.btnRecord.show(true)
-                    binding.btnEvaluate.setBackgroundResource(R.drawable.bg_cancel_order)
+                    binding.btnEvaluate.setBackgroundResource(R.drawable.bg_record_cancel_order)
                     binding.btnEvaluate.setTextColorResource(R.color.color_FFA5A5A5)
                     binding.btnEvaluate.text = "取消订单"
                     binding.btnRecord.text = "去支付"
                 }
                 "1" -> {
                     //1待接诊
+                    binding.btnEvaluate.show(false)
+                    binding.btnRecord.show(true)
+                    binding.btnRecord.text = "待医生接诊"
                 }
                 "2" -> {
                     //2接诊中
+                    binding.btnEvaluate.show(false)
+                    binding.btnRecord.show(true)
+                    binding.btnRecord.text = "联系医生"
                 }
                 "3" -> {
-                    //3已拒诊 4已完成
+                    //3已拒诊
+                    binding.btnEvaluate.show(false)
+                    binding.btnRecord.show(true)
+                    binding.btnRecord.text = "重新问诊"
                 }
                 "4" -> {
                     //4已完成
+                    binding.btnEvaluate.show(true)
+                    binding.btnRecord.show(true)
+                    binding.btnEvaluate.setBackgroundResource(R.drawable.bg_cancel_order)
+                    binding.btnEvaluate.setTextColorResource(R.color.color_FF4A76FF)
+                    binding.btnEvaluate.text = "评价"
+                    binding.btnRecord.text = "查看问诊记录"
                 }
             }
         }
 
+        binding.btnRecord.setOnSingleClickListener {
+            onLeftClickListener?.invoke(item)
+        }
+
+        binding.btnRecord.setOnSingleClickListener {
+            onRightClickListener?.invoke(item)
+        }
+
     }
 }

+ 10 - 0
healthconsultation/src/main/java/com/yingyang/healthconsultation/net/HealthConsultationApiService.kt

@@ -5,6 +5,8 @@ import com.yingyang.healthconsultation.entity.UserInfoBean
 import com.yingyangfly.baselib.bean.PayImageBean
 import com.yingyangfly.baselib.db.DoctorBean
 import com.yingyangfly.baselib.net.BaseResp
+import com.yingyangfly.baselib.net.XBaseEntity
+import io.reactivex.Observable
 import okhttp3.MultipartBody
 import okhttp3.RequestBody
 import retrofit2.http.Body
@@ -58,4 +60,12 @@ interface HealthConsultationApiService {
     @POST("medical_consultation/my/list")
     suspend fun getConsultationRecordList(): BaseResp<List<DoctorBean>>
 
+    /**
+     * 取消支付
+     */
+    @POST("app/pay/delPayOrder")
+    suspend fun delPayOrder(
+        @Query("orderNo") orderNo: String
+    ): BaseResp<String>
+
 }

+ 60 - 3
healthconsultation/src/main/java/com/yingyang/healthconsultation/record/ConsultationRecordActivity.kt

@@ -8,9 +8,7 @@ import com.yingyang.healthconsultation.R
 import com.yingyang.healthconsultation.adapter.ConsultationRecordAdapter
 import com.yingyang.healthconsultation.databinding.ActivityConsultationRecordBinding
 import com.yingyangfly.baselib.db.DoctorBean
-import com.yingyangfly.baselib.ext.getEndAnimation
-import com.yingyangfly.baselib.ext.getScaleAnimation
-import com.yingyangfly.baselib.ext.show
+import com.yingyangfly.baselib.ext.*
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
 
@@ -29,9 +27,68 @@ class ConsultationRecordActivity :
         binding {
             rvRecord.adapter = adapter
             adapter.setData(records)
+            adapter.onLeftClickListener = {
+                when (it.status) {
+                    "0" -> {
+                        //0未支付
+
+                    }
+                    "1" -> {
+                        //1待接诊
+                        cancleOrder(it)
+                    }
+                    "2" -> {
+                        //2接诊中
+
+                    }
+                    "3" -> {
+                        //3已拒诊
+
+                    }
+                    "4" -> {
+                        //4已完成
+
+                    }
+                }
+            }
+
+            adapter.onRightClickListener = {
+                when (it.status) {
+                    "0" -> {
+                        //0未支付
+                        cancleOrder(it)
+                    }
+                    "1" -> {
+                        //1待接诊
+                    }
+                    "2" -> {
+                        //2接诊中
+
+                    }
+                    "3" -> {
+                        //3已拒诊
+
+                    }
+                    "4" -> {
+                        //4已完成
+
+                    }
+                }
+            }
         }
     }
 
+    /**
+     * 取消订单
+     */
+    private fun cancleOrder(bean: DoctorBean) {
+        viewModel.delPayOrder("", fail = {
+            it.toast()
+        }, success = {
+            loadData()
+        })
+    }
+
     @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
         binding.backLayout.setOnTouchListener(this)

+ 11 - 0
healthconsultation/src/main/java/com/yingyang/healthconsultation/record/ConsultationRecordViewModel.kt

@@ -18,4 +18,15 @@ class ConsultationRecordViewModel : BaseViewModel() {
         success,
         fail
     )
+
+    fun delPayOrder(
+        orderNo: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: String?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        HEALTHCONSULTATION_API.delPayOrder(orderNo)
+    }.runUI(
+        success,
+        fail
+    )
 }

+ 10 - 0
healthconsultation/src/main/res/drawable/bg_record_cancel_order.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_13px" />
+    <stroke
+        android:width="@dimen/divider_1px"
+        android:color="@color/color_FFA5A5A5" />
+    <solid android:color="@android:color/white" />
+</shape>

+ 0 - 1
healthconsultation/src/main/res/layout/item_consultation_record.xml

@@ -82,7 +82,6 @@
                 android:layout_height="wrap_content"
                 android:layout_marginStart="@dimen/divider_27px"
                 android:layout_marginTop="@dimen/divider_12px"
-                android:text="@{data.createTime}"
                 android:textColor="@color/color_FF333333"
                 android:textSize="@dimen/divider_24px"
                 app:layout_constraintStart_toEndOf="@+id/imageHead"

+ 1 - 0
healthconsultation/src/main/res/values/colors.xml

@@ -28,4 +28,5 @@
     <color name="color_ff4571ff" tools:ignore="ResourceName">#ff4571ff</color>
     <color name="color_ff8fafff" tools:ignore="ResourceName">#ff8fafff</color>
     <color name="color_FFA5A5A5" tools:ignore="ResourceName">#FFA5A5A5</color>
+    <color name="color_FF4A76FF" tools:ignore="ResourceName">#FF4A76FF</color>
 </resources>

+ 1 - 1
tuicore/build/intermediates/incremental/packageDebugResources/compile-file-map.properties

@@ -1,4 +1,4 @@
-#Mon Sep 11 17:56:33 CST 2023
+#Mon Sep 11 18:46:47 CST 2023
 D\:\\workspace\\hcp-pad\\tuicore\\src\\main\\res\\drawable\\core_permission_dialog_bg.xml=D\:\\workspace\\hcp-pad\\tuicore\\build\\intermediates\\packaged_res\\debug\\drawable\\core_permission_dialog_bg.xml
 D\:\\workspace\\hcp-pad\\tuicore\\src\\main\\res\\drawable\\core_list_divider.xml=D\:\\workspace\\hcp-pad\\tuicore\\build\\intermediates\\packaged_res\\debug\\drawable\\core_list_divider.xml
 D\:\\workspace\\hcp-pad\\tuicore\\src\\main\\res\\layout\\permission_activity_layout.xml=D\:\\workspace\\hcp-pad\\tuicore\\build\\intermediates\\packaged_res\\debug\\layout\\permission_activity_layout.xml

+ 14 - 3
webview/src/main/java/com/yingyangfly/webview/BridgeWebActivity.kt

@@ -62,6 +62,9 @@ class BridgeWebActivity : AppCompatActivity() {
         webSettings.setAppCacheEnabled(true)
         webSettings.allowUniversalAccessFromFileURLs = true
         webSettings.cacheMode = WebSettings.LOAD_DEFAULT
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
+        }
         //视频自动播放
         webSettings.mediaPlaybackRequiresUserGesture = false
         /**必须的设置, 访问网页版的H5,一定要设置。该方法是设置支持DomStorage,
@@ -81,8 +84,16 @@ class BridgeWebActivity : AppCompatActivity() {
                 view: WebView?,
                 request: WebResourceRequest?
             ): Boolean {
-                url.let {
-                    view?.loadUrl(it)
+                if (request != null) {
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+                        view?.loadUrl(request.url.toString())
+                    } else {
+                        view?.loadUrl(request.toString()!!)
+                    }
+                } else {
+                    url.let {
+                        view?.loadUrl(it)
+                    }
                 }
                 return true
             }
@@ -126,8 +137,8 @@ class BridgeWebActivity : AppCompatActivity() {
      */
     private fun destoryWebView() {
         binding.webView.stopLoading() // 停止加载
-        binding.webView.clearHistory() // 清楚历史
         binding.webView.clearCache(true) // 清除缓存
+        binding.webView.clearHistory() // 清楚历史
         binding.webView.loadUrl("about:blank");
         binding.webView.onPause();
         binding.webView.removeAllViews() // 移除webview上子view