feat(chat): 添加群成员职位显示和更新功能

- 在 AddMemberActivity 中为 ExpertBean 和 EmployeeBean 添加职位获取方法
- 扩展 AddMemberAdapter 以显示成员职位信息
- 添加 ExpertBean 的 post_dictText 字段用于职位文本显示
- 更新群组聊天界面布局以显示成员职位
- 添加更新群成员按钮和相关功能实现
- 优化群组提示监听器的时序问题处理
- 修改提案页面布局中的占位文本为实际数据绑定
- 添加应急工单对话框的新样式和相关资源文件
This commit is contained in:
2026-07-22 17:14:44 +08:00
parent c504f23052
commit 41fadb7b75
22 changed files with 619 additions and 417 deletions
@@ -85,13 +85,16 @@ data class ProposalBean(
val bodyFatPercentNew: String, val bodyFatPercentNew: String,
val weightRiskType: String, val weightRiskType: String,
val hypertension: Int, val hypertension: Int,
val systolicPressureAvg: String, val systolicPressureAvg: String?,
val systolicPressureTarget: String, val systolicPressureTarget: String?,
val diastolicPressureAvg: String, val systolicPressureCurrent: String?,
val diastolicPressureTarget: String, val diastolicPressureAvg: String?,
val diastolicPressureTarget: String?,
val diastolicPressureCurrent: String?,
val diabetes: Int, val diabetes: Int,
val glu: String, val glu: String,
val bloodSugarTarget: String, val bloodSugarTarget: String?,
val bloodSugarCurrent: String?,
val ldl: String, val ldl: String,
val ldlTarget: String, val ldlTarget: String,
val tc: String, val tc: String,
@@ -118,10 +121,10 @@ data class ProposalBean(
val sportGuideResponse: String, val sportGuideResponse: String,
val lifeManage: String, val lifeManage: String,
val lifeManageResponse: String, val lifeManageResponse: String,
val cabinOpinion: String, val cabinOpinion: String?,
val cabinOpinionTime: String, val cabinOpinionTime: String,
val cabinOpinionUserName: String, val cabinOpinionUserName: String,
val expertOpinion: String, val expertOpinion: String?,
val expertOpinionTime: String, val expertOpinionTime: String,
val expertOpinionUserName: String val expertOpinionUserName: String
) )
@@ -5,12 +5,13 @@ import android.app.Dialog
import android.content.Intent import android.content.Intent
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.graphics.Color import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.ColorDrawable
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
import android.util.Log import android.util.Log
import android.view.Gravity
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
@@ -57,6 +58,7 @@ import com.xjjk.healthyclients.utils.MapUtils
import com.xjjk.healthyclients.utils.SystemFuntion.goNavigation import com.xjjk.healthyclients.utils.SystemFuntion.goNavigation
import com.xjjk.healthyclients.utils.TUIUtils import com.xjjk.healthyclients.utils.TUIUtils
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.tencent.qcloud.tuicore.util.ToastUtil import com.tencent.qcloud.tuicore.util.ToastUtil
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async import kotlinx.coroutines.async
@@ -205,7 +207,7 @@ class EmergencyFragment :
ParamedicOperateHelper.getInstance().setListener(paramedicOperateListener) ParamedicOperateHelper.getInstance().setListener(paramedicOperateListener)
mViewModel.isLiaisonUser { result -> mViewModel.isLiaisonUser { result ->
if (result) { if (!result) {
mBinding.fragmentEmergencyParamedic.visibility = View.GONE mBinding.fragmentEmergencyParamedic.visibility = View.GONE
} }
} }
@@ -415,17 +417,15 @@ class EmergencyFragment :
if (result.records.isNullOrEmpty()) { if (result.records.isNullOrEmpty()) {
ToastUtil.toastLongMessage("暂无参与的应急就医工单") ToastUtil.toastLongMessage("暂无参与的应急就医工单")
} else if(result.records.size == 1){ } else if(result.records.size == 1){
showChatListDialog(result.records,onChatSelected = {groupInfo -> mViewModel.getActualGroupMemberList(result.records[0].sessionId, successCall = {groupMemberBeans->
mViewModel.getActualGroupMemberList(groupInfo.sessionId, successCall = {groupMemberBeans-> IMInputActionSettingUtils.createEmergencySetting()
IMInputActionSettingUtils.createEmergencySetting() activity?.startGroupChat(
activity?.startGroupChat( result.records[0].sessionId,
groupInfo.sessionId, getString(R.string.title_paramedic_group),
getString(R.string.title_paramedic_group), false,
false, groupMemberBeans.map { it1 -> it1.userId }.toList() as ArrayList<String>?,
groupMemberBeans.map { it1 -> it1.userId }.toList() as ArrayList<String>?, workBean = WorkBean(result.records[0].orderId, TUIUtils.WORK_TYPE_EMERGENCY)
workBean = WorkBean(groupInfo.orderId, TUIUtils.WORK_TYPE_EMERGENCY) )
)
})
}) })
}else{ }else{
showChatListDialog(result.records,onChatSelected = {groupInfo -> showChatListDialog(result.records,onChatSelected = {groupInfo ->
@@ -478,34 +478,67 @@ class EmergencyFragment :
} }
/** /**
* 展示急救订单列表Dialog,供用户选择历史订单继续聊天 * 展示急救工单选择DialogFigma设计稿)
*/ */
private fun showChatListDialog( private fun showChatListDialog(
records: List<GroupInfo>, records: List<GroupInfo>,
onChatSelected: (GroupInfo) -> Unit onChatSelected: (GroupInfo) -> Unit
) { ) {
context?.let { ctx -> context?.let { ctx ->
val dialog = Dialog(ctx, com.xjjk.healthyclients.R.style.DialogTheme) val dialog = Dialog(ctx, com.xjjk.healthyclients.R.style.EmergencyDialogTheme)
val binding = DialogGroupInfoListBinding.inflate(layoutInflater) val binding = DialogGroupInfoListBinding.inflate(layoutInflater)
binding.rvGroupList.layoutManager = LinearLayoutManager(ctx) val adapter = GroupInfoAdapter(records) { selectedPos ->
binding.rvGroupList.adapter = GroupInfoAdapter(records) { groupInfo -> // 选中变化时更新确认按钮状态
onChatSelected(groupInfo) val hasSelection = selectedPos >= 0
dialog.dismiss() binding.tvConfirm.isEnabled = hasSelection
binding.tvConfirm.alpha = if (hasSelection) 1.0f else 0.4f
} }
binding.tvCancel.setOnClickListener { dialog.dismiss() } binding.rvGroupList.layoutManager = LinearLayoutManager(ctx)
binding.rvGroupList.adapter = adapter.apply {
// 初始禁用确认按钮
binding.tvConfirm.isEnabled = false
binding.tvConfirm.alpha = 0.4f
}
// 列表项间距
val spacing = ctx.resources.getDimensionPixelSize(com.xjjk.healthyclients.R.dimen.dp_12)
binding.rvGroupList.addItemDecoration(object : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
outRect.bottom = spacing
}
})
// 确认按钮点击
binding.tvConfirm.setOnClickListener {
adapter.selectedItem?.let { item ->
onChatSelected(item)
dialog.dismiss()
}
}
// 右上角X关闭
binding.ivClose.setOnClickListener { dialog.dismiss() }
// 点击卡片外部区域关闭
binding.flRoot.setOnClickListener { dialog.dismiss() }
dialog.setContentView(binding.root) dialog.setContentView(binding.root)
dialog.setCanceledOnTouchOutside(true) dialog.setCanceledOnTouchOutside(true)
dialog.setCancelable(true) dialog.setCancelable(true)
dialog.window?.let { window -> dialog.window?.let { window ->
window.setGravity(Gravity.BOTTOM) window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
window.setWindowAnimations(com.xjjk.healthyclients.R.style.main_menu_animStyle) window.decorView.setBackgroundColor(Color.TRANSPARENT)
window.setLayout( window.setLayout(
WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT WindowManager.LayoutParams.MATCH_PARENT
) )
} }
dialog.show() dialog.show()
@@ -1,45 +1,118 @@
package com.xjjk.healthyclients.fragment.adapter package com.xjjk.healthyclients.fragment.adapter
import android.content.res.ColorStateList
import android.graphics.Color
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.xjjk.healthyclients.bean.emergency.GroupInfo import com.xjjk.healthyclients.bean.emergency.GroupInfo
import com.xjjk.healthyclients.databinding.ItemGroupInfoBinding import com.xjjk.healthyclients.databinding.ItemGroupInfoBinding
/** /**
* 急救订单列表适配器 * 急救工单选择适配器,支持单选
*/ */
class GroupInfoAdapter( class GroupInfoAdapter(
private val items: List<GroupInfo>, private val items: List<GroupInfo>,
private val onItemClick: (GroupInfo) -> Unit private val onSelectionChanged: (Int) -> Unit
) : RecyclerView.Adapter<GroupInfoAdapter.ViewHolder>() { ) : RecyclerView.Adapter<GroupInfoAdapter.ViewHolder>() {
inner class ViewHolder(private val binding: ItemGroupInfoBinding) : /** 当前选中位置,-1 表示无选中 */
RecyclerView.ViewHolder(binding.root) { var selectedPosition = -1
private set
fun bind(groupInfo: GroupInfo) { /** 获取当前选中的工单 */
binding.tvUserName.text = groupInfo.salvageUserName val selectedItem: GroupInfo?
val sex = when (groupInfo.salvageUserSex) { get() = if (selectedPosition in items.indices) items[selectedPosition] else null
"1" -> ""
"2" -> "" /** 选中主色 */
else -> "--" private var colorPrimary = 0
} /** 未选中灰色 */
binding.tvUserSex.text = sex private var colorGray = 0
binding.tvOrgName.text = groupInfo.orgName private var colorDark = 0
binding.root.setOnClickListener { onItemClick(groupInfo) } private var colorBody = 0
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding = ItemGroupInfoBinding.inflate( val binding = ItemGroupInfoBinding.inflate(
LayoutInflater.from(parent.context), parent, false LayoutInflater.from(parent.context), parent, false
) )
// 初始化颜色值
if (colorPrimary == 0) {
colorPrimary = ContextCompat.getColor(parent.context, com.xjjk.healthyclients.R.color.emergency_primary)
colorGray = ContextCompat.getColor(parent.context, com.xjjk.healthyclients.R.color.emergency_text_gray)
colorDark = ContextCompat.getColor(parent.context, com.xjjk.healthyclients.R.color.emergency_text_dark)
colorBody = ContextCompat.getColor(parent.context, com.xjjk.healthyclients.R.color.emergency_text_body)
}
return ViewHolder(binding) return ViewHolder(binding)
} }
override fun onBindViewHolder(holder: ViewHolder, position: Int) { override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(items[position]) holder.bind(items[position], position == selectedPosition)
} }
override fun getItemCount(): Int = items.size override fun getItemCount(): Int = items.size
inner class ViewHolder(private val binding: ItemGroupInfoBinding) :
RecyclerView.ViewHolder(binding.root) {
private var currentPosition = -1
init {
binding.rootItem.setOnClickListener {
val oldPos = selectedPosition
if (oldPos == currentPosition) {
// 取消选中
selectedPosition = -1
notifyItemChanged(currentPosition)
onSelectionChanged(-1)
} else {
selectedPosition = currentPosition
notifyItemChanged(oldPos)
notifyItemChanged(currentPosition)
onSelectionChanged(currentPosition)
}
}
}
fun bind(groupInfo: GroupInfo, isSelected: Boolean) {
currentPosition = adapterPosition
val ctx = binding.root.context
// 姓名
binding.tvUserName.text = groupInfo.salvageUserName
// 部门标签
binding.tvDeptName.text = groupInfo.deptName
// 地址
binding.tvOrgName.text = groupInfo.orgName
// 时间
binding.tvInitTime.text = "求助时间:${groupInfo.initTime}"
if (isSelected) {
// 选中态
binding.rootItem.setBackgroundResource(com.xjjk.healthyclients.R.drawable.bg_emergency_item_selected)
binding.ivRadio.setImageResource(com.xjjk.healthyclients.R.drawable.ic_emergency_radio_selected)
binding.tvDeptName.setTextColor(colorPrimary)
binding.tvDeptName.setBackgroundResource(com.xjjk.healthyclients.R.drawable.bg_dept_badge_selected)
binding.tvInitTime.setTextColor(colorPrimary)
binding.ivLocation.imageTintList = ColorStateList.valueOf(colorPrimary)
binding.ivClock.imageTintList = ColorStateList.valueOf(colorPrimary)
} else {
// 未选中态
binding.rootItem.setBackgroundResource(com.xjjk.healthyclients.R.drawable.bg_emergency_item_unselected)
binding.ivRadio.setImageResource(com.xjjk.healthyclients.R.drawable.ic_emergency_radio_unselected)
binding.tvDeptName.setTextColor(colorGray)
binding.tvDeptName.setBackgroundResource(com.xjjk.healthyclients.R.drawable.bg_dept_badge_unselected)
binding.tvInitTime.setTextColor(colorGray)
binding.ivLocation.imageTintList = ColorStateList.valueOf(colorGray)
binding.ivClock.imageTintList = ColorStateList.valueOf(colorGray)
}
}
}
} }
@@ -3,6 +3,7 @@ package com.xjjk.healthyclients.ui.activity
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.core.text.isDigitsOnly
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.repeatOnLifecycle
@@ -40,16 +41,30 @@ class ProposalActivity :
} }
} }
} }
/**
* 手机号中间4位脱敏
*/
fun String?.maskPhone(): String {
val phone = this ?: return "--"
// 判断是否标准11位
return if (phone.length == 11) {
phone.replaceRange(3, 7, "****")
} else {
phone
}
}
private fun setProposalInfo(proposalBean: ProposalBean?) { private fun setProposalInfo(proposalBean: ProposalBean?) {
proposalBean?.let { proposalBean?.let {
mBinding.llDocumentBuild.visibility = View.VISIBLE
mBinding.llMostCare.visibility = View.VISIBLE
// 患者信息 // 患者信息
mBinding.tvPatientName.text = it.name mBinding.tvPatientName.text = it.name
mBinding.tvPatientGenderAge.text = formatNullString(it.sexCode) + " · " + it.age + "" mBinding.tvPatientGenderAge.text = formatNullString(it.sexCode) + " · " + it.age + ""
//mBinding.tvDocumentStatus.text = it.careStatus //mBinding.tvDocumentStatus.text = it.careStatus
mBinding.tvPatientCompany.text = formatNullString(it.workUnit) mBinding.tvPatientCompany.text = formatNullString(it.workUnit)
mBinding.tvIdNumber.text = formatNullString(it.idNo) mBinding.tvIdNumber.text = formatNullString(it.idNo)
mBinding.tvPhone.text = formatNullString(it.phone) mBinding.tvPhone.text = formatNullString(it.phone).maskPhone()
// 关爱管理信息 // 关爱管理信息
//mBinding.tvLevel.text = it.dataLevel.toString() //mBinding.tvLevel.text = it.dataLevel.toString()
@@ -58,34 +73,46 @@ class ProposalActivity :
// 档案与标签 // 档案与标签
if (it.flagFat != 1) { if (it.flagFat == 1) {
mBinding.llFatTag.visibility = View.INVISIBLE mBinding.llFatTag.visibility = View.VISIBLE
} }
mBinding.tvWeight.text = formatNullString(it.weight) val weight = formatNullString(it.weight)
val formatWeight = weight.toDoubleOrNull()?.let {
String.format("%.2f", it)
} ?: weight
val standardWeight = formatNullString(it.targetWeight)
val targetWeight = standardWeight.toDoubleOrNull()?.let {
String.format("%.2f", it)
} ?: standardWeight
mBinding.tvWeight.text = formatWeight
mBinding.tvHeight.text = formatNullString(it.height) mBinding.tvHeight.text = formatNullString(it.height)
mBinding.tvBmi.text = formatNullString(it.bmiCurrent) mBinding.tvBmi.text = formatNullString(it.bmiCurrent)
mBinding.tvStandardWeight.text = formatNullString(it.targetWeight) mBinding.tvStandardWeight.text = targetWeight
// 心血管健康 // 心血管健康
if (it.hypertension != 1) { if (it.hypertension == 1) {
mBinding.llHighPressureTag.visibility = View.INVISIBLE mBinding.llHighPressureTag.visibility = View.VISIBLE
} }
mBinding.tvSystolicAvg.text = formatNullString(it.systolicPressureAvg) mBinding.tvSystolicAvg.text = formatNullString(it.systolicPressureAvg)
mBinding.tvSystolicTarget.text = formatNullString(it.systolicPressureTarget) mBinding.tvSystolicTarget.text = formatNullString(it.systolicPressureTarget)
mBinding.tvSystolic.text = formatNullString(it.systolicPressureAvg) mBinding.tvSystolic.text = formatNullString(it.systolicPressureCurrent)
if (it.systolicPressureTarget?.toDoubleOrNull() !=null && it.systolicPressureCurrent?.toDoubleOrNull() !=null
&& it.systolicPressureTarget.toDouble() < it.systolicPressureCurrent.toDouble()
) {
mBinding.tvSystolic.setTextColor(getColor(R.color.red_f2))
}
mBinding.tvDiastolicAvg.text = formatNullString(it.diastolicPressureAvg) mBinding.tvDiastolicAvg.text = formatNullString(it.diastolicPressureAvg)
mBinding.tvDiastolicTarget.text = formatNullString(it.diastolicPressureTarget) mBinding.tvDiastolicTarget.text = formatNullString(it.diastolicPressureTarget)
mBinding.tvDiastolic.text = formatNullString(it.diastolicPressureAvg) mBinding.tvDiastolic.text = formatNullString(it.diastolicPressureCurrent)
// 代谢指标 // 代谢指标
// 心血管健康 // 心血管健康
if (it.diabetes != 1) { if (it.diabetes == 1) {
mBinding.llDiabetesTag.visibility = View.INVISIBLE mBinding.llDiabetesTag.visibility = View.VISIBLE
} }
mBinding.llDiabetesTag.visibility = if (it.diabetes != 0) View.VISIBLE else View.GONE
mBinding.tvFbsValue.text = formatNullString(it.glu) mBinding.tvFbsValue.text = formatNullString(it.glu)
mBinding.tvFbsTarget.text = formatNullString(it.bloodSugarTarget) mBinding.tvFbsTarget.text = formatNullString(it.bloodSugarTarget)
mBinding.tvFbsCurrent.text = formatNullString(it.glu) mBinding.tvFbsCurrent.text = formatNullString(it.bloodSugarCurrent)
// 血脂四项 // 血脂四项
mBinding.tvTcValue.text = it.tc mBinding.tvTcValue.text = it.tc
@@ -109,11 +136,12 @@ class ProposalActivity :
mBinding.tvHcyCurrent.text = it.homocysteine mBinding.tvHcyCurrent.text = it.homocysteine
// 医疗意见与记录 // 医疗意见与记录
mBinding.tvCabinOpinion.text = it.cabinOpinion mBinding.tvCabinOpinion.text = it.cabinOpinion ?: "暂无小屋意见"
mBinding.tvCabinTime.text = it.cabinOpinionTime mBinding.tvCabinTime.text = it.cabinOpinionTime
mBinding.tvCabinReporter.text = it.cabinOpinionUserName mBinding.tvCabinReporter.text = it.cabinOpinionUserName
mBinding.tvDoctorTime.text = it.expertOpinionTime mBinding.tvExpertOpinion.text = it.expertOpinion ?: "暂无专家医生意见"
mBinding.tvDoctorReporter.text = it.expertOpinionUserName mBinding.tvExpertOpinionTime.text = it.expertOpinionTime
mBinding.tvExpertOpinionUserName.text = it.expertOpinionUserName
} }
} }
@@ -14,6 +14,11 @@ import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.MarkerOptions
import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.MyLocationStyle
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.google.gson.Gson import com.google.gson.Gson
import com.permissionx.guolindev.PermissionX import com.permissionx.guolindev.PermissionX
import com.tencent.qcloud.tuicore.util.ToastUtil import com.tencent.qcloud.tuicore.util.ToastUtil
@@ -38,6 +43,7 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
var aMap: AMap? = null var aMap: AMap? = null
var mCurrentLat: Double = 0.0 var mCurrentLat: Double = 0.0
var mCurrentLon: Double = 0.0 var mCurrentLon: Double = 0.0
var desc: String = ""
var mPermissionList= arrayListOf( var mPermissionList= arrayListOf(
Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION) Manifest.permission.ACCESS_FINE_LOCATION)
@@ -72,6 +78,34 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
override fun initData() { override fun initData() {
} }
private fun initGeocoderSearch() {
val geocodeSearch = GeocodeSearch(this@SelectLocationActivity)
val query = RegeocodeQuery(LatLonPoint(mCurrentLat, mCurrentLon), 200f, GeocodeSearch.AMAP)
geocodeSearch.getFromLocationAsyn(query)
geocodeSearch.setOnGeocodeSearchListener(object : GeocodeSearch.OnGeocodeSearchListener {
override fun onRegeocodeSearched(
regeocodeResult: RegeocodeResult?,
resultID: Int
) {
if (regeocodeResult != null) {
val regeocodeAddress = regeocodeResult.regeocodeAddress
desc = regeocodeAddress.getFormatAddress()
}
}
override fun onGeocodeSearched(
geocodeResult: GeocodeResult?,
resultID: Int
) {
if (geocodeResult != null) {
val geocodeAddressList = geocodeResult.geocodeAddressList
}
}
})
}
private fun setUpMap() { private fun setUpMap() {
// 自定义系统定位小蓝点 // 自定义系统定位小蓝点
val myLocationStyle = MyLocationStyle() val myLocationStyle = MyLocationStyle()
@@ -91,6 +125,9 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
aMap?.setOnMyLocationChangeListener { aMap?.setOnMyLocationChangeListener {
mCurrentLat = it.latitude mCurrentLat = it.latitude
mCurrentLon = it.longitude mCurrentLon = it.longitude
initGeocoderSearch()
val markerOption = MarkerOptions() val markerOption = MarkerOptions()
markerOption.position(LatLng(mCurrentLat, mCurrentLon)) markerOption.position(LatLng(mCurrentLat, mCurrentLon))
aMap?.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mCurrentLat, mCurrentLon))) aMap?.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mCurrentLat, mCurrentLon)))
@@ -108,6 +145,8 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
marker?.position = cameraPosition.target marker?.position = cameraPosition.target
mCurrentLat = cameraPosition.target.latitude mCurrentLat = cameraPosition.target.latitude
mCurrentLon = cameraPosition.target.longitude mCurrentLon = cameraPosition.target.longitude
initGeocoderSearch()
} }
} }
@@ -144,6 +183,7 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
var locationMessageBean = LocationMessageBean() var locationMessageBean = LocationMessageBean()
locationMessageBean.longitude = mCurrentLon locationMessageBean.longitude = mCurrentLon
locationMessageBean.latitude = mCurrentLat locationMessageBean.latitude = mCurrentLat
locationMessageBean.desc = desc
intent.putExtra(ChatLayoutSetting.KEY_CUSTOM_MESSAGE, locationMessageBean.toJson()) intent.putExtra(ChatLayoutSetting.KEY_CUSTOM_MESSAGE, locationMessageBean.toJson())
setResult(ChatLayoutSetting.RESULT_CODE_LOCATION, intent) setResult(ChatLayoutSetting.RESULT_CODE_LOCATION, intent)
finish() finish()
@@ -0,0 +1,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#1A2EB8B2" />
<corners android:radius="4dp" />
</shape>
@@ -0,0 +1,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#1A77859E" />
<corners android:radius="4dp" />
</shape>
@@ -0,0 +1,4 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/emergency_close_bg" />
</shape>
@@ -0,0 +1,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/emergency_primary" />
<corners android:radius="12dp" />
</shape>
@@ -0,0 +1,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="12dp" />
</shape>
@@ -0,0 +1,8 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/emergency_card_selected_bg" />
<stroke
android:width="1dp"
android:color="@color/emergency_card_selected_border" />
<corners android:radius="8dp" />
</shape>
@@ -0,0 +1,8 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<stroke
android:width="1dp"
android:color="@color/emergency_card_unselected_border" />
<corners android:radius="8dp" />
</shape>
@@ -0,0 +1,19 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<path
android:fillColor="@android:color/transparent"
android:pathData="M8,14C11.31,14 14,11.31 14,8C14,4.69 11.31,2 8,2C4.69,2 2,4.69 2,8C2,11.31 4.69,14 8,14Z"
android:strokeWidth="1.2"
android:strokeColor="@color/emergency_primary"
android:strokeLineCap="round" />
<path
android:fillColor="@android:color/transparent"
android:pathData="M8,5L8,8.5L10.5,10"
android:strokeWidth="1.2"
android:strokeColor="@color/emergency_primary"
android:strokeLineCap="round"
android:strokeLineJoin="round" />
</vector>
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="14dp"
android:height="14dp"
android:viewportWidth="14"
android:viewportHeight="14">
<path
android:fillColor="@android:color/transparent"
android:pathData="M1,1L13,13M13,1L1,13"
android:strokeWidth="1.5"
android:strokeColor="@color/emergency_text_gray"
android:strokeLineCap="round" />
</vector>
@@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<path
android:fillColor="@android:color/transparent"
android:pathData="M8,14C8,14 14,9.5 14,6C14,2.69 11.31,0 8,0C4.69,0 2,2.69 2,6C2,9.5 8,14 8,14Z"
android:strokeWidth="1"
android:strokeColor="@color/emergency_primary"
android:strokeLineJoin="round" />
<path
android:fillColor="@color/emergency_primary"
android:pathData="M8,8C9.1,8 10,7.1 10,6C10,4.9 9.1,4 8,4C6.9,4 6,4.9 6,6C6,7.1 6.9,8 8,8Z" />
</vector>
@@ -0,0 +1,16 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="@color/emergency_primary" />
</shape>
</item>
<item
android:top="5dp"
android:bottom="5dp"
android:left="5dp"
android:right="5dp">
<shape android:shape="oval">
<solid android:color="@android:color/white" />
</shape>
</item>
</layer-list>
@@ -0,0 +1,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:width="1dp"
android:color="@color/emergency_card_unselected_border" />
<solid android:color="@android:color/white" />
</shape>
+59 -287
View File
@@ -79,7 +79,7 @@
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="艾比拜·牙库甫" /> android:text="--" />
<View <View
android:layout_width="0dp" android:layout_width="0dp"
@@ -94,7 +94,7 @@
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="男性 · 52岁" /> android:text="--"/>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
@@ -110,7 +110,7 @@
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="新疆油田分公司采油一厂" /> android:text="--" />
<View <View
android:layout_width="0dp" android:layout_width="0dp"
@@ -119,11 +119,13 @@
<!-- 档案已建立 标签 --> <!-- 档案已建立 标签 -->
<LinearLayout <LinearLayout
android:id="@+id/ll_document_build"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:background="@drawable/bg_teal_tag_round_4" android:background="@drawable/bg_teal_tag_round_4"
android:gravity="center" android:gravity="center"
android:visibility="invisible"
android:paddingStart="10dp" android:paddingStart="10dp"
android:paddingEnd="10dp"> android:paddingEnd="10dp">
@@ -175,7 +177,7 @@
android:gravity="end" android:gravity="end"
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="13sp" android:textSize="13sp"
tools:text="650202197403151234" /> android:text="--" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
@@ -200,7 +202,7 @@
android:gravity="end" android:gravity="end"
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="13sp" android:textSize="13sp"
tools:text="157****5522" /> android:text="--" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -249,10 +251,12 @@
<!-- 重点关爱 标签 --> <!-- 重点关爱 标签 -->
<LinearLayout <LinearLayout
android:id="@+id/ll_most_care"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="24dp" android:layout_height="24dp"
android:background="@drawable/bg_teal_round_24" android:background="@drawable/bg_teal_round_24"
android:gravity="center" android:gravity="center"
android:visibility="invisible"
android:paddingStart="10dp" android:paddingStart="10dp"
android:paddingEnd="10dp"> android:paddingEnd="10dp">
@@ -299,7 +303,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="13sp" android:textSize="13sp"
tools:text="陈沐辰" /> android:text="--"/>
</LinearLayout> </LinearLayout>
<!-- 分隔线 --> <!-- 分隔线 -->
@@ -334,7 +338,8 @@
android:maxLines="2" android:maxLines="2"
android:singleLine="false" android:singleLine="false"
android:textColor="@color/text_tab_color" android:textColor="@color/text_tab_color"
android:textSize="13sp" /> android:textSize="13sp"
android:text="--" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -381,7 +386,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal"
android:visibility="invisible">
<View <View
android:layout_width="6dp" android:layout_width="6dp"
@@ -438,7 +444,7 @@
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="68.20" /> android:text="--" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -457,7 +463,7 @@
android:textColor="#2EB8B2" android:textColor="#2EB8B2"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="2.6" /> android:text="--"/>
</LinearLayout> </LinearLayout>
<!-- 标签行: 06-25 09:30 | 体重较上次减轻 --> <!-- 标签行: 06-25 09:30 | 体重较上次减轻 -->
@@ -507,14 +513,29 @@
android:gravity="center" android:gravity="center"
android:orientation="vertical"> android:orientation="vertical">
<TextView <LinearLayout
android:id="@+id/tv_height"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/text_primary_25" android:gravity="bottom"
android:textSize="24sp" android:orientation="horizontal">
android:textStyle="bold"
tools:text="172cm" /> <TextView
android:id="@+id/tv_height"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_primary_25"
android:textSize="24sp"
android:textStyle="bold"
android:text="--"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:text="cm"
android:textColor="@color/gray_80"
android:textSize="14sp" />
</LinearLayout>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -548,7 +569,7 @@
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="22sp" android:textSize="22sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="22.4" /> android:text="--"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -600,7 +621,7 @@
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="52.6" /> android:text="--"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -669,7 +690,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal"
android:visibility="invisible">
<View <View
android:layout_width="6dp" android:layout_width="6dp"
@@ -817,7 +839,6 @@
android:layout_weight="1.5" android:layout_weight="1.5"
android:background="@drawable/bg_table_data_cell" android:background="@drawable/bg_table_data_cell"
android:gravity="center" android:gravity="center"
android:textColor="@color/red_f2"
android:textSize="12sp" android:textSize="12sp"
tools:text="78mmHg" /> tools:text="78mmHg" />
</LinearLayout> </LinearLayout>
@@ -918,7 +939,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal"
android:visibility="invisible">
<View <View
android:layout_width="6dp" android:layout_width="6dp"
@@ -1817,15 +1839,6 @@
android:background="@drawable/bg_gradient_underline_reverse" /> android:background="@drawable/bg_gradient_underline_reverse" />
</LinearLayout> </LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_cabinOpinion"
android:layout_marginTop="8dp"
android:lineSpacingExtra="4dp"
android:textSize="13sp"
android:textColor="@color/text_teal_dark"/>
<!-- 时间和填报人 --> <!-- 时间和填报人 -->
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -1842,16 +1855,14 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textColor="#B6B6B6" android:textColor="#B6B6B6"
android:textSize="11sp" android:textSize="11sp"/>
tools:text="填报人:李秀芳(健康管理师)" />
<TextView <TextView
android:id="@+id/tv_cabin_time" android:id="@+id/tv_cabin_time"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="#B6B6B6" android:textColor="#B6B6B6"
android:textSize="11sp" android:textSize="11sp"/>
tools:text="2026-05-15 14:30" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -1871,130 +1882,24 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_medical_advice"> app:layout_constraintTop_toBottomOf="@id/ll_medical_advice">
<TextView <!--<TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_gradient_underline_vertical" android:background="@drawable/bg_gradient_underline_vertical"
android:text="【健康综述】" android:text="【小屋意见】"
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" /> android:textStyle="bold" />-->
<TextView <TextView
android:id="@+id/tv_cabin_summary" android:id="@+id/tv_cabinOpinion"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:lineSpacingExtra="4dp" android:lineSpacingExtra="4dp"
android:textColor="@color/text_teal_dark" android:textColor="@color/text_teal_dark"
android:textSize="13sp" android:textSize="13sp"
android:text="患者张建国,男,52岁,高血压病史5年,目前血压控制不理想(收缩压持续偏高)。BMI 28.5,属于肥胖。空腹血糖偏高(6.8mmol/L),处于糖尿病前期。血脂三项均超标,甘油三酯明显偏高。血尿酸持续偏高,存在痛风风险。同型半胱氨酸偏高,心血管风险增加。" /> android:text="暂无小屋意见。" />
</LinearLayout>
<!-- 【降控目标】卡片 -->
<LinearLayout
android:id="@+id/ll_health_target"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg_white_round_12"
android:orientation="vertical"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_cabin_summary">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_gradient_underline_vertical"
android:text="【降控目标】"
android:textColor="@color/text_primary_25"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_cabin_target"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:lineSpacingExtra="4dp"
android:textColor="@color/text_teal_dark"
android:textSize="13sp"
android:text="1. 血压:收缩压控制在140mmHg以下,舒张压控制在90mmHg以下。\n2. 体重:目标减至75kgBMI降至25.3。\n3. 血糖:空腹血糖控制在6.1mmol/L以下。\n4. 血脂:LDL-C降至3.4以下,TG降至1.7以下。\n5. 尿酸:控制在420μmol/L以下。" />
</LinearLayout>
<!-- 【生活干预建议】卡片 -->
<LinearLayout
android:id="@+id/ll_health_suggest"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg_white_round_12"
android:orientation="vertical"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_health_target">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_gradient_underline_vertical"
android:text="【生活干预建议】"
android:textColor="@color/text_primary_25"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_doctor_lifestyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:lineSpacingExtra="4dp"
android:textColor="@color/text_teal_dark"
android:textSize="13sp"
android:text="1. 饮食:低盐低脂低嘌呤饮食,减少动物内脏和海鲜摄入,每日盐摄入不超过5g。\n2. 运动:每周至少150分钟中等强度有氧运动(快走、游泳),逐步增加运动量。\n3. 戒烟限酒:建议完全戒烟,严格限制酒精摄入。\n4. 体重管理:每月减重1-2kg为宜,避免节食减肥。" />
</LinearLayout>
<!-- 【服药情况】卡片 -->
<LinearLayout
android:id="@+id/ll_health_medication"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg_white_round_12"
android:orientation="vertical"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_health_suggest">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_gradient_underline_vertical"
android:text="【服药情况】"
android:textColor="@color/text_primary_25"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_doctor_medication"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:lineSpacingExtra="4dp"
android:textColor="@color/text_teal_dark"
android:textSize="13sp"
android:text="1.氨氯地平片 5mg 每日一次(降压)\n2. 阿托伐他汀钙片 20mg 每晚一次(调脂)\n3. 别嘌醇片 100mg 每日一次(降尿酸)\n4. 叶酸片 0.8mg 每日一次(降低同型半胱氨酸)\n5. 建议3个月后复查全套生化指标,评估治疗效果" />
</LinearLayout> </LinearLayout>
<ImageView <ImageView
@@ -2009,41 +1914,6 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_medical_advice" /> app:layout_constraintTop_toBottomOf="@id/ll_medical_advice" />
<ImageView
android:layout_width="16dp"
android:layout_height="0dp"
android:layout_marginTop="-20dp"
android:layout_marginEnd="36dp"
android:layout_marginBottom="-20dp"
android:scaleType="fitXY"
android:src="@drawable/ic_link"
app:layout_constraintBottom_toTopOf="@id/ll_health_target"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_cabin_summary" />
<ImageView
android:layout_width="16dp"
android:layout_height="0dp"
android:layout_marginTop="-20dp"
android:layout_marginEnd="36dp"
android:layout_marginBottom="-20dp"
android:scaleType="fitXY"
android:src="@drawable/ic_link"
app:layout_constraintBottom_toTopOf="@id/ll_health_suggest"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_health_target" />
<ImageView
android:layout_width="16dp"
android:layout_height="0dp"
android:layout_marginTop="-20dp"
android:layout_marginEnd="36dp"
android:layout_marginBottom="-20dp"
android:scaleType="fitXY"
android:src="@drawable/ic_link"
app:layout_constraintBottom_toTopOf="@id/ll_health_medication"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_health_suggest" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<!-- ========== 专家医生意见 ========== --> <!-- ========== 专家医生意见 ========== -->
@@ -2108,21 +1978,19 @@
android:paddingEnd="16dp"> android:paddingEnd="16dp">
<TextView <TextView
android:id="@+id/tv_doctor_reporter" android:id="@+id/tv_expertOpinionUserName"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textColor="#B6B6B6" android:textColor="#B6B6B6"
android:textSize="11sp" android:textSize="11sp" />
android:text="填报人:陈明远(主任医师)" />
<TextView <TextView
android:id="@+id/tv_doctor_time" android:id="@+id/tv_expertOpinionTime"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="#B6B6B6" android:textColor="#B6B6B6"
android:textSize="11sp" android:textSize="11sp" />
android:text="2026-05-15 14:30" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -2141,122 +2009,26 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_doctor_opinion"> app:layout_constraintTop_toBottomOf="@id/ll_doctor_opinion">
<TextView <!--<TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_gradient_underline_vertical" android:background="@drawable/bg_gradient_underline_vertical"
android:text="【综合评估】" android:text="【专家医生意见】"
android:textColor="@color/text_primary_25" android:textColor="@color/text_primary_25"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" /> android:textStyle="bold" />-->
<TextView <TextView
android:id="@+id/tv_cabin_assessment" android:id="@+id/tv_expertOpinion"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:lineSpacingExtra="4dp" android:lineSpacingExtra="4dp"
android:textColor="@color/text_teal_dark" android:textColor="@color/text_teal_dark"
android:textSize="13sp" android:textSize="13sp"
android:text="患者为代谢综合征高危人群,同时合并高血压、肥胖、高尿酸血症、高同型半胱氨酸血症,心血管事件风险较高。目前空腹血糖6.8mmol/L,建议完善口服葡萄糖耐量试验(OGTT)以明确是否存在糖耐量异常。" /> android:text="暂无专家医生意见。" />
</LinearLayout> </LinearLayout>
<!-- 【诊疗建议】卡片 -->
<LinearLayout
android:id="@+id/ll_doctor_advice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg_white_round_12"
android:orientation="vertical"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_doctor_assessment">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_gradient_underline_vertical"
android:text="【诊疗建议】"
android:textColor="@color/text_primary_25"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_doctor_diagnosis"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:lineSpacingExtra="4dp"
android:textColor="@color/text_teal_dark"
android:textSize="13sp"
android:text="1. 降压方案调整:目前氨氯地平单药控制欠佳,建议联合缬沙坦80mg每日一次,两药联合降压,目标血压130/85mmHg\n2. 调脂治疗:甘油三酯明显偏高(2.9mmol/L),在阿托伐他汀基础上加用非诺贝特200mg每日一次,注意监测肝功能\n3. 高尿酸:继续别嘌醇治疗,建议加用碳酸氢钠片碱化尿液,多饮水(每日>2000ml)\n4. 同型半胱氨酸:继续叶酸补充,建议加用维生素B6和B12联合治疗" />
</LinearLayout>
<!-- 【注意事项】卡片 -->
<LinearLayout
android:id="@+id/ll_doctor_notice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg_white_round_12"
android:orientation="vertical"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_doctor_advice">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_gradient_underline_vertical"
android:text="【注意事项】"
android:textColor="@color/text_primary_25"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_doctor_notice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:lineSpacingExtra="4dp"
android:textColor="@color/text_teal_dark"
android:textSize="13sp"
android:text="患者需高度重视生活方式改善,这是所有药物治疗的基础。建议定期(每月一次)到健康小屋随访,监测血压和体重变化。" />
</LinearLayout>
<ImageView
android:layout_width="16dp"
android:layout_height="0dp"
android:layout_marginTop="-20dp"
android:layout_marginEnd="36dp"
android:layout_marginBottom="-20dp"
android:scaleType="fitXY"
android:src="@drawable/ic_link"
app:layout_constraintBottom_toTopOf="@id/ll_doctor_notice"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_doctor_advice" />
<ImageView
android:layout_width="16dp"
android:layout_height="0dp"
android:layout_marginTop="-20dp"
android:layout_marginEnd="36dp"
android:layout_marginBottom="-20dp"
android:scaleType="fitXY"
android:src="@drawable/ic_link"
app:layout_constraintBottom_toTopOf="@id/ll_doctor_advice"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_doctor_assessment" />
<ImageView <ImageView
android:layout_width="16dp" android:layout_width="16dp"
android:layout_height="0dp" android:layout_height="0dp"
@@ -2,46 +2,95 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<LinearLayout <!-- 全屏半透明背景层,居中显示白色卡片 -->
<FrameLayout
android:id="@+id/fl_root"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:orientation="vertical" android:clickable="true"
android:background="@drawable/rectangle_top_round_corner20_white"> android:focusable="true"
android:background="@android:color/transparent">
<TextView <LinearLayout
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_20"
android:text="请选择应急就医对话"
android:textColor="@color/text_black_33"
android:textSize="@dimen/txt16"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_group_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18" android:layout_marginHorizontal="20dp"
android:maxHeight="@dimen/dp_300" android:layout_gravity="center"
tools:listitem="@layout/item_group_info" /> android:orientation="vertical"
android:background="@drawable/bg_emergency_dialog_card"
android:paddingBottom="16dp">
<View <!-- 标题栏 -->
android:layout_width="match_parent" <FrameLayout
android:layout_height="@dimen/dp_0_5" android:layout_width="match_parent"
android:background="@color/theme_color" /> android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingTop="16dp"
android:paddingBottom="12dp">
<TextView <TextView
android:id="@+id/tv_cancel" android:id="@+id/tv_title"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:layout_gravity="center"
android:paddingVertical="@dimen/dp_20" android:text="请选择正在应急的工单"
android:text="取消" android:textColor="@color/emergency_text_dark"
android:textColor="@color/text_black_66" android:textSize="18sp"
android:textSize="@dimen/txt14" android:textStyle="bold" />
android:background="?attr/selectableItemBackground" />
</LinearLayout> <ImageView
android:id="@+id/iv_close"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="end|center_vertical"
android:src="@drawable/ic_emergency_close"
android:background="@drawable/bg_emergency_close_btn"
android:padding="5dp"
android:contentDescription="关闭" />
</FrameLayout>
<!-- 顶部分割线 -->
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/emergency_divider" />
<!-- 工单列表 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_group_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="16dp"
android:paddingTop="12dp"
android:paddingBottom="4dp"
android:maxHeight="420dp"
android:clipToPadding="false"
android:scrollbars="none"
tools:listitem="@layout/item_group_info" />
<!-- 底部分割线 -->
<View
android:id="@+id/view_bottom_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/emergency_divider" />
<!-- 确认选择按钮 -->
<TextView
android:id="@+id/tv_confirm"
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:gravity="center"
android:text="确认选择"
android:textColor="@android:color/white"
android:textSize="18sp"
android:textStyle="bold"
android:background="@drawable/bg_emergency_confirm_btn" />
</LinearLayout>
</FrameLayout>
</layout> </layout>
+105 -32
View File
@@ -3,47 +3,120 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<LinearLayout <LinearLayout
android:id="@+id/root_item"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="vertical"
android:paddingHorizontal="@dimen/dp_16" android:paddingStart="16dp"
android:paddingVertical="@dimen/dp_16" android:paddingEnd="16dp"
android:gravity="center_vertical" android:paddingTop="16dp"
android:background="?attr/selectableItemBackground"> android:paddingBottom="14dp"
android:background="@drawable/bg_emergency_item_unselected">
<TextView <!-- 顶部:姓名 + 选择圆圈 -->
android:id="@+id/tv_user_name" <LinearLayout
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="2" android:orientation="horizontal"
android:gravity="center" android:gravity="center_vertical">
android:textColor="@color/text_black_33"
android:textSize="@dimen/txt14" <TextView
android:id="@+id/tv_user_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/emergency_text_dark"
android:textSize="15sp"
android:textStyle="bold"
android:ellipsize="end"
android:maxLines="1"
tools:text="艾尼瓦尔·吐尔逊" />
<ImageView
android:id="@+id/iv_radio"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginStart="12dp"
android:src="@drawable/ic_emergency_radio_unselected" />
</LinearLayout>
<!-- 部门标签 -->
<TextView
android:id="@+id/tv_dept_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:textColor="@color/emergency_text_gray"
android:textSize="11sp"
android:textStyle="bold"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
tools:text="张三" /> android:background="@drawable/bg_dept_badge_unselected"
tools:text="员工健康事务部" />
<TextView <!-- 内部分割线 -->
android:id="@+id/tv_user_sex" <View
android:layout_width="0dp" android:id="@+id/view_divider"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:gravity="center" android:layout_height="1dp"
android:layout_weight="1" android:layout_marginTop="10dp"
android:layout_marginHorizontal="@dimen/dp_12" android:background="@color/emergency_divider" />
android:textColor="@color/text_black_66"
android:textSize="@dimen/txt13"
tools:text="男" />
<TextView <!-- 地址行 -->
android:id="@+id/tv_org_name" <LinearLayout
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="5" android:layout_marginTop="10dp"
android:textColor="@color/text_black_99" android:orientation="horizontal"
android:textSize="@dimen/txt13" android:gravity="center_vertical">
android:maxLines="1"
android:ellipsize="end" <ImageView
tools:text="某某科技有限公司" /> android:id="@+id/iv_location"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/ic_emergency_location" />
<TextView
android:id="@+id/tv_org_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="8dp"
android:textColor="@color/emergency_text_body"
android:textSize="13sp"
android:ellipsize="end"
android:maxLines="2"
tools:text="监管中心(石油天然气克拉玛依工程质量监督站)" />
</LinearLayout>
<!-- 时间行 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:id="@+id/iv_clock"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/ic_emergency_clock" />
<TextView
android:id="@+id/tv_init_time"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="8dp"
android:textColor="@color/emergency_text_gray"
android:textSize="13sp"
android:ellipsize="end"
android:maxLines="1"
tools:text="求助时间:2026-07-22 16:24:32" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</layout> </layout>
+12
View File
@@ -132,6 +132,18 @@
<color name="text_orange_10">#F36510</color> <color name="text_orange_10">#F36510</color>
<color name="text_blue_BE">#21BEBE</color> <color name="text_blue_BE">#21BEBE</color>
<color name="text_blue_F0">#cbebf0</color> <color name="text_blue_F0">#cbebf0</color>
<!-- 应急工单选择 Dialog 颜色(Figma -->
<color name="emergency_card_selected_bg">#0F2EB8B2</color>
<color name="emergency_card_selected_border">#802EB8B2</color>
<color name="emergency_card_unselected_border">#E6E6EA</color>
<color name="emergency_dialog_bg">#F5F7FB</color>
<color name="emergency_divider">#EAECFA</color>
<color name="emergency_text_dark">#252535</color>
<color name="emergency_text_body">#394356</color>
<color name="emergency_text_gray">#77859E</color>
<color name="emergency_close_bg">#F1F5F9</color>
<color name="emergency_primary">#2EB8B2</color>
<color name="text_black_60">#606060</color> <color name="text_black_60">#606060</color>
<color name="text_tab_color">#77849E</color> <color name="text_tab_color">#77849E</color>
+10
View File
@@ -39,6 +39,16 @@
<item name="android:backgroundDimAmount">0.5</item> <item name="android:backgroundDimAmount">0.5</item>
</style> </style>
<!-- 应急工单选择Dialog:全屏透明无遮罩 -->
<style name="EmergencyDialogTheme" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
<style name="main_menu_animStyle"> <style name="main_menu_animStyle">
<item name="android:windowEnterAnimation">@anim/dialog_in_anim</item> <item name="android:windowEnterAnimation">@anim/dialog_in_anim</item>
<item name="android:windowExitAnimation">@anim/dialog_out_anim</item> <item name="android:windowExitAnimation">@anim/dialog_out_anim</item>