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 weightRiskType: String,
val hypertension: Int,
val systolicPressureAvg: String,
val systolicPressureTarget: String,
val diastolicPressureAvg: String,
val diastolicPressureTarget: String,
val systolicPressureAvg: String?,
val systolicPressureTarget: String?,
val systolicPressureCurrent: String?,
val diastolicPressureAvg: String?,
val diastolicPressureTarget: String?,
val diastolicPressureCurrent: String?,
val diabetes: Int,
val glu: String,
val bloodSugarTarget: String,
val bloodSugarTarget: String?,
val bloodSugarCurrent: String?,
val ldl: String,
val ldlTarget: String,
val tc: String,
@@ -118,10 +121,10 @@ data class ProposalBean(
val sportGuideResponse: String,
val lifeManage: String,
val lifeManageResponse: String,
val cabinOpinion: String,
val cabinOpinion: String?,
val cabinOpinionTime: String,
val cabinOpinionUserName: String,
val expertOpinion: String,
val expertOpinion: String?,
val expertOpinionTime: String,
val expertOpinionUserName: String
)
@@ -5,12 +5,13 @@ import android.app.Dialog
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.ColorDrawable
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import android.view.Gravity
import android.view.View
import android.view.WindowManager
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.TUIUtils
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.tencent.qcloud.tuicore.util.ToastUtil
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
@@ -205,7 +207,7 @@ class EmergencyFragment :
ParamedicOperateHelper.getInstance().setListener(paramedicOperateListener)
mViewModel.isLiaisonUser { result ->
if (result) {
if (!result) {
mBinding.fragmentEmergencyParamedic.visibility = View.GONE
}
}
@@ -415,18 +417,16 @@ class EmergencyFragment :
if (result.records.isNullOrEmpty()) {
ToastUtil.toastLongMessage("暂无参与的应急就医工单")
} else if(result.records.size == 1){
showChatListDialog(result.records,onChatSelected = {groupInfo ->
mViewModel.getActualGroupMemberList(groupInfo.sessionId, successCall = {groupMemberBeans->
mViewModel.getActualGroupMemberList(result.records[0].sessionId, successCall = {groupMemberBeans->
IMInputActionSettingUtils.createEmergencySetting()
activity?.startGroupChat(
groupInfo.sessionId,
result.records[0].sessionId,
getString(R.string.title_paramedic_group),
false,
groupMemberBeans.map { it1 -> it1.userId }.toList() as ArrayList<String>?,
workBean = WorkBean(groupInfo.orderId, TUIUtils.WORK_TYPE_EMERGENCY)
workBean = WorkBean(result.records[0].orderId, TUIUtils.WORK_TYPE_EMERGENCY)
)
})
})
}else{
showChatListDialog(result.records,onChatSelected = {groupInfo ->
mViewModel.getActualGroupMemberList(groupInfo.sessionId, successCall = {groupMemberBeans->
@@ -478,34 +478,67 @@ class EmergencyFragment :
}
/**
* 展示急救订单列表Dialog,供用户选择历史订单继续聊天
* 展示急救工单选择DialogFigma设计稿)
*/
private fun showChatListDialog(
records: List<GroupInfo>,
onChatSelected: (GroupInfo) -> Unit
) {
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)
binding.rvGroupList.layoutManager = LinearLayoutManager(ctx)
binding.rvGroupList.adapter = GroupInfoAdapter(records) { groupInfo ->
onChatSelected(groupInfo)
dialog.dismiss()
val adapter = GroupInfoAdapter(records) { selectedPos ->
// 选中变化时更新确认按钮状态
val hasSelection = selectedPos >= 0
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.setCanceledOnTouchOutside(true)
dialog.setCancelable(true)
dialog.window?.let { window ->
window.setGravity(Gravity.BOTTOM)
window.setWindowAnimations(com.xjjk.healthyclients.R.style.main_menu_animStyle)
window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
window.decorView.setBackgroundColor(Color.TRANSPARENT)
window.setLayout(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT
WindowManager.LayoutParams.MATCH_PARENT
)
}
dialog.show()
@@ -1,45 +1,118 @@
package com.xjjk.healthyclients.fragment.adapter
import android.content.res.ColorStateList
import android.graphics.Color
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.xjjk.healthyclients.bean.emergency.GroupInfo
import com.xjjk.healthyclients.databinding.ItemGroupInfoBinding
/**
* 急救订单列表适配器
* 急救工单选择适配器,支持单选
*/
class GroupInfoAdapter(
private val items: List<GroupInfo>,
private val onItemClick: (GroupInfo) -> Unit
private val onSelectionChanged: (Int) -> Unit
) : RecyclerView.Adapter<GroupInfoAdapter.ViewHolder>() {
inner class ViewHolder(private val binding: ItemGroupInfoBinding) :
RecyclerView.ViewHolder(binding.root) {
/** 当前选中位置,-1 表示无选中 */
var selectedPosition = -1
private set
fun bind(groupInfo: GroupInfo) {
binding.tvUserName.text = groupInfo.salvageUserName
val sex = when (groupInfo.salvageUserSex) {
"1" -> ""
"2" -> ""
else -> "--"
}
binding.tvUserSex.text = sex
binding.tvOrgName.text = groupInfo.orgName
binding.root.setOnClickListener { onItemClick(groupInfo) }
}
}
/** 获取当前选中的工单 */
val selectedItem: GroupInfo?
get() = if (selectedPosition in items.indices) items[selectedPosition] else null
/** 选中主色 */
private var colorPrimary = 0
/** 未选中灰色 */
private var colorGray = 0
private var colorDark = 0
private var colorBody = 0
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding = ItemGroupInfoBinding.inflate(
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)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(items[position])
holder.bind(items[position], position == selectedPosition)
}
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.os.Bundle
import android.view.View
import androidx.core.text.isDigitsOnly
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
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?) {
proposalBean?.let {
mBinding.llDocumentBuild.visibility = View.VISIBLE
mBinding.llMostCare.visibility = View.VISIBLE
// 患者信息
mBinding.tvPatientName.text = it.name
mBinding.tvPatientGenderAge.text = formatNullString(it.sexCode) + " · " + it.age + ""
//mBinding.tvDocumentStatus.text = it.careStatus
mBinding.tvPatientCompany.text = formatNullString(it.workUnit)
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()
@@ -58,34 +73,46 @@ class ProposalActivity :
// 档案与标签
if (it.flagFat != 1) {
mBinding.llFatTag.visibility = View.INVISIBLE
if (it.flagFat == 1) {
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.tvBmi.text = formatNullString(it.bmiCurrent)
mBinding.tvStandardWeight.text = formatNullString(it.targetWeight)
mBinding.tvStandardWeight.text = targetWeight
// 心血管健康
if (it.hypertension != 1) {
mBinding.llHighPressureTag.visibility = View.INVISIBLE
if (it.hypertension == 1) {
mBinding.llHighPressureTag.visibility = View.VISIBLE
}
mBinding.tvSystolicAvg.text = formatNullString(it.systolicPressureAvg)
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.tvDiastolicTarget.text = formatNullString(it.diastolicPressureTarget)
mBinding.tvDiastolic.text = formatNullString(it.diastolicPressureAvg)
mBinding.tvDiastolic.text = formatNullString(it.diastolicPressureCurrent)
// 代谢指标
// 心血管健康
if (it.diabetes != 1) {
mBinding.llDiabetesTag.visibility = View.INVISIBLE
if (it.diabetes == 1) {
mBinding.llDiabetesTag.visibility = View.VISIBLE
}
mBinding.llDiabetesTag.visibility = if (it.diabetes != 0) View.VISIBLE else View.GONE
mBinding.tvFbsValue.text = formatNullString(it.glu)
mBinding.tvFbsTarget.text = formatNullString(it.bloodSugarTarget)
mBinding.tvFbsCurrent.text = formatNullString(it.glu)
mBinding.tvFbsCurrent.text = formatNullString(it.bloodSugarCurrent)
// 血脂四项
mBinding.tvTcValue.text = it.tc
@@ -109,11 +136,12 @@ class ProposalActivity :
mBinding.tvHcyCurrent.text = it.homocysteine
// 医疗意见与记录
mBinding.tvCabinOpinion.text = it.cabinOpinion
mBinding.tvCabinOpinion.text = it.cabinOpinion ?: "暂无小屋意见"
mBinding.tvCabinTime.text = it.cabinOpinionTime
mBinding.tvCabinReporter.text = it.cabinOpinionUserName
mBinding.tvDoctorTime.text = it.expertOpinionTime
mBinding.tvDoctorReporter.text = it.expertOpinionUserName
mBinding.tvExpertOpinion.text = it.expertOpinion ?: "暂无专家医生意见"
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.MarkerOptions
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.permissionx.guolindev.PermissionX
import com.tencent.qcloud.tuicore.util.ToastUtil
@@ -38,6 +43,7 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
var aMap: AMap? = null
var mCurrentLat: Double = 0.0
var mCurrentLon: Double = 0.0
var desc: String = ""
var mPermissionList= arrayListOf(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION)
@@ -72,6 +78,34 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
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() {
// 自定义系统定位小蓝点
val myLocationStyle = MyLocationStyle()
@@ -91,6 +125,9 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
aMap?.setOnMyLocationChangeListener {
mCurrentLat = it.latitude
mCurrentLon = it.longitude
initGeocoderSearch()
val markerOption = MarkerOptions()
markerOption.position(LatLng(mCurrentLat, mCurrentLon))
aMap?.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mCurrentLat, mCurrentLon)))
@@ -108,6 +145,8 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
marker?.position = cameraPosition.target
mCurrentLat = cameraPosition.target.latitude
mCurrentLon = cameraPosition.target.longitude
initGeocoderSearch()
}
}
@@ -144,6 +183,7 @@ class SelectLocationActivity : BaseVMBActivity<TestViewModel, ActivitySelectLoca
var locationMessageBean = LocationMessageBean()
locationMessageBean.longitude = mCurrentLon
locationMessageBean.latitude = mCurrentLat
locationMessageBean.desc = desc
intent.putExtra(ChatLayoutSetting.KEY_CUSTOM_MESSAGE, locationMessageBean.toJson())
setResult(ChatLayoutSetting.RESULT_CODE_LOCATION, intent)
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>
+54 -282
View File
@@ -79,7 +79,7 @@
android:textColor="@color/text_primary_25"
android:textSize="18sp"
android:textStyle="bold"
tools:text="艾比拜·牙库甫" />
android:text="--" />
<View
android:layout_width="0dp"
@@ -94,7 +94,7 @@
android:textColor="@color/text_primary_25"
android:textSize="14sp"
android:textStyle="bold"
tools:text="男性 · 52岁" />
android:text="--"/>
</LinearLayout>
<LinearLayout
@@ -110,7 +110,7 @@
android:textColor="@color/text_primary_25"
android:textSize="14sp"
android:textStyle="bold"
tools:text="新疆油田分公司采油一厂" />
android:text="--" />
<View
android:layout_width="0dp"
@@ -119,11 +119,13 @@
<!-- 档案已建立 标签 -->
<LinearLayout
android:id="@+id/ll_document_build"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:layout_marginTop="6dp"
android:background="@drawable/bg_teal_tag_round_4"
android:gravity="center"
android:visibility="invisible"
android:paddingStart="10dp"
android:paddingEnd="10dp">
@@ -175,7 +177,7 @@
android:gravity="end"
android:textColor="@color/text_primary_25"
android:textSize="13sp"
tools:text="650202197403151234" />
android:text="--" />
</LinearLayout>
<LinearLayout
@@ -200,7 +202,7 @@
android:gravity="end"
android:textColor="@color/text_primary_25"
android:textSize="13sp"
tools:text="157****5522" />
android:text="--" />
</LinearLayout>
</LinearLayout>
@@ -249,10 +251,12 @@
<!-- 重点关爱 标签 -->
<LinearLayout
android:id="@+id/ll_most_care"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:background="@drawable/bg_teal_round_24"
android:gravity="center"
android:visibility="invisible"
android:paddingStart="10dp"
android:paddingEnd="10dp">
@@ -299,7 +303,7 @@
android:layout_height="wrap_content"
android:textColor="@color/text_primary_25"
android:textSize="13sp"
tools:text="陈沐辰" />
android:text="--"/>
</LinearLayout>
<!-- 分隔线 -->
@@ -334,7 +338,8 @@
android:maxLines="2"
android:singleLine="false"
android:textColor="@color/text_tab_color"
android:textSize="13sp" />
android:textSize="13sp"
android:text="--" />
</LinearLayout>
</LinearLayout>
@@ -381,7 +386,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
android:orientation="horizontal"
android:visibility="invisible">
<View
android:layout_width="6dp"
@@ -438,7 +444,7 @@
android:textColor="@color/text_primary_25"
android:textSize="16sp"
android:textStyle="bold"
tools:text="68.20" />
android:text="--" />
<TextView
android:layout_width="wrap_content"
@@ -457,7 +463,7 @@
android:textColor="#2EB8B2"
android:textSize="24sp"
android:textStyle="bold"
tools:text="2.6" />
android:text="--"/>
</LinearLayout>
<!-- 标签行: 06-25 09:30 | 体重较上次减轻 -->
@@ -507,6 +513,12 @@
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_height"
android:layout_width="wrap_content"
@@ -514,7 +526,16 @@
android:textColor="@color/text_primary_25"
android:textSize="24sp"
android:textStyle="bold"
tools:text="172cm" />
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
android:layout_width="wrap_content"
@@ -548,7 +569,7 @@
android:textColor="@color/text_primary_25"
android:textSize="22sp"
android:textStyle="bold"
tools:text="22.4" />
android:text="--"/>
<TextView
android:layout_width="wrap_content"
@@ -600,7 +621,7 @@
android:textColor="@color/text_primary_25"
android:textSize="24sp"
android:textStyle="bold"
tools:text="52.6" />
android:text="--"/>
<TextView
android:layout_width="wrap_content"
@@ -669,7 +690,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
android:orientation="horizontal"
android:visibility="invisible">
<View
android:layout_width="6dp"
@@ -817,7 +839,6 @@
android:layout_weight="1.5"
android:background="@drawable/bg_table_data_cell"
android:gravity="center"
android:textColor="@color/red_f2"
android:textSize="12sp"
tools:text="78mmHg" />
</LinearLayout>
@@ -918,7 +939,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
android:orientation="horizontal"
android:visibility="invisible">
<View
android:layout_width="6dp"
@@ -1817,15 +1839,6 @@
android:background="@drawable/bg_gradient_underline_reverse" />
</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
android:layout_width="match_parent"
@@ -1842,16 +1855,14 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="#B6B6B6"
android:textSize="11sp"
tools:text="填报人:李秀芳(健康管理师)" />
android:textSize="11sp"/>
<TextView
android:id="@+id/tv_cabin_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#B6B6B6"
android:textSize="11sp"
tools:text="2026-05-15 14:30" />
android:textSize="11sp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -1871,130 +1882,24 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_medical_advice">
<TextView
<!--<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_gradient_underline_vertical"
android:text="【健康综述】"
android:text="【小屋意见】"
android:textColor="@color/text_primary_25"
android:textSize="14sp"
android:textStyle="bold" />
android:textStyle="bold" />-->
<TextView
android:id="@+id/tv_cabin_summary"
android:id="@+id/tv_cabinOpinion"
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="患者张建国,男,52岁,高血压病史5年,目前血压控制不理想(收缩压持续偏高)。BMI 28.5,属于肥胖。空腹血糖偏高(6.8mmol/L),处于糖尿病前期。血脂三项均超标,甘油三酯明显偏高。血尿酸持续偏高,存在痛风风险。同型半胱氨酸偏高,心血管风险增加。" />
</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个月后复查全套生化指标,评估治疗效果" />
android:text="暂无小屋意见。" />
</LinearLayout>
<ImageView
@@ -2009,41 +1914,6 @@
app:layout_constraintEnd_toEndOf="parent"
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>
<!-- ========== 专家医生意见 ========== -->
@@ -2108,21 +1978,19 @@
android:paddingEnd="16dp">
<TextView
android:id="@+id/tv_doctor_reporter"
android:id="@+id/tv_expertOpinionUserName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="#B6B6B6"
android:textSize="11sp"
android:text="填报人:陈明远(主任医师)" />
android:textSize="11sp" />
<TextView
android:id="@+id/tv_doctor_time"
android:id="@+id/tv_expertOpinionTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#B6B6B6"
android:textSize="11sp"
android:text="2026-05-15 14:30" />
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
@@ -2141,122 +2009,26 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_doctor_opinion">
<TextView
<!--<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_gradient_underline_vertical"
android:text="【综合评估】"
android:text="【专家医生意见】"
android:textColor="@color/text_primary_25"
android:textSize="14sp"
android:textStyle="bold" />
android:textStyle="bold" />-->
<TextView
android:id="@+id/tv_cabin_assessment"
android:id="@+id/tv_expertOpinion"
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="患者为代谢综合征高危人群,同时合并高血压、肥胖、高尿酸血症、高同型半胱氨酸血症,心血管事件风险较高。目前空腹血糖6.8mmol/L,建议完善口服葡萄糖耐量试验(OGTT)以明确是否存在糖耐量异常。" />
android:text="暂无专家医生意见。" />
</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
android:layout_width="16dp"
android:layout_height="0dp"
@@ -2,46 +2,95 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- 全屏半透明背景层,居中显示白色卡片 -->
<FrameLayout
android:id="@+id/fl_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
android:background="@android:color/transparent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:layout_gravity="center"
android:orientation="vertical"
android:background="@drawable/rectangle_top_round_corner20_white">
android:background="@drawable/bg_emergency_dialog_card"
android:paddingBottom="16dp">
<!-- 标题栏 -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingTop="16dp"
android:paddingBottom="12dp">
<TextView
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:layout_gravity="center"
android:text="请选择正在应急的工单"
android:textColor="@color/emergency_text_dark"
android:textSize="18sp"
android:textStyle="bold" />
<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:layout_marginTop="@dimen/dp_18"
android:maxHeight="@dimen/dp_300"
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="@dimen/dp_0_5"
android:background="@color/theme_color" />
android:layout_height="1dp"
android:background="@color/emergency_divider" />
<!-- 确认选择按钮 -->
<TextView
android:id="@+id/tv_cancel"
android:id="@+id/tv_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="44dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:gravity="center"
android:paddingVertical="@dimen/dp_20"
android:text="取消"
android:textColor="@color/text_black_66"
android:textSize="@dimen/txt14"
android:background="?attr/selectableItemBackground" />
android:text="确认选择"
android:textColor="@android:color/white"
android:textSize="18sp"
android:textStyle="bold"
android:background="@drawable/bg_emergency_confirm_btn" />
</LinearLayout>
</FrameLayout>
</layout>
+95 -22
View File
@@ -2,48 +2,121 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:id="@+id/root_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingTop="16dp"
android:paddingBottom="14dp"
android:background="@drawable/bg_emergency_item_unselected">
<!-- 顶部:姓名 + 选择圆圈 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingHorizontal="@dimen/dp_16"
android:paddingVertical="@dimen/dp_16"
android:gravity="center_vertical"
android:background="?attr/selectableItemBackground">
android:gravity="center_vertical">
<TextView
android:id="@+id/tv_user_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center"
android:textColor="@color/text_black_33"
android:textSize="@dimen/txt14"
android:layout_weight="1"
android:textColor="@color/emergency_text_dark"
android:textSize="15sp"
android:textStyle="bold"
android:ellipsize="end"
android:maxLines="1"
tools:text="张三" />
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_user_sex"
android:layout_width="0dp"
android:id="@+id/tv_dept_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:layout_marginHorizontal="@dimen/dp_12"
android:textColor="@color/text_black_66"
android:textSize="@dimen/txt13"
tools:text="男" />
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:maxLines="1"
android:background="@drawable/bg_dept_badge_unselected"
tools:text="员工健康事务部" />
<!-- 内部分割线 -->
<View
android:id="@+id/view_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="10dp"
android:background="@color/emergency_divider" />
<!-- 地址行 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
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="5"
android:textColor="@color/text_black_99"
android:textSize="@dimen/txt13"
android:maxLines="1"
android:layout_weight="1"
android:layout_marginStart="8dp"
android:textColor="@color/emergency_text_body"
android:textSize="13sp"
android:ellipsize="end"
tools:text="某某科技有限公司" />
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>
</layout>
+12
View File
@@ -132,6 +132,18 @@
<color name="text_orange_10">#F36510</color>
<color name="text_blue_BE">#21BEBE</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_tab_color">#77849E</color>
+10
View File
@@ -39,6 +39,16 @@
<item name="android:backgroundDimAmount">0.5</item>
</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">
<item name="android:windowEnterAnimation">@anim/dialog_in_anim</item>
<item name="android:windowExitAnimation">@anim/dialog_out_anim</item>