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?
|
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.LocationResourceBean
|
||||||
import com.xjjk.healthyclients.bean.emergency.OrderThroughBean
|
import com.xjjk.healthyclients.bean.emergency.OrderThroughBean
|
||||||
import com.xjjk.healthyclients.bean.emergency.initUserOrderPageBean
|
import com.xjjk.healthyclients.bean.emergency.initUserOrderPageBean
|
||||||
|
import com.xjjk.healthyclients.bean.home.ProposalBean
|
||||||
import com.xjjk.healthyclients.data.bean.ApiResponse
|
import com.xjjk.healthyclients.data.bean.ApiResponse
|
||||||
import okhttp3.RequestBody
|
import okhttp3.RequestBody
|
||||||
import retrofit2.http.Body
|
import retrofit2.http.Body
|
||||||
@@ -82,5 +83,10 @@ interface EmergencyApi {
|
|||||||
*/
|
*/
|
||||||
@GET("/health-emergency/api/emergency/createGroupMag")
|
@GET("/health-emergency/api/emergency/createGroupMag")
|
||||||
suspend fun getIMGroupInfo(@QueryMap params: MutableMap<String, Any?>): ApiResponse<EmergencyGroupInfo>
|
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.LocationResourceBean
|
||||||
import com.xjjk.healthyclients.bean.emergency.OrderThroughBean
|
import com.xjjk.healthyclients.bean.emergency.OrderThroughBean
|
||||||
import com.xjjk.healthyclients.bean.emergency.initUserOrderPageBean
|
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.api.EmergencyApi
|
||||||
import com.xjjk.healthyclients.data.bean.ApiResponse
|
import com.xjjk.healthyclients.data.bean.ApiResponse
|
||||||
import com.xjjk.healthyclients.retrofit.RetrofitManager
|
import com.xjjk.healthyclients.retrofit.RetrofitManager
|
||||||
@@ -107,8 +108,6 @@ object EmergencyRepository : BaseRepository() {
|
|||||||
return CommonRepository.getCommonSettingMenuList("category")
|
return CommonRepository.getCommonSettingMenuList("category")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
suspend fun getIMGroupInfo(groupName: String, longitude: Double,
|
suspend fun getIMGroupInfo(groupName: String, longitude: Double,
|
||||||
latitude: Double): ApiResponse<EmergencyGroupInfo> {
|
latitude: Double): ApiResponse<EmergencyGroupInfo> {
|
||||||
var map = mutableMapOf<String, Any?>()
|
var map = mutableMapOf<String, Any?>()
|
||||||
@@ -118,4 +117,7 @@ object EmergencyRepository : BaseRepository() {
|
|||||||
return apiCall { service.getIMGroupInfo(map) }
|
return apiCall { service.getIMGroupInfo(map) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun getProposalInfo(): ApiResponse<ProposalBean> {
|
||||||
|
return apiCall { service.getProposalInfo() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -209,9 +209,13 @@ class HomeFragment :
|
|||||||
}
|
}
|
||||||
|
|
||||||
R.id.img_right -> {
|
R.id.img_right -> {
|
||||||
val bundle = Bundle()
|
if (DataStoreManager.isLogin()) {
|
||||||
bundle.putString("title", "一人一案")
|
val bundle = Bundle()
|
||||||
toActivity(ProposalActivity::class.java, bundle)
|
bundle.putString("title", "一人一案")
|
||||||
|
toActivity(ProposalActivity::class.java, bundle)
|
||||||
|
} else {
|
||||||
|
startLoginActivity(requireContext())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.home_head_tab1 -> {
|
R.id.home_head_tab1 -> {
|
||||||
|
|||||||
@@ -2,10 +2,16 @@ package com.xjjk.healthyclients.ui.activity
|
|||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
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.R
|
||||||
import com.xjjk.healthyclients.base.BaseVMBActivity
|
import com.xjjk.healthyclients.base.BaseVMBActivity
|
||||||
|
import com.xjjk.healthyclients.bean.home.ProposalBean
|
||||||
import com.xjjk.healthyclients.databinding.ActivityProposalBinding
|
import com.xjjk.healthyclients.databinding.ActivityProposalBinding
|
||||||
import com.xjjk.healthyclients.ui.viewmodel.ProposalViewModel
|
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 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() {
|
override fun bindEvent() {
|
||||||
|
|||||||
@@ -1,13 +1,32 @@
|
|||||||
package com.xjjk.healthyclients.ui.viewmodel
|
package com.xjjk.healthyclients.ui.viewmodel
|
||||||
|
|
||||||
import com.xjjk.healthyclients.base.viewmodel.BaseViewModel
|
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
|
* 一人一案(健康档案)ViewModel
|
||||||
*/
|
*/
|
||||||
class ProposalViewModel : BaseViewModel() {
|
class ProposalViewModel : BaseViewModel() {
|
||||||
|
var proposalInfo = MutableStateFlow<ProposalBean?>(null)
|
||||||
|
|
||||||
override fun init() {
|
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