feat(chat): 为健康客户端添加位置消息长按功能和应急就医相关功能

- 在LocationMessageHolder中为健康客户端添加位置消息长按监听器
- 优化TUIGroupChatFragment中的代码格式和空格调整
- 在TUIGroupChatFragment中添加对健康客户端的特殊处理逻辑
- 注册ProposalActivity到AndroidManifest.xml
- 添加健康档案页面相关的颜色定义
- 在EmergencyFragment中添加急救人员相关功能和界面元素
- 更新HomeFragment中的导航逻辑以跳转到健康档案页面
- 创建ProposalActivity和ProposalViewModel用于健康档案功能
- 添加应急就医群的相关字符串资源
This commit is contained in:
2026-07-14 19:15:11 +08:00
parent 4b5da9269d
commit b29c46b906
9 changed files with 1804 additions and 15 deletions
+2 -2
View File
@@ -199,7 +199,7 @@
android:screenOrientation="portrait"/> android:screenOrientation="portrait"/>
<activity android:name=".ui.activity.EmptyActivity" <activity android:name=".ui.activity.EmptyActivity"
android:screenOrientation="portrait"/> android:screenOrientation="portrait"/>
<activity android:name=".ui.activity.ProposalActivity"
android:screenOrientation="portrait"/>
</application> </application>
</manifest> </manifest>
@@ -97,13 +97,13 @@ class EmergencyFragment :
// 0.0, // 0.0,
// 0.0 // 0.0
// ) // )
var mHeadType= mutableListOf<EmergencyDictBean>() var mHeadType = mutableListOf<EmergencyDictBean>()
// mHeadType.add(EmergencyDictBean("全部","全部","全部","0",true)) // mHeadType.add(EmergencyDictBean("全部","全部","全部","0",true))
mHeadType.add(EmergencyDictBean("油田医院","油田医院","油田医院","1",true)) mHeadType.add(EmergencyDictBean("油田医院", "油田医院", "油田医院", "1", true))
// mHeadType.add(EmergencyDictBean("合作医院","合作医院","合作医院","2",false)) // mHeadType.add(EmergencyDictBean("合作医院","合作医院","合作医院","2",false))
mHeadType.add(EmergencyDictBean("健康小屋","健康小屋","健康小屋","3",false)) mHeadType.add(EmergencyDictBean("健康小屋", "健康小屋", "健康小屋", "3", false))
mHeadType.add(EmergencyDictBean("AED","AED","AED","4",false)) mHeadType.add(EmergencyDictBean("AED", "AED", "AED", "4", false))
mHeadType.add(EmergencyDictBean("救护车","救护车","救护车","5",false)) mHeadType.add(EmergencyDictBean("救护车", "救护车", "救护车", "5", false))
mBinding.fragmentEmergencyHeadRv.setHeadData(mHeadType) { titleBean -> mBinding.fragmentEmergencyHeadRv.setHeadData(mHeadType) { titleBean ->
// if (titleBean.value.equals("3")) { // if (titleBean.value.equals("3")) {
@@ -168,6 +168,7 @@ class EmergencyFragment :
super.onResume() super.onResume()
mMapView?.onResume() mMapView?.onResume()
} }
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
mMapView?.onPause() mMapView?.onPause()
@@ -227,6 +228,7 @@ class EmergencyFragment :
fragmentEmergencyPhone.setOnClickListener(this@EmergencyFragment) fragmentEmergencyPhone.setOnClickListener(this@EmergencyFragment)
fragmentEmergencyCardNavigation.setOnClickListener(this@EmergencyFragment) fragmentEmergencyCardNavigation.setOnClickListener(this@EmergencyFragment)
fragmentEmergencyMarkerInfo.setOnClickListener(this@EmergencyFragment) fragmentEmergencyMarkerInfo.setOnClickListener(this@EmergencyFragment)
fragmentEmergencyParamedic.setOnClickListener(this@EmergencyFragment)
} }
} }
@@ -284,6 +286,24 @@ class EmergencyFragment :
) )
}) })
} }
R.id.fragment_emergency_paramedic -> {
mViewModel.getIMGroupInfo(
getString(R.string.title_paramedic_group),
mCurrentLon,
mCurrentLat,
successCall = {
IMInputActionSettingUtils.createEmergencySetting()
activity?.startGroupChat(
it.groupId,
getString(R.string.title_paramedic_group),
false,
it.member,
workBean = WorkBean(it.id, TUIUtils.WORK_TYPE_EMERGENCY)
)
})
}
R.id.fragment_emergency_marker_info -> { R.id.fragment_emergency_marker_info -> {
} }
@@ -350,7 +370,11 @@ class EmergencyFragment :
} }
if (markerList.size == 1) { if (markerList.size == 1) {
MapUtils.setMapZoonloAndZoom(mAMap, LatLng(markerList.get(0).latitude, markerList.get(0).longitude),11) MapUtils.setMapZoonloAndZoom(
mAMap,
LatLng(markerList.get(0).latitude, markerList.get(0).longitude),
11
)
} else { } else {
MapUtils.setMapZoonlo(mAMap, 200, ArrayList(newlist)) MapUtils.setMapZoonlo(mAMap, 200, ArrayList(newlist))
} }
@@ -36,6 +36,7 @@ import com.xjjk.healthyclients.superfuntion.startWebActivity
import com.xjjk.healthyclients.superfuntion.toZeroDefault import com.xjjk.healthyclients.superfuntion.toZeroDefault
import com.xjjk.healthyclients.ui.activity.EmptyActivity import com.xjjk.healthyclients.ui.activity.EmptyActivity
import com.xjjk.healthyclients.ui.activity.LoginActivity import com.xjjk.healthyclients.ui.activity.LoginActivity
import com.xjjk.healthyclients.ui.activity.ProposalActivity
import com.xjjk.healthyclients.ui.activity.guidance.adapter.GuidanceFragmentDoctorAdapter import com.xjjk.healthyclients.ui.activity.guidance.adapter.GuidanceFragmentDoctorAdapter
import com.xjjk.healthyclients.ui.activity.home.HomeBannerDetailActivity import com.xjjk.healthyclients.ui.activity.home.HomeBannerDetailActivity
import com.xjjk.healthyclients.ui.activity.home.HomeNoticeListActivity import com.xjjk.healthyclients.ui.activity.home.HomeNoticeListActivity
@@ -210,7 +211,7 @@ class HomeFragment :
R.id.img_right -> { R.id.img_right -> {
val bundle = Bundle() val bundle = Bundle()
bundle.putString("title", "一人一案") bundle.putString("title", "一人一案")
toActivity(EmptyActivity::class.java, bundle) toActivity(ProposalActivity::class.java, bundle)
} }
R.id.home_head_tab1 -> { R.id.home_head_tab1 -> {
@@ -0,0 +1,40 @@
package com.xjjk.healthyclients.ui.activity
import android.os.Bundle
import android.view.View
import com.xjjk.healthyclients.R
import com.xjjk.healthyclients.base.BaseVMBActivity
import com.xjjk.healthyclients.databinding.ActivityProposalBinding
import com.xjjk.healthyclients.ui.viewmodel.ProposalViewModel
/**
* 一人一案(健康档案)页面
*/
class ProposalActivity :
BaseVMBActivity<ProposalViewModel, ActivityProposalBinding>(R.layout.activity_proposal) {
override fun initView(savedInstanceState: Bundle?) {
val stringExtra = intent.getStringExtra("title")
mBinding.toolbarLay.title = stringExtra ?: "一人一案"
}
override fun initData() {
// 加载健康档案数据
}
override fun bindEvent() {
// 绑定事件
}
override fun processClick(paramView: View?) {
// 处理点击事件
}
override fun transparentStatusBar(): Boolean {
return false
}
override fun statusBarDarkFont(): Boolean {
return true
}
}
@@ -0,0 +1,13 @@
package com.xjjk.healthyclients.ui.viewmodel
import com.xjjk.healthyclients.base.viewmodel.BaseViewModel
/**
* 一人一案(健康档案)ViewModel
*/
class ProposalViewModel : BaseViewModel() {
override fun init() {
// 初始化逻辑
}
}
File diff suppressed because it is too large Load Diff
@@ -65,20 +65,22 @@
android:id="@+id/fragment_emergency_call_120" android:id="@+id/fragment_emergency_call_120"
android:layout_width="@dimen/dp_70" android:layout_width="@dimen/dp_70"
android:layout_height="@dimen/dp_70" android:layout_height="@dimen/dp_70"
android:layout_marginRight="@dimen/dp_16" android:layout_marginEnd="@dimen/dp_16"
android:src="@drawable/ic_emergency_120" /> android:src="@drawable/ic_emergency_120" />
<ImageView <ImageView
android:id="@+id/fragment_emergency_seek_doctor" android:id="@+id/fragment_emergency_seek_doctor"
android:layout_width="@dimen/dp_70" android:layout_width="@dimen/dp_70"
android:layout_height="@dimen/dp_70" android:layout_height="@dimen/dp_70"
android:layout_marginLeft="@dimen/dp_16"
android:layout_toRightOf="@+id/fragment_emergency_call_120"
android:src="@drawable/ic_emergency_seek_doctor" /> android:src="@drawable/ic_emergency_seek_doctor" />
<ImageView
android:id="@+id/fragment_emergency_paramedic"
android:layout_width="@dimen/dp_70"
android:layout_height="@dimen/dp_70"
android:layout_marginStart="@dimen/dp_16"
android:src="@drawable/ic_emergency_120" />
</LinearLayout> </LinearLayout>
</RelativeLayout> </RelativeLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
+8
View File
@@ -151,4 +151,12 @@
<color name="demo_main_tab_text_selected_color_light">#006EFF</color> <color name="demo_main_tab_text_selected_color_light">#006EFF</color>
<!-- 健康档案页面颜色 -->
<color name="text_primary_25">#252535</color>
<color name="text_teal_dark">#194C4A</color>
<color name="red_f2">#F24439</color>
<color name="divider_ea">#EAECF1</color>
<color name="gray_80">#808080</color>
<color name="bg_gray_f5">#F5F7FB</color>
</resources> </resources>
+1
View File
@@ -43,6 +43,7 @@
<string name="title_Hospital_homepage_info">医院概况</string> <string name="title_Hospital_homepage_info">医院概况</string>
<string name="title_User_Rate">用户评价</string> <string name="title_User_Rate">用户评价</string>
<string name="title_emergency">应急就医</string> <string name="title_emergency">应急就医</string>
<string name="title_paramedic_group">应急就医群</string>
<string name="title_meidacal_point">一线医疗</string> <string name="title_meidacal_point">一线医疗</string>
<string name="title_emergency_detail">应急详情</string> <string name="title_emergency_detail">应急详情</string>
<string name="title_guidance">健康咨询</string> <string name="title_guidance">健康咨询</string>