feat(chat): 添加群聊右侧导航抽屉和健康档案功能
- 集成 androidx.drawerlayout:drawerlayout:1.2.0 依赖 - 新增 chat_activity_with_navigation.xml 布局文件实现抽屉布局 - 新增 chat_navigation_header.xml 头部布局显示群成员信息 - 在 TUIBaseChatActivity 中实现抽屉打开关闭功能 - 修改 InputView 中的群视频通话逻辑,针对特定包名使用新方案 - 添加 ProposalBean 数据模型用于健康档案信息 - 实现 ProposalActivity 页面展示患者健康档案详情 - 添加 EmergencyApi 接口获取健康档案数据 - 在 HomeFragment 中增加登录验证跳转健康档案页面 - 完善群聊界面右滑抽屉显示群成员列表功能
This commit is contained in:
@@ -58,3 +58,70 @@ data class HomeBankBean(
|
||||
val totalPoints: String?
|
||||
)
|
||||
|
||||
data class ProposalBean(
|
||||
val id: String,
|
||||
val empId: String,
|
||||
val name: String,
|
||||
val age: Int,
|
||||
val sexCode: String?,
|
||||
val workUnit: String?,
|
||||
val careLiaisonName: String?,
|
||||
val idNo: String,
|
||||
val phone: String,
|
||||
val careStatus: String,
|
||||
val dataLevel: Int,
|
||||
val negativeList: String,
|
||||
val caseInfo: String,
|
||||
val riskLevel: String,
|
||||
val year: String,
|
||||
val flagFat: Int,
|
||||
val bmi: String,
|
||||
val height: String,
|
||||
val weight: String,
|
||||
val targetWeight: String,
|
||||
val targetBmi: String,
|
||||
val bmiCurrent: String,
|
||||
val waistNew: String,
|
||||
val bodyFatPercentNew: String,
|
||||
val weightRiskType: String,
|
||||
val hypertension: Int,
|
||||
val systolicPressureAvg: String,
|
||||
val systolicPressureTarget: String,
|
||||
val diastolicPressureAvg: String,
|
||||
val diastolicPressureTarget: String,
|
||||
val diabetes: Int,
|
||||
val glu: String,
|
||||
val bloodSugarTarget: String,
|
||||
val ldl: String,
|
||||
val ldlTarget: String,
|
||||
val tc: String,
|
||||
val tcTarget: String,
|
||||
val tg: String,
|
||||
val tgTarget: String,
|
||||
val uricAcid: String,
|
||||
val uricAcidTarget: String,
|
||||
val homocysteine: String,
|
||||
val homocysteineTarget: String,
|
||||
val bloodK: String,
|
||||
val chd: String,
|
||||
val cvd: String,
|
||||
val af: String,
|
||||
val ca: String,
|
||||
val indicatorListStr: String,
|
||||
val indicatorListStrOrigin: String,
|
||||
val screeningProjects: String,
|
||||
val treatPlan: String,
|
||||
val treatPlanResponse: String,
|
||||
val dietSuggestion: String,
|
||||
val dietSuggestionResponse: String,
|
||||
val sportGuide: String,
|
||||
val sportGuideResponse: String,
|
||||
val lifeManage: String,
|
||||
val lifeManageResponse: String,
|
||||
val cabinOpinion: String,
|
||||
val cabinOpinionTime: String,
|
||||
val cabinOpinionUserName: String,
|
||||
val expertOpinion: String,
|
||||
val expertOpinionTime: String,
|
||||
val expertOpinionUserName: String
|
||||
)
|
||||
@@ -8,6 +8,7 @@ import com.xjjk.healthyclients.bean.emergency.HospitalBean
|
||||
import com.xjjk.healthyclients.bean.emergency.LocationResourceBean
|
||||
import com.xjjk.healthyclients.bean.emergency.OrderThroughBean
|
||||
import com.xjjk.healthyclients.bean.emergency.initUserOrderPageBean
|
||||
import com.xjjk.healthyclients.bean.home.ProposalBean
|
||||
import com.xjjk.healthyclients.data.bean.ApiResponse
|
||||
import okhttp3.RequestBody
|
||||
import retrofit2.http.Body
|
||||
@@ -82,5 +83,10 @@ interface EmergencyApi {
|
||||
*/
|
||||
@GET("/health-emergency/api/emergency/createGroupMag")
|
||||
suspend fun getIMGroupInfo(@QueryMap params: MutableMap<String, Any?>): ApiResponse<EmergencyGroupInfo>
|
||||
/**
|
||||
* 获取一人一案
|
||||
*/
|
||||
@GET("/health-emergency/emergency/LargeScreenNew/onePersonCase")
|
||||
suspend fun getProposalInfo(): ApiResponse<ProposalBean>
|
||||
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import com.xjjk.healthyclients.bean.emergency.HospitalBean
|
||||
import com.xjjk.healthyclients.bean.emergency.LocationResourceBean
|
||||
import com.xjjk.healthyclients.bean.emergency.OrderThroughBean
|
||||
import com.xjjk.healthyclients.bean.emergency.initUserOrderPageBean
|
||||
import com.xjjk.healthyclients.bean.home.ProposalBean
|
||||
import com.xjjk.healthyclients.data.api.EmergencyApi
|
||||
import com.xjjk.healthyclients.data.bean.ApiResponse
|
||||
import com.xjjk.healthyclients.retrofit.RetrofitManager
|
||||
@@ -107,8 +108,6 @@ object EmergencyRepository : BaseRepository() {
|
||||
return CommonRepository.getCommonSettingMenuList("category")
|
||||
}
|
||||
|
||||
|
||||
|
||||
suspend fun getIMGroupInfo(groupName: String, longitude: Double,
|
||||
latitude: Double): ApiResponse<EmergencyGroupInfo> {
|
||||
var map = mutableMapOf<String, Any?>()
|
||||
@@ -118,4 +117,7 @@ object EmergencyRepository : BaseRepository() {
|
||||
return apiCall { service.getIMGroupInfo(map) }
|
||||
}
|
||||
|
||||
suspend fun getProposalInfo(): ApiResponse<ProposalBean> {
|
||||
return apiCall { service.getProposalInfo() }
|
||||
}
|
||||
}
|
||||
@@ -209,9 +209,13 @@ class HomeFragment :
|
||||
}
|
||||
|
||||
R.id.img_right -> {
|
||||
val bundle = Bundle()
|
||||
bundle.putString("title", "一人一案")
|
||||
toActivity(ProposalActivity::class.java, bundle)
|
||||
if (DataStoreManager.isLogin()) {
|
||||
val bundle = Bundle()
|
||||
bundle.putString("title", "一人一案")
|
||||
toActivity(ProposalActivity::class.java, bundle)
|
||||
} else {
|
||||
startLoginActivity(requireContext())
|
||||
}
|
||||
}
|
||||
|
||||
R.id.home_head_tab1 -> {
|
||||
|
||||
@@ -2,10 +2,16 @@ package com.xjjk.healthyclients.ui.activity
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import com.xjjk.healthyclients.R
|
||||
import com.xjjk.healthyclients.base.BaseVMBActivity
|
||||
import com.xjjk.healthyclients.bean.home.ProposalBean
|
||||
import com.xjjk.healthyclients.databinding.ActivityProposalBinding
|
||||
import com.xjjk.healthyclients.ui.viewmodel.ProposalViewModel
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
* 一人一案(健康档案)页面
|
||||
@@ -20,6 +26,83 @@ class ProposalActivity :
|
||||
|
||||
override fun initData() {
|
||||
// 加载健康档案数据
|
||||
|
||||
}
|
||||
override fun createObserve() {
|
||||
super.createObserve()
|
||||
lifecycleScope.launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
mViewModel.proposalInfo.collectLatest {
|
||||
setProposalInfo(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun setProposalInfo(proposalBean: ProposalBean?) {
|
||||
proposalBean?.let {
|
||||
// 患者信息
|
||||
mBinding.tvPatientName.text = it.name
|
||||
mBinding.tvPatientGenderAge.text = it.sexCode + " · " + it.age
|
||||
mBinding.tvDocumentStatus.text = it.careStatus
|
||||
mBinding.tvPatientCompany.text = it.workUnit
|
||||
mBinding.tvIdNumber.text = it.idNo
|
||||
mBinding.tvPhone.text = it.phone
|
||||
|
||||
// 关爱管理信息
|
||||
mBinding.tvLevel.text = it.dataLevel.toString()
|
||||
mBinding.tvLiaisonName.text = it.careLiaisonName
|
||||
mBinding.tvNegativeList.text = it.negativeList
|
||||
|
||||
// 档案与标签
|
||||
mBinding.tvFlagFat.text = it.flagFat.toString()
|
||||
mBinding.tvWeight.text = it.weight
|
||||
mBinding.tvHeight.text = it.height
|
||||
mBinding.tvBmi.text = it.bmiCurrent
|
||||
mBinding.tvStandardWeight.text = it.targetWeight
|
||||
|
||||
// 心血管健康
|
||||
mBinding.tvBloodPressure.text = it.hypertension.toString()
|
||||
mBinding.tvSystolicAvg.text = it.systolicPressureAvg
|
||||
mBinding.tvSystolicTarget.text = it.systolicPressureTarget
|
||||
mBinding.tvSystolic.text = it.systolicPressureAvg
|
||||
mBinding.tvDiastolicAvg.text = it.diastolicPressureAvg
|
||||
mBinding.tvDiastolicTarget.text = it.diastolicPressureTarget
|
||||
mBinding.tvDiastolic.text = it.diastolicPressureAvg
|
||||
|
||||
// 代谢指标
|
||||
mBinding.tvDiabetes.text = it.diabetes.toString()
|
||||
mBinding.llDiabetesTag.visibility = if (it.diabetes != 0) View.VISIBLE else View.GONE
|
||||
mBinding.tvFbsValue.text = it.glu
|
||||
mBinding.tvFbsTarget.text = it.bloodSugarTarget
|
||||
mBinding.tvFbsCurrent.text = it.glu
|
||||
|
||||
// 血脂四项
|
||||
mBinding.tvTcValue.text = it.tc
|
||||
mBinding.tvTcTarget.text = it.tcTarget
|
||||
mBinding.tvTcCurrent.text = it.tc
|
||||
mBinding.tvTgValue.text = it.tg
|
||||
mBinding.tvTgTarget.text = it.tgTarget
|
||||
mBinding.tvTgCurrent.text = it.tg
|
||||
mBinding.tvLdlValue.text = it.ldl
|
||||
mBinding.tvLdlTarget.text = it.ldlTarget
|
||||
mBinding.tvLdlCurrent.text = it.ldl
|
||||
|
||||
// 肾脏与骨骼代谢
|
||||
mBinding.tvUaValue.text = it.uricAcid
|
||||
mBinding.tvUaTarget.text = it.uricAcidTarget
|
||||
mBinding.tvUaCurrent.text = it.uricAcid
|
||||
|
||||
// 特殊代谢指标
|
||||
mBinding.tvHcyValue.text = it.homocysteine
|
||||
mBinding.tvHcyTarget.text = it.homocysteineTarget
|
||||
mBinding.tvHcyCurrent.text = it.homocysteine
|
||||
|
||||
// 医疗意见与记录
|
||||
mBinding.tvCabinTime.text = it.cabinOpinionTime
|
||||
mBinding.tvCabinReporter.text = it.cabinOpinionUserName
|
||||
mBinding.tvDoctorTime.text = it.expertOpinionTime
|
||||
mBinding.tvDoctorReporter.text = it.expertOpinionUserName
|
||||
}
|
||||
}
|
||||
|
||||
override fun bindEvent() {
|
||||
|
||||
@@ -1,13 +1,32 @@
|
||||
package com.xjjk.healthyclients.ui.viewmodel
|
||||
|
||||
import com.xjjk.healthyclients.base.viewmodel.BaseViewModel
|
||||
import com.xjjk.healthyclients.bean.home.ProposalBean
|
||||
import com.xjjk.healthyclients.data.repository.EmergencyRepository
|
||||
import com.xjjk.healthyclients.superfuntion.handleRequest
|
||||
import com.xjjk.healthyclients.superfuntion.launch
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
|
||||
/**
|
||||
* 一人一案(健康档案)ViewModel
|
||||
*/
|
||||
class ProposalViewModel : BaseViewModel() {
|
||||
var proposalInfo = MutableStateFlow<ProposalBean?>(null)
|
||||
|
||||
override fun init() {
|
||||
// 初始化逻辑
|
||||
getProposalInfo()
|
||||
}
|
||||
|
||||
fun getProposalInfo() {
|
||||
launch({
|
||||
handleRequest(
|
||||
EmergencyRepository.getProposalInfo(),
|
||||
successBlock = {
|
||||
it.result?.let { it1 ->
|
||||
proposalInfo.emit(it1)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user