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 @@ 找回密码 修改密码 员工心理帮助计划 - 我的消息通知 + 我的消息 + 我的健康银行 + 消息详情 + 预约详情 体检信息 历年体检报告 一键咨询