diff --git a/app/build.gradle b/app/build.gradle
index 7fe84bb..2636182 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -89,7 +89,6 @@ android {
main {
jniLibs.srcDirs = ['libs']
res.srcDirs = [
- 'src/main/res-login',
'src/main/res-health-check',
'src/main/res-health-record',
// 'src/main/res-intervention',
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e0db0e9..6e7b124 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -184,8 +184,21 @@
-
+
+
+
+
+
diff --git a/app/src/main/assets/tab.json b/app/src/main/assets/tab.json
index 2140e7b..9f84a0a 100644
--- a/app/src/main/assets/tab.json
+++ b/app/src/main/assets/tab.json
@@ -9,6 +9,12 @@
"tabs": [
{
"tabName": "首页",
+ "tabTag": "key_home_fragment",
+ "iconNormal": "main_home_tab_home_normal",
+ "iconSelected": "main_home_tab_home_selected"
+ },
+ {
+ "tabName": "咨询",
"tabTag": "key_guidance_fragment",
"iconNormal": "main_home_tab_index_normal",
"iconSelected": "main_home_tab_index_selected"
diff --git a/app/src/main/java/com/xjjk/healthyclients/MainActivity.kt b/app/src/main/java/com/xjjk/healthyclients/MainActivity.kt
index 1f00d60..efc5de2 100644
--- a/app/src/main/java/com/xjjk/healthyclients/MainActivity.kt
+++ b/app/src/main/java/com/xjjk/healthyclients/MainActivity.kt
@@ -26,9 +26,11 @@ import com.xjjk.healthyclients.base.BaseVMBActivity
import com.xjjk.healthyclients.bean.CardInfoBean
import com.xjjk.healthyclients.bottomtab.HomeBottomTabLayout
import com.xjjk.healthyclients.databinding.ActivityMainBinding
+import com.xjjk.healthyclients.event.HomeTabChangeEvent
import com.xjjk.healthyclients.event.RefreshEvent
import com.xjjk.healthyclients.fragment.EmergencyFragment
import com.xjjk.healthyclients.fragment.GuidanceFragment
+import com.xjjk.healthyclients.fragment.HomeFragment
import com.xjjk.healthyclients.fragment.MonitorFragment
import com.xjjk.healthyclients.superfuntion.loginIm
import com.xjjk.healthyclients.superfuntion.startAllDoctorActivity
@@ -48,6 +50,7 @@ class MainActivity : BaseVMBActivity(R.layou
HomeBottomTabLayout.HomeBottomTabLayoutCallback {
//每个tab对应的tag,和json配置文件中保持一致
+ val TAG_HOME = "key_home_fragment"
val TAG_GUIDANCE = "key_guidance_fragment"
val TAG_EMERGENCY = "key_emergency_fragment"
val TAG_MONITOR = "key_monitor_fragment"
@@ -275,9 +278,9 @@ class MainActivity : BaseVMBActivity(R.layou
override fun getFragmentByTag(tabTag: String): Fragment? {
when (tabTag) {
-// TAG_GUIDANCE -> {
-// return HomeFragment()
-// }
+ TAG_HOME -> {
+ return HomeFragment()
+ }
TAG_GUIDANCE -> {
return GuidanceFragment()
@@ -310,6 +313,11 @@ class MainActivity : BaseVMBActivity(R.layou
return null
}
+ fun changeTab(index: Int) {
+ mBinding.mainTabLayout.changeTab(index)
+ }
+
+
override fun transparentStatusBar(): Boolean {
return true
}
@@ -403,6 +411,10 @@ class MainActivity : BaseVMBActivity(R.layou
mViewModel.selectTfHelper(event.doctor)
println("头像id"+doctorId)
}
+ }else if (event is HomeTabChangeEvent) {
+ if (event.index >= 0){
+ changeTab(event.index)
+ }
}
}
} catch (e: Exception) {
diff --git a/app/src/main/java/com/xjjk/healthyclients/adapter/home/HomeMessageAdapter.kt b/app/src/main/java/com/xjjk/healthyclients/adapter/home/HomeMessageAdapter.kt
new file mode 100644
index 0000000..d06b357
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/adapter/home/HomeMessageAdapter.kt
@@ -0,0 +1,18 @@
+package com.xjjk.healthyclients.adapter.home
+
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.module.LoadMoreModule
+import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.sw.healthyclients.utils.DateUtil
+import com.xjjk.healthyclients.R
+import com.xjjk.healthyclients.bean.home.HomeNoticeBean
+
+class HomeMessageAdapter :
+ BaseQuickAdapter(R.layout.item_home_message), LoadMoreModule {
+
+ override fun convert(holder: BaseViewHolder, item: HomeNoticeBean) {
+ holder.setText(R.id.tv_title, item.title)
+ .setText(R.id.tv_date, DateUtil.dateStrToStrMiddle(item.createTime))
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/base/BaseVMBFragment.kt b/app/src/main/java/com/xjjk/healthyclients/base/BaseVMBFragment.kt
index 27880e6..0526cb3 100644
--- a/app/src/main/java/com/xjjk/healthyclients/base/BaseVMBFragment.kt
+++ b/app/src/main/java/com/xjjk/healthyclients/base/BaseVMBFragment.kt
@@ -350,12 +350,6 @@ abstract class BaseVMBFragment(private
activity?.startActivity(intent)
}
- /**
- * 历史遗留方法,懒得改以前的了,新页面无视即可
- */
- open fun getStatusbarStyle(): Int {
- return 0
- } // 0 主题色+白字 1白底黑字
private fun createDialog() {
dialog = LoadingDialog(
diff --git a/app/src/main/java/com/xjjk/healthyclients/bean/home/HomeBean.kt b/app/src/main/java/com/xjjk/healthyclients/bean/home/HomeBean.kt
new file mode 100644
index 0000000..ec6f816
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/bean/home/HomeBean.kt
@@ -0,0 +1,51 @@
+package com.xjjk.healthyclients.bean.home
+
+
+data class HomeNoticeBean(
+ val content: String,
+ val createBy: String,
+ val createTime: String,
+ val delFlag: String,
+ val departScopeList: List,
+ val endTime: String,
+ val id: String,
+ val noticeStatus: Int,
+ val orgCode: String,
+ val scopeType: Int,
+ val startTime: String,
+ val title: String,
+ val updateBy: String,
+ val updateTime: String,
+ val userScopeList: List,
+)
+
+data class DepartScope(
+ val id: String,
+ val noticeId: String,
+ val record: String,
+ val scopeId: String,
+ val type: Int
+)
+
+data class HomeBannerBean(
+ val createBy: String,
+ val createTime: String,
+ val delFlag: String,
+ val endTime: String,
+ val id: String,
+ val isLongTermEffective: String,
+ val jumpUrl: String,
+ val memo: String,
+ val name: String,
+ val pageNo: Int,
+ val pageSize: Int,
+ val photoUrl: String?,
+ val showLocation: String,
+ val sort: Int,
+ val startTime: String,
+ val status: String,
+ val tfJump: String,
+ val updateBy: String,
+ val updateTime: String
+)
+
diff --git a/app/src/main/java/com/xjjk/healthyclients/bean/user/UserPointBean.kt b/app/src/main/java/com/xjjk/healthyclients/bean/user/UserPointBean.kt
new file mode 100644
index 0000000..979147f
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/bean/user/UserPointBean.kt
@@ -0,0 +1,70 @@
+package com.xjjk.healthyclients.bean.user
+
+/**
+ * 我的积分
+ */
+data class UserPointBean(
+
+ val addPointsSum: Int,
+ val exchangePointsSum: Int,
+ val points: Int
+)
+
+
+data class PointDetailBean(
+ val current: Int,
+ val pages: Int,
+ val records: MutableList?,
+ val size: Int,
+ val total: Int
+)
+
+/**
+ * 积分明细
+ */
+data class PointRecord(
+ val businessInfo: String,
+ val createMonthStr: String,
+ val createTime: String,
+ val id: Int,
+ val points: Int,
+ val remark: String
+)
+
+/**
+ * 积分榜
+ */
+data class PointRank(
+ val avatar: String,
+ val deptName: String,
+ val orgName: String,
+ val pointSum: Int,
+ val ranking: Int,
+ val realName: String,
+ val sex: Int,
+ val userId: String
+)
+
+/**
+ * 积分打卡-入参
+ */
+data class CheckInBean(
+ val businessId: Int,
+ val points: Int,
+ val remark: String,
+ val sourceType: String,
+ val userId: String
+)
+
+/**
+ * 积分任务
+ */
+data class PointsTask(
+ val clockInStatus: Int,
+ val frequency: Int,
+ val icon: String,
+ val points: Int,
+ val ruleCategory: Int,
+ val ruleDesc: String,
+ val ruleId: Int
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/data/api/HomeApi.kt b/app/src/main/java/com/xjjk/healthyclients/data/api/HomeApi.kt
new file mode 100644
index 0000000..3e4e651
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/data/api/HomeApi.kt
@@ -0,0 +1,67 @@
+package com.xjjk.healthyclients.data.api
+
+import com.xjjk.healthyclients.bean.home.HomeBannerBean
+import com.xjjk.healthyclients.bean.home.HomeNoticeBean
+import com.xjjk.healthyclients.bean.user.CheckInBean
+import com.xjjk.healthyclients.bean.user.PointDetailBean
+import com.xjjk.healthyclients.bean.user.PointRank
+import com.xjjk.healthyclients.bean.user.PointRecord
+import com.xjjk.healthyclients.bean.user.PointsTask
+import com.xjjk.healthyclients.bean.user.UserPointBean
+import com.xjjk.healthyclients.data.bean.ApiResponse
+import okhttp3.RequestBody
+import retrofit2.http.Body
+import retrofit2.http.GET
+import retrofit2.http.POST
+import retrofit2.http.QueryMap
+
+interface HomeApi {
+
+ /**
+ * 获取首页消息通知列表
+ */
+ @GET("/health-system/app/sys/message/notice/list")
+ suspend fun getHomeNoticeList(@QueryMap params: MutableMap): ApiResponse>
+
+ /**
+ * 消息通知-通过id查询
+ */
+ @GET("/health-system/app/sys/message/notice/queryById")
+ suspend fun getHomeNoticeDetail(@QueryMap params: MutableMap): ApiResponse
+
+ /**
+ * 首页banner
+ */
+ @GET("/sys/api/banner/selectBannerList")
+ suspend fun getHomeBannerList(@QueryMap params: MutableMap): ApiResponse>
+
+ /**
+ * 用户积分信息-我的积分
+ */
+ @GET("/health-system/bank/userPoints/app/myPoints")
+ suspend fun getUserPoints(@QueryMap params: MutableMap): ApiResponse>
+
+ /**
+ * 用户积分信息-积分任务
+ */
+ @GET("/health-system/bank/userPoints/app/pointsTaskList")
+ suspend fun getUserPointsTask(@QueryMap params: MutableMap): ApiResponse
+
+ /**
+ * 用户积分信息-积分明细
+ */
+ @POST("/health-system/bank/userPoints/app/pointRecord")
+ suspend fun postUserPointsRecord(@Body requestBody: RequestBody): ApiResponse>
+
+ /**
+ * 用户积分信息-积分榜
+ */
+ @POST("/health-system/bank/userPoints/app/pointRanking")
+ suspend fun postUserPointsRank(@Body requestBody: RequestBody): ApiResponse>
+ /**
+ * 用户积分信息-积分打卡
+ */
+ @POST("/health-system/bank/userPoints/app/pointCheckIn")
+ suspend fun postUserPointsCheckIn(@Body requestBody: RequestBody): ApiResponse
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/data/repository/HomeRepository.kt b/app/src/main/java/com/xjjk/healthyclients/data/repository/HomeRepository.kt
new file mode 100644
index 0000000..6388ce4
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/data/repository/HomeRepository.kt
@@ -0,0 +1,78 @@
+package com.xjjk.healthyclients.data.repository
+
+import com.xjjk.healthyclients.base.repository.BaseRepository
+import com.xjjk.healthyclients.bean.home.HomeBannerBean
+import com.xjjk.healthyclients.bean.home.HomeNoticeBean
+import com.xjjk.healthyclients.bean.user.CheckInBean
+import com.xjjk.healthyclients.bean.user.PointDetailBean
+import com.xjjk.healthyclients.bean.user.PointRank
+import com.xjjk.healthyclients.bean.user.PointRecord
+import com.xjjk.healthyclients.bean.user.PointsTask
+import com.xjjk.healthyclients.bean.user.UserPointBean
+import com.xjjk.healthyclients.data.api.HomeApi
+import com.xjjk.healthyclients.data.bean.ApiResponse
+import com.xjjk.healthyclients.retrofit.RetrofitManager
+import com.xjjk.healthyclients.retrofit.RetrofitManager.toRequestBody
+import com.xjjk.healthyclients.superfuntion.toJson
+
+object HomeRepository : BaseRepository() {
+
+ private val service by lazy { RetrofitManager.getService(HomeApi::class.java) }
+
+
+ suspend fun getHomeNoticeList(
+ pageNo: Int,
+ pageSize: Int
+ ): ApiResponse> {
+ val map = mutableMapOf()
+ map["pageNo"] = pageNo
+ map["pageSize"] = pageSize
+
+ return apiCall { service.getHomeNoticeList(map) }
+ }
+
+ suspend fun getHomeNoticeDetail(id: String): ApiResponse {
+ val map = mutableMapOf()
+ map["id"] = id
+ return apiCall { service.getHomeNoticeDetail(map) }
+ }
+
+ suspend fun getHomeBannerList(showLocation: String): ApiResponse> {
+ val map = mutableMapOf()
+ map["showLocation"] = showLocation
+ return apiCall { service.getHomeBannerList(map) }
+ }
+
+ suspend fun getUserPoints(): ApiResponse> {
+ val map = mutableMapOf()
+ return apiCall { service.getUserPoints(map) }
+ }
+
+ suspend fun getUserPointsTask(): ApiResponse {
+ val map = mutableMapOf()
+ return apiCall { service.getUserPointsTask(map) }
+ }
+
+ suspend fun postUserPointsRecord(changeType: Int): ApiResponse> {
+ val params = mutableMapOf()
+ params["changeType"] = changeType
+ return apiCall { service.postUserPointsRecord(params.toJson().toRequestBody()) }
+ }
+
+ // rankType(榜单类型,1周榜,2月榜,10总榜)
+ suspend fun postUserPointsRank(
+ pageNo: Int,
+ pageSize: Int,
+ rankType: Int
+ ): ApiResponse> {
+ val params = mutableMapOf()
+ params["pageNo"] = pageNo
+ params["pageSize"] = pageSize
+ params["rankType"] = rankType
+ return apiCall { service.postUserPointsRank(params.toJson().toRequestBody()) }
+ }
+
+ suspend fun postUserPointsCheckIn(checkInBean: CheckInBean): ApiResponse {
+ return apiCall { service.postUserPointsCheckIn(checkInBean.toJson().toRequestBody()) }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/event/HomeTabChangeEvent.kt b/app/src/main/java/com/xjjk/healthyclients/event/HomeTabChangeEvent.kt
new file mode 100644
index 0000000..6121991
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/event/HomeTabChangeEvent.kt
@@ -0,0 +1,9 @@
+package com.xjjk.healthyclients.event
+
+/**
+ * 首页tab切换
+ */
+class HomeTabChangeEvent {
+ var index: Int = -1
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/fragment/EmergencyFragment.kt b/app/src/main/java/com/xjjk/healthyclients/fragment/EmergencyFragment.kt
index 497291e..e9f841e 100644
--- a/app/src/main/java/com/xjjk/healthyclients/fragment/EmergencyFragment.kt
+++ b/app/src/main/java/com/xjjk/healthyclients/fragment/EmergencyFragment.kt
@@ -289,10 +289,6 @@ class EmergencyFragment :
}
}
- override fun getStatusbarStyle(): Int {
- return 1
- }
-
override fun onLocationChanged(amapLocation: AMapLocation?) {
if (mListener != null && amapLocation != null) {
if (amapLocation != null
diff --git a/app/src/main/java/com/xjjk/healthyclients/fragment/GuidanceFragment.kt b/app/src/main/java/com/xjjk/healthyclients/fragment/GuidanceFragment.kt
index 1f7d673..1741277 100644
--- a/app/src/main/java/com/xjjk/healthyclients/fragment/GuidanceFragment.kt
+++ b/app/src/main/java/com/xjjk/healthyclients/fragment/GuidanceFragment.kt
@@ -23,7 +23,6 @@ import com.xjjk.healthyclients.superfuntion.startGroupChat
import com.xjjk.healthyclients.superfuntion.startLoginActivity
import com.xjjk.healthyclients.superfuntion.startMyGuidanceActivity
import com.xjjk.healthyclients.ui.activity.guidance.adapter.GuidanceFragmentDoctorAdapter
-import com.xjjk.healthyclients.ui.activity.home.HomeBannerDetailActivity
import com.xjjk.healthyclients.ui.viewmodel.GuidanceFragmentViewModel
import com.xjjk.healthyclients.utils.ConstantUtils
import com.xjjk.healthyclients.utils.IMInputActionSettingUtils
@@ -197,9 +196,9 @@ class GuidanceFragment :
}
}
}
- R.id.banner->{
- toActivity(HomeBannerDetailActivity::class.java)
- }
+// R.id.banner->{
+// toActivity(HomeBannerDetailActivity::class.java)
+// }
}
}
@@ -209,7 +208,7 @@ class GuidanceFragment :
ivLeft?.setOnClickListener(this@GuidanceFragment)
ivRight?.setOnClickListener(this@GuidanceFragment)
tvDoctorMore?.setOnClickListener(this@GuidanceFragment)
- banner?.setOnClickListener(this@GuidanceFragment)
+// banner?.setOnClickListener(this@GuidanceFragment)
}
}
diff --git a/app/src/main/java/com/xjjk/healthyclients/fragment/HomeFragment.kt b/app/src/main/java/com/xjjk/healthyclients/fragment/HomeFragment.kt
new file mode 100644
index 0000000..93618c4
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/fragment/HomeFragment.kt
@@ -0,0 +1,257 @@
+package com.xjjk.healthyclients.fragment
+
+import android.os.Bundle
+import android.view.View
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+import com.sw.healthyclients.data.local.DataStoreManager
+import com.tencent.qcloud.tuikit.tuichat.bean.WorkBean
+import com.xjjk.healthyclients.R
+import com.xjjk.healthyclients.adapter.common.MultiItemTypeAdapter
+import com.xjjk.healthyclients.base.BaseVMBFragment
+import com.xjjk.healthyclients.bean.guidance.GuidanceListBean
+import com.xjjk.healthyclients.databinding.FragmentHomeBinding
+import com.xjjk.healthyclients.event.HomeTabChangeEvent
+import com.xjjk.healthyclients.event.RefreshEvent
+import com.xjjk.healthyclients.superfuntion.initColors
+import com.xjjk.healthyclients.superfuntion.load
+import com.xjjk.healthyclients.superfuntion.startAppointmentWaitAffirmActivity
+import com.xjjk.healthyclients.superfuntion.startEmergencySeekDoctorActivity
+import com.xjjk.healthyclients.superfuntion.startGroupChat
+import com.xjjk.healthyclients.superfuntion.startLoginActivity
+import com.xjjk.healthyclients.superfuntion.startMyGuidanceActivity
+import com.xjjk.healthyclients.ui.activity.EmptyActivity
+import com.xjjk.healthyclients.ui.activity.guidance.adapter.GuidanceFragmentDoctorAdapter
+import com.xjjk.healthyclients.ui.activity.home.HomeBannerDetailActivity
+import com.xjjk.healthyclients.ui.activity.home.HomeNoticeListActivity
+import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
+import com.xjjk.healthyclients.utils.ConstantUtils
+import com.xjjk.healthyclients.utils.IMInputActionSettingUtils
+import com.xjjk.healthyclients.utils.TUIUtils
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.launch
+import org.greenrobot.eventbus.EventBus
+
+/**
+ * 首页fragment
+ */
+class HomeFragment :
+ BaseVMBFragment(R.layout.fragment_home),
+ SwipeRefreshLayout.OnRefreshListener {
+
+ var stringList: MutableList = mutableListOf()
+ var mDoctorList = arrayListOf()
+ var mGuidanceFragmentDoctorAdapter: GuidanceFragmentDoctorAdapter? = null
+
+
+ override fun initView(root: View?, savedInstanceState: Bundle?) {
+ mBinding.swipeRefresh.initColors()
+ mBinding.swipeRefresh.setOnRefreshListener(this@HomeFragment)
+
+ var manager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
+ mBinding.layoutItem3.fragmentGuidanceRvDoctor.layoutManager = manager
+ mGuidanceFragmentDoctorAdapter =
+ GuidanceFragmentDoctorAdapter(
+ requireContext(),
+ R.layout.item_fragment_doctor,
+ mDoctorList
+ ) {}
+ mGuidanceFragmentDoctorAdapter!!.setOnItemClickListener(object :
+ MultiItemTypeAdapter.OnItemClickListener {
+ override fun onItemClick(
+ view: View?,
+ holder: RecyclerView.ViewHolder?,
+ position: Int,
+ ) {
+ var bean = mDoctorList[position]
+ if (bean.contentType == "1") {
+ var isSelf = false
+ //大于等于4 不可发消息
+ var status = 0
+ var sendMessage = false
+ try {
+ status = bean.contentStatus.toInt()
+ } catch (e: Exception) {
+ }
+ sendMessage = status >= 4
+ IMInputActionSettingUtils.createImageTextConsultSetting(
+ isSelf,
+ disableSendMessage = sendMessage,
+ disableEvaluate = status == 5
+ )
+ requireContext().startGroupChat(
+ bean.imId, "图文咨询", consultantId = bean.memberId,
+ workBean = WorkBean(bean.id, TUIUtils.WORK_TYPE_IMAGE_TEXT_CONSULT)
+ )
+ } else {
+ requireContext()?.let {
+ startAppointmentWaitAffirmActivity(
+ it,
+ bean.id,
+ true
+ )
+ }
+ }
+ }
+
+ override fun onItemLongClick(
+ view: View?,
+ holder: RecyclerView.ViewHolder?,
+ position: Int,
+ ): Boolean {
+ return false
+ }
+
+ })
+ mBinding.layoutItem3.fragmentGuidanceRvDoctor.adapter = mGuidanceFragmentDoctorAdapter
+
+ }
+
+ override fun bindEvent() {
+ mBinding.headImg.setOnClickListener {
+ toActivity(HomeNoticeListActivity::class.java)
+ }
+ mBinding.apply {
+ addClickViews(
+ image1, image2, image3, image4, layoutItem4.imgLeft, layoutItem4.imgRight,
+ layoutItem1.homeHeadTab1, layoutItem1.homeHeadTab2, layoutItem1.homeHeadTab3,
+ layoutItem1.homeHeadTab4, homeMarqueeView, layoutItem3.tvDoctorMore
+ )
+ }
+ }
+
+ override fun onClick(v: View?) {
+ when (v?.id) {
+ R.id.img_left, R.id.img_right, R.id.home_head_tab1, R.id.home_head_tab2, R.id.home_head_tab4,
+ R.id.image1, R.id.image4 -> {
+ toActivity(EmptyActivity::class.java)
+ }
+
+ R.id.image2 -> {
+ toActivity(HomeBannerDetailActivity::class.java)
+
+ }
+
+ R.id.image3 -> {
+ EventBus.getDefault().post(HomeTabChangeEvent().apply { index=1 })
+ }
+
+ R.id.home_head_tab3 -> {
+ startEmergencySeekDoctorActivity(requireContext())
+ }
+
+ R.id.home_marqueeView -> {
+ if (DataStoreManager.isLogin()) {
+ toActivity(HomeNoticeListActivity::class.java)
+ }
+ }
+
+ R.id.tv_doctor_more -> {
+ if (ConstantUtils.mCheckToken) {
+ if (DataStoreManager.getToken().isNullOrEmpty()) {
+ startLoginActivity(requireContext())
+ } else {
+ startMyGuidanceActivity(requireContext(), "")
+ }
+ } else {
+ startLoginActivity(requireContext())
+ }
+
+ }
+
+ }
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ if (DataStoreManager.isLogin()) {
+ mBinding.tvHi.visibility = View.VISIBLE
+ mBinding.homeMarqueeView.visibility = View.VISIBLE
+ mBinding.tvHi.text = "hi~ ${DataStoreManager.getUserInfo().realname}"
+ } else {
+ mBinding.homeMarqueeView.visibility = View.GONE
+ mBinding.tvHi.visibility = View.GONE
+ }
+ }
+
+ override fun createObserve() {
+ super.createObserve()
+ lifecycleScope.launch {
+ repeatOnLifecycle(Lifecycle.State.CREATED) {
+ mViewModel.homeBannerList.collectLatest {
+ if (it.isNullOrEmpty()) {
+ return@collectLatest
+ }
+ mBinding.image1.load(it.get(0).photoUrl, false)
+ mBinding.image2.load(it.get(1).photoUrl, false)
+ mBinding.image3.load(it.get(2).photoUrl, false)
+ mBinding.image4.load(it.get(3).photoUrl, false)
+ }
+ }
+ }
+ lifecycleScope.launch {
+ repeatOnLifecycle(Lifecycle.State.CREATED) {
+ mViewModel.homeNoticeRepeat.collectLatest {
+ stringList.clear()
+ if (it.isNullOrEmpty()) {
+ stringList.add("暂无通知")
+ } else {
+ it.forEach { noticeData ->
+ stringList.add(noticeData.title)
+ }
+ }
+ mBinding.homeMarqueeView.stopFlipping()
+ delay(100)
+ mBinding.homeMarqueeView.startWithList(stringList)
+ }
+ }
+ }
+ lifecycleScope.launch {
+ repeatOnLifecycle(Lifecycle.State.CREATED) {
+ mViewModel.mDoctorList.collectLatest { list ->
+ mBinding.apply {
+ if (list.size == 0) {
+ layoutItem3.fragmentGuidanceRvDoctor.visibility = View.GONE
+ layoutItem3.llEmpty.visibility = View.VISIBLE
+ } else {
+ layoutItem3.fragmentGuidanceRvDoctor.visibility = View.VISIBLE
+ layoutItem3.llEmpty.visibility = View.GONE
+ mDoctorList.clear()
+ mDoctorList.addAll(list)
+ }
+ mGuidanceFragmentDoctorAdapter?.notifyDataSetChanged()
+ }
+
+ }
+ }
+ }
+
+ }
+
+
+ override fun initData() {
+ mViewModel.getHomeBannerList("2")
+ }
+
+ override fun onRefresh() {
+ mBinding.swipeRefresh.isRefreshing = false
+ if (ConstantUtils.mCheckToken) {
+ mViewModel.selectDoctorRecommendHome()
+ }
+ }
+
+ override fun onMessageEvent(event: Any?) {
+ if (event is RefreshEvent) {
+ mViewModel.getHomeNoticeListRepeat()
+ onRefresh()
+ }
+ super.onMessageEvent(event)
+ }
+}
+
diff --git a/app/src/main/java/com/xjjk/healthyclients/fragment/UserInfoFragment.kt b/app/src/main/java/com/xjjk/healthyclients/fragment/UserInfoFragment.kt
index 966a7d2..4ae373d 100644
--- a/app/src/main/java/com/xjjk/healthyclients/fragment/UserInfoFragment.kt
+++ b/app/src/main/java/com/xjjk/healthyclients/fragment/UserInfoFragment.kt
@@ -23,6 +23,7 @@ import com.xjjk.healthyclients.superfuntion.startUserInfoSettingActivity
import com.xjjk.healthyclients.superfuntion.startUserMyGuidanceActivity
import com.xjjk.healthyclients.superfuntion.startUserSettingActivity
import com.xjjk.healthyclients.superfuntion.startUserSoSContactsActivity
+import com.xjjk.healthyclients.ui.activity.home.HomeNoticeListActivity
import com.xjjk.healthyclients.ui.viewmodel.UserInfoFragmentViewModel
import com.xjjk.healthyclients.utils.ConstantUtils
import kotlinx.coroutines.flow.collectLatest
@@ -54,6 +55,7 @@ class UserInfoFragment :
mList.clear()
mList.add(UserMenuBean(1, "咨询人管理", R.drawable.ic_user_personnel_manager, View.VISIBLE))
mList.add(UserMenuBean(3, "应急就医", R.drawable.ic_user_sos, View.VISIBLE))
+ mList.add(UserMenuBean(4, "消息通知", R.drawable.icon_home_xiaolaba, View.VISIBLE))
mList.add(UserMenuBean(8,"紧急联系人",R.drawable.ic_user_contacts,View.INVISIBLE))
@@ -169,6 +171,9 @@ class UserInfoFragment :
3 -> {
context?.let { startEmergencySeekDoctorActivity(it) }
}
+ 4 -> {
+ toActivity(HomeNoticeListActivity::class.java)
+ }
8 -> {
requireContext().startUserSoSContactsActivity()
}
@@ -189,10 +194,6 @@ class UserInfoFragment :
}
- override fun getStatusbarStyle(): Int {
- return 1
- }
-
override fun onClick(v: View?) {
when (v?.id) {
R.id.user_tv_look_all -> {
diff --git a/app/src/main/java/com/xjjk/healthyclients/superfuntion/BannerExt.kt b/app/src/main/java/com/xjjk/healthyclients/superfuntion/BannerExt.kt
new file mode 100644
index 0000000..76840c8
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/superfuntion/BannerExt.kt
@@ -0,0 +1,57 @@
+package com.xjjk.healthyclients.superfuntion
+
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.fragment.app.Fragment
+import com.xjjk.healthyclients.bean.home.HomeBannerBean
+import com.youth.banner.Banner
+import com.youth.banner.adapter.BannerAdapter
+import com.youth.banner.adapter.BannerImageAdapter
+import com.youth.banner.config.IndicatorConfig
+import com.youth.banner.holder.BannerImageHolder
+import com.youth.banner.indicator.CircleIndicator
+
+fun Fragment.showBanner(
+ banner: Banner>,
+ bannerDataList: MutableList,
+ listener: ((HomeBannerBean)-> Unit)? = null
+) {
+ val bannerImageAdapter = object : BannerImageAdapter(bannerDataList) {
+ override fun onBindView(
+ holder: BannerImageHolder?,
+ data: HomeBannerBean?,
+ position: Int,
+ size: Int
+ ) {
+ context?.let {
+ holder!!.imageView.load(data?.photoUrl)
+ }
+ }
+
+ override fun onCreateHolder(parent: ViewGroup?, viewType: Int): BannerImageHolder {
+ val imageView = ImageView(parent?.context)
+ //注意,必须设置为match_parent,这个是viewpager2强制要求的
+ val params = ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT
+ )
+ imageView.layoutParams = params
+// imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ return BannerImageHolder(imageView)
+ }
+ }
+ banner.addBannerLifecycleObserver(this)
+ .setAdapter(bannerImageAdapter, true)
+ .setLoopTime(4000)
+ .setBannerRound(6f)
+ .isAutoLoop(true)
+ .setIndicator(CircleIndicator(requireContext()))
+ .setIndicatorGravity(IndicatorConfig.Direction.CENTER)
+ .setIndicatorSelectedWidth(10)
+
+ banner.setOnBannerListener { data, position ->
+ data as HomeBannerBean
+ listener?.invoke(data)
+ }
+
+}
diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/EmptyActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/EmptyActivity.kt
new file mode 100644
index 0000000..4c4698a
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/EmptyActivity.kt
@@ -0,0 +1,35 @@
+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.ActivityEmptyBinding
+import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
+
+/**
+ * 空布局
+ */
+class EmptyActivity :
+ BaseVMBActivity(R.layout.activity_empty) {
+
+
+ override fun initView(savedInstanceState: Bundle?) {
+ }
+
+ override fun initData() {
+
+ }
+
+
+
+ override fun bindEvent() {
+
+ }
+
+
+ override fun processClick(paramView: View?) {
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/HomeBannerDetailActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/HomeBannerDetailActivity.kt
new file mode 100644
index 0000000..34fb3f1
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/HomeBannerDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.xjjk.healthyclients.ui.activity.home
+
+import android.os.Bundle
+import android.view.View
+import com.xjjk.healthyclients.R
+import com.xjjk.healthyclients.base.BaseVMBActivity
+import com.xjjk.healthyclients.databinding.ActivityHomeBannerBinding
+import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
+
+/**
+ * 首页banner
+ */
+class HomeBannerDetailActivity :
+ BaseVMBActivity(R.layout.activity_home_banner) {
+
+
+
+ override fun initView(savedInstanceState: Bundle?) {
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun bindEvent() {
+ }
+
+ override fun createObserve() {
+ super.createObserve()
+
+ }
+
+ override fun processClick(paramView: View?) {
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/HomeNoticeDetailActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/HomeNoticeDetailActivity.kt
new file mode 100644
index 0000000..7e92a03
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/HomeNoticeDetailActivity.kt
@@ -0,0 +1,77 @@
+package com.xjjk.healthyclients.ui.activity.home
+
+import android.os.Bundle
+import android.text.TextUtils
+import android.view.View
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import com.sw.healthyclients.utils.DateUtil
+import com.xjjk.healthyclients.R
+import com.xjjk.healthyclients.base.BaseVMBActivity
+import com.xjjk.healthyclients.databinding.ActivityNoticeDetailBinding
+import com.xjjk.healthyclients.superfuntion.addImgHeader
+import com.xjjk.healthyclients.superfuntion.orEmptyDefault
+import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
+import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.launch
+
+/**
+ * 首页通知消息详情
+ */
+class HomeNoticeDetailActivity :
+ BaseVMBActivity(R.layout.activity_notice_detail) {
+
+
+ override fun initView(savedInstanceState: Bundle?) {
+ }
+
+ override fun initData() {
+ val stringExtra = intent.getStringExtra("id")
+ if (TextUtils.isEmpty(stringExtra)) {
+ finish()
+ } else {
+ mViewModel.getHomeNoticeDetail(stringExtra!!)
+ }
+
+
+ }
+
+ override fun bindEvent() {
+ }
+
+ override fun createObserve() {
+ super.createObserve()
+ lifecycleScope.launch {
+ repeatOnLifecycle(Lifecycle.State.CREATED) {
+ mViewModel.homeNoticeDetail.collectLatest {
+ if (TextUtils.isEmpty(it?.content)) {
+ return@collectLatest
+ }
+ mBinding.tvTitle.text = it?.title.orEmptyDefault()
+ mBinding.tvDate.text = DateUtil.dateStrToStrMiddle(it?.createTime)
+
+ var content = it?.content
+
+ mBinding.apply {
+ var css = ""
+ var html = css + content
+
+ webContent.loadDataWithBaseURL(
+ null,
+ html.addImgHeader(),
+ "text/html",
+ "UTF-8",
+ null
+ )
+ }
+ }
+ }
+ }
+
+
+ }
+
+ override fun processClick(paramView: View?) {
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/HomeNoticeListActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/HomeNoticeListActivity.kt
new file mode 100644
index 0000000..61f6097
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/HomeNoticeListActivity.kt
@@ -0,0 +1,109 @@
+package com.xjjk.healthyclients.ui.activity.home
+
+import android.os.Bundle
+import android.view.View
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+import com.xjjk.healthyclients.R
+import com.xjjk.healthyclients.adapter.home.HomeMessageAdapter
+import com.xjjk.healthyclients.base.BaseVMBActivity
+import com.xjjk.healthyclients.bean.home.HomeNoticeBean
+import com.xjjk.healthyclients.databinding.ActivityNoticeListBinding
+import com.xjjk.healthyclients.superfuntion.initColors
+import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
+import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.launch
+
+/**
+ * 首页通知消息列表
+ */
+class HomeNoticeListActivity :
+ BaseVMBActivity(R.layout.activity_notice_list),
+ SwipeRefreshLayout.OnRefreshListener {
+
+ val mAdapter: HomeMessageAdapter by lazy { HomeMessageAdapter() }
+
+
+ override fun initView(savedInstanceState: Bundle?) {
+ mBinding.apply {
+ rvList.adapter = mAdapter
+ swipeRefresh.initColors()
+ swipeRefresh.setOnRefreshListener(this@HomeNoticeListActivity)
+ initLoadMore()
+ }
+ }
+
+ override fun initData() {
+ mViewModel.getHomeNoticeList()
+ }
+
+ private fun initLoadMore() {
+ mAdapter.loadMoreModule.setOnLoadMoreListener {
+ mViewModel.getHomeNoticeList()
+ }
+ mAdapter.loadMoreModule.isAutoLoadMore = true
+ //当自动加载开启,同时数据不满一屏时,是否继续执行自动加载更多(默认为true)
+ mAdapter.loadMoreModule.isEnableLoadMoreIfNotFullPage = false
+ }
+
+
+ override fun bindEvent() {
+ mAdapter.setOnItemClickListener { adapter, view, position ->
+ val homeNoticeBean = adapter.data.get(position) as HomeNoticeBean
+ val bundle = Bundle()
+ bundle.putString("id", homeNoticeBean.id)
+
+ toActivity(HomeNoticeDetailActivity::class.java, bundle)
+
+ }
+ }
+
+ override fun createObserve() {
+ super.createObserve()
+ lifecycleScope.launch {
+ repeatOnLifecycle(Lifecycle.State.CREATED) {
+ mViewModel.homeNoticeList.collectLatest {
+ if (it.isNullOrEmpty()) {
+ return@collectLatest
+ }
+ mBinding.emptyView.visibility = View.GONE
+ if (mViewModel.pageIndex.value <= 1) {
+ mAdapter.setNewInstance(it)
+ } else {
+ mAdapter.addData(it)
+ }
+ mAdapter.loadMoreModule.loadMoreComplete()
+ }
+ }
+ }
+ lifecycleScope.launch {
+ repeatOnLifecycle(Lifecycle.State.CREATED) {
+ mViewModel.isLoadMoreEnd.collectLatest {
+ if (it) {
+ mAdapter.loadMoreModule?.loadMoreEnd(it)
+ }
+ }
+ }
+ }
+ lifecycleScope.launch {
+ repeatOnLifecycle(Lifecycle.State.CREATED) {
+ mViewModel.isRefreshing.collectLatest {
+ mBinding.swipeRefresh.isRefreshing = it
+ }
+ }
+ }
+
+
+ }
+
+ override fun processClick(paramView: View?) {
+
+ }
+
+ override fun onRefresh() {
+ mViewModel.getHomeNoticeList(true)
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/MyBankLActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/MyBankLActivity.kt
new file mode 100644
index 0000000..468db59
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/home/MyBankLActivity.kt
@@ -0,0 +1,44 @@
+package com.xjjk.healthyclients.ui.activity.home
+
+import android.os.Bundle
+import android.view.View
+import com.xjjk.healthyclients.R
+import com.xjjk.healthyclients.adapter.home.HomeMessageAdapter
+import com.xjjk.healthyclients.base.BaseVMBActivity
+import com.xjjk.healthyclients.databinding.ActivityBankBinding
+import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
+
+/**
+ * 我的银行
+ */
+class MyBankLActivity :
+ BaseVMBActivity(R.layout.activity_bank) {
+
+ val mAdapter: HomeMessageAdapter by lazy { HomeMessageAdapter() }
+
+
+ override fun initView(savedInstanceState: Bundle?) {
+ mBinding.apply {
+ }
+ }
+
+ override fun initData() {
+
+ }
+
+
+
+ override fun bindEvent() {
+
+ }
+
+ override fun createObserve() {
+ super.createObserve()
+
+ }
+
+ override fun processClick(paramView: View?) {
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/HomeViewModel.kt b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/HomeViewModel.kt
new file mode 100644
index 0000000..0a82396
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/HomeViewModel.kt
@@ -0,0 +1,129 @@
+package com.xjjk.healthyclients.ui.viewmodel
+
+import androidx.lifecycle.viewModelScope
+import com.xjjk.healthyclients.base.viewmodel.BaseViewModel
+import com.xjjk.healthyclients.bean.guidance.GuidanceListBean
+import com.xjjk.healthyclients.bean.home.HomeBannerBean
+import com.xjjk.healthyclients.bean.home.HomeNoticeBean
+import com.xjjk.healthyclients.data.repository.GuidanceRepository
+import com.xjjk.healthyclients.data.repository.HomeRepository
+import com.xjjk.healthyclients.superfuntion.handleRequest
+import com.xjjk.healthyclients.superfuntion.launch
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.MutableSharedFlow
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.launch
+
+class HomeViewModel : BaseViewModel() {
+
+ var mDoctorList = MutableStateFlow(ArrayList())
+
+ var homeNoticeRepeat = MutableSharedFlow?>()
+ var homeNoticeList = MutableSharedFlow?>()
+ var homeNoticeDetail = MutableSharedFlow()
+ var homeBannerList = MutableSharedFlow?>()
+
+
+ var isRefreshing = MutableStateFlow(false)
+ var isLoadMoreEnd = MutableSharedFlow()
+ var pageIndex = MutableStateFlow(1)
+ private val pageSize = 20
+
+
+ override fun init() {
+ }
+
+ fun selectDoctorRecommendHome() {
+ launch(
+ {
+
+ handleRequest(
+ GuidanceRepository.selectDoctorRecommend(1,3),
+ successBlock = {
+ it.result?.let{ result ->
+ if (result.isNotEmpty()) {
+ mDoctorList.emit(result)
+ }else{
+ mDoctorList.emit(ArrayList())
+ }
+ }
+ })
+ }
+ )
+ }
+
+
+ /**
+ * 获取首页消息通知列表
+ */
+ fun getHomeNoticeList(isRefresh: Boolean = false) {
+ launch(
+ {
+ if (isRefresh) {
+ isRefreshing.emit(true)
+ isLoadMoreEnd.emit(false)
+ pageIndex.emit(1)
+ }
+ handleRequest(
+ HomeRepository.getHomeNoticeList(pageIndex.value, pageSize),
+ successBlock = {
+ if (it.result.isNullOrEmpty()) {
+ isLoadMoreEnd.emit(true)
+ homeNoticeList.emit(mutableListOf())
+ } else {
+ homeNoticeList.emit(it.result)
+ pageIndex.value++
+ if (it.result.size < pageSize) {
+ isLoadMoreEnd.emit(true)
+ }
+ }
+ })
+ }, finallyBlock = {
+ isRefreshing.emit(false)
+ }
+ )
+ }
+
+ /**
+ * 首页消息轮询
+ */
+ fun getHomeNoticeListRepeat() {
+ viewModelScope.launch {
+ repeat(100) {
+ handleRequest(
+ HomeRepository.getHomeNoticeList(1, 10),
+ successBlock = {
+ homeNoticeRepeat.emit(it.result)
+ })
+ delay(1000 * 120)
+ }
+
+ }
+
+ }
+
+ fun getHomeNoticeDetail(id: String) {
+ launch(
+ {
+ handleRequest(
+ HomeRepository.getHomeNoticeDetail(id),
+ successBlock = {
+ homeNoticeDetail.emit(it.result)
+ })
+ }
+ )
+ }
+
+ fun getHomeBannerList(showLocation: String) {
+ launch(
+ {
+ handleRequest(
+ HomeRepository.getHomeBannerList(showLocation),
+ successBlock = {
+ homeBannerList.emit(it.result)
+ })
+ }
+ )
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/PointsViewModel.kt b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/PointsViewModel.kt
new file mode 100644
index 0000000..6194c0f
--- /dev/null
+++ b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/PointsViewModel.kt
@@ -0,0 +1,81 @@
+package com.xjjk.healthyclients.ui.viewmodel
+
+import com.xjjk.healthyclients.base.viewmodel.BaseViewModel
+import com.xjjk.healthyclients.bean.user.CheckInBean
+import com.xjjk.healthyclients.data.repository.HomeRepository
+import com.xjjk.healthyclients.superfuntion.handleRequest
+import com.xjjk.healthyclients.superfuntion.launch
+import kotlinx.coroutines.flow.MutableSharedFlow
+import kotlinx.coroutines.flow.MutableStateFlow
+
+/**
+ * 手机银行
+ */
+class PointsViewModel : BaseViewModel() {
+
+
+ var isRefreshing = MutableStateFlow(false)
+ var isLoadMoreEnd = MutableSharedFlow()
+ var pageIndex = MutableStateFlow(1)
+ private val pageSize = 20
+
+
+ override fun init() {
+
+ }
+
+ fun getUserPoints() {
+ launch(
+ {
+ handleRequest(
+ HomeRepository.getUserPoints(),
+ successBlock = {
+ })
+ }
+ )
+ }
+
+ fun getUserPointsTask() {
+ launch(
+ {
+ handleRequest(
+ HomeRepository.getUserPointsTask(),
+ successBlock = {
+ })
+ }
+ )
+ }
+
+ fun postUserPointsRecord(changeType: Int) {
+ launch(
+ {
+ handleRequest(
+ HomeRepository.postUserPointsRecord(changeType),
+ successBlock = {
+ })
+ }
+ )
+ }
+ fun postUserPointsRank(changeType: Int) {
+ launch(
+ {
+ handleRequest(
+ HomeRepository.postUserPointsRank(pageIndex.value,pageSize,changeType),
+ successBlock = {
+ })
+ }
+ )
+ }
+
+ fun postUserPointsCheckIn(checkInBean: CheckInBean) {
+ launch(
+ {
+ handleRequest(
+ HomeRepository.postUserPointsCheckIn(checkInBean),
+ successBlock = {
+ })
+ }
+ )
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-xxhdpi/icon_empty.png b/app/src/main/res/drawable-xxhdpi/icon_empty.png
new file mode 100644
index 0000000..d71527b
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_empty.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon_home_head.jpg b/app/src/main/res/drawable-xxhdpi/icon_home_head.jpg
new file mode 100644
index 0000000..488d083
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_home_head.jpg differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon_home_message_bg.png b/app/src/main/res/drawable-xxhdpi/icon_home_message_bg.png
new file mode 100644
index 0000000..0021167
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_home_message_bg.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon_home_xiaolaba.png b/app/src/main/res/drawable-xxhdpi/icon_home_xiaolaba.png
new file mode 100644
index 0000000..33161d5
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_home_xiaolaba.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/main_home_tab_home_normal.png b/app/src/main/res/drawable-xxhdpi/main_home_tab_home_normal.png
new file mode 100644
index 0000000..aaaa6ef
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/main_home_tab_home_normal.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/main_home_tab_home_selected.png b/app/src/main/res/drawable-xxhdpi/main_home_tab_home_selected.png
new file mode 100644
index 0000000..93b721d
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/main_home_tab_home_selected.png differ
diff --git a/app/src/main/res/drawable/imaginary_line.xml b/app/src/main/res/drawable/imaginary_line.xml
new file mode 100644
index 0000000..405c55f
--- /dev/null
+++ b/app/src/main/res/drawable/imaginary_line.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_appointment_detail.xml b/app/src/main/res/layout/activity_appointment_detail.xml
index 86d67e5..aaab7d6 100644
--- a/app/src/main/res/layout/activity_appointment_detail.xml
+++ b/app/src/main/res/layout/activity_appointment_detail.xml
@@ -15,7 +15,8 @@
+ app:darkStyle="@{true}"
+ app:title="@{@string/title_register_title}"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_empty.xml b/app/src/main/res/layout/activity_empty.xml
new file mode 100644
index 0000000..9b67150
--- /dev/null
+++ b/app/src/main/res/layout/activity_empty.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_home_banner.xml b/app/src/main/res/layout/activity_home_banner.xml
new file mode 100644
index 0000000..84a5c36
--- /dev/null
+++ b/app/src/main/res/layout/activity_home_banner.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_notice_detail.xml b/app/src/main/res/layout/activity_notice_detail.xml
new file mode 100644
index 0000000..e299736
--- /dev/null
+++ b/app/src/main/res/layout/activity_notice_detail.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_notice_list.xml b/app/src/main/res/layout/activity_notice_list.xml
new file mode 100644
index 0000000..2d2e63d
--- /dev/null
+++ b/app/src/main/res/layout/activity_notice_list.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_guidance.xml b/app/src/main/res/layout/fragment_guidance.xml
index 480f2ce..369f697 100644
--- a/app/src/main/res/layout/fragment_guidance.xml
+++ b/app/src/main/res/layout/fragment_guidance.xml
@@ -59,12 +59,12 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/home_layout_item1.xml b/app/src/main/res/layout/home_layout_item1.xml
new file mode 100644
index 0000000..c7ab523
--- /dev/null
+++ b/app/src/main/res/layout/home_layout_item1.xml
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/home_layout_item2.xml b/app/src/main/res/layout/home_layout_item2.xml
new file mode 100644
index 0000000..17c1696
--- /dev/null
+++ b/app/src/main/res/layout/home_layout_item2.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/home_layout_item3.xml b/app/src/main/res/layout/home_layout_item3.xml
new file mode 100644
index 0000000..fb842f3
--- /dev/null
+++ b/app/src/main/res/layout/home_layout_item3.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/home_layout_item4.xml b/app/src/main/res/layout/home_layout_item4.xml
new file mode 100644
index 0000000..c3a5c26
--- /dev/null
+++ b/app/src/main/res/layout/home_layout_item4.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_bank_points.xml b/app/src/main/res/layout/item_bank_points.xml
new file mode 100644
index 0000000..f788ac9
--- /dev/null
+++ b/app/src/main/res/layout/item_bank_points.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_fragment_doctor.xml b/app/src/main/res/layout/item_fragment_doctor.xml
index 9309e65..73a3458 100644
--- a/app/src/main/res/layout/item_fragment_doctor.xml
+++ b/app/src/main/res/layout/item_fragment_doctor.xml
@@ -13,7 +13,7 @@
android:layout_height="@dimen/dp_60"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_15"
- android:scaleType="centerCrop"/>
+ android:scaleType="centerCrop" />
+
+
+ android:layout_below="@+id/item_hospital_name"
+ android:layout_marginHorizontal="15dp"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
+ android:background="@color/line" />
+
+ android:textColor="@color/text_black_66"
+ android:textSize="@dimen/txt12"
+ tools:text="咨询人:莱希奥" />
+
+ android:textColor="@color/text_black_66"
+ android:textSize="@dimen/txt12"
+ tools:text="2024-06-17 10:26:37" />
+
+ android:src="@drawable/ic_guidance_finish" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_home_message.xml b/app/src/main/res/layout/item_home_message.xml
new file mode 100644
index 0000000..edc2800
--- /dev/null
+++ b/app/src/main/res/layout/item_home_message.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xhdpi/ic_xiaolaba.png b/app/src/main/res/mipmap-xhdpi/ic_xiaolaba.png
new file mode 100644
index 0000000..4b22e41
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_xiaolaba.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab1.png b/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab1.png
new file mode 100644
index 0000000..50da9e7
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab1.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab2.png b/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab2.png
new file mode 100644
index 0000000..b9dc082
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab2.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab3.png b/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab3.png
new file mode 100644
index 0000000..866688f
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab3.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab4.png b/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab4.png
new file mode 100644
index 0000000..5121547
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_head_tab4.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_image1.png b/app/src/main/res/mipmap-xxhdpi/ic_home_image1.png
new file mode 100644
index 0000000..7ae7c3b
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_image1.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_image2.png b/app/src/main/res/mipmap-xxhdpi/ic_home_image2.png
new file mode 100644
index 0000000..adbb50f
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_image2.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_image3.png b/app/src/main/res/mipmap-xxhdpi/ic_home_image3.png
new file mode 100644
index 0000000..077c19c
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_image3.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_image4.png b/app/src/main/res/mipmap-xxhdpi/ic_home_image4.png
new file mode 100644
index 0000000..aa06371
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_image4.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_item_head_bg.png b/app/src/main/res/mipmap-xxhdpi/ic_home_item_head_bg.png
new file mode 100644
index 0000000..399f5b4
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_item_head_bg.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_item_head_bg2.png b/app/src/main/res/mipmap-xxhdpi/ic_home_item_head_bg2.png
new file mode 100644
index 0000000..ff52599
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_item_head_bg2.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_view_left.png b/app/src/main/res/mipmap-xxhdpi/ic_home_view_left.png
new file mode 100644
index 0000000..bf72a10
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_view_left.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_home_view_right.png b/app/src/main/res/mipmap-xxhdpi/ic_home_view_right.png
new file mode 100644
index 0000000..2963a87
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_home_view_right.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_empty_circle.png b/app/src/main/res/mipmap-xxhdpi/icon_empty_circle.png
new file mode 100644
index 0000000..27c0fb7
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_empty_circle.png differ
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 750b877..0f9c70d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -25,7 +25,10 @@
找回密码
修改密码
员工心理帮助计划
- 我的消息通知
+ 我的消息
+ 我的健康银行
+ 消息详情
+ 预约详情
体检信息
历年体检报告
一键咨询