From aa827ba25d2d12e666fa4cf30a0acf8be148f08d Mon Sep 17 00:00:00 2001 From: zhanglei <350328959@qq.com> Date: Wed, 9 Jul 2025 16:04:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E4=BD=93=E6=A8=A1=E5=9D=97=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 18 +- app/src/main/assets/tab.json | 2 +- .../com/xjjk/healthyclients/MainActivity.kt | 157 +++- .../com/xjjk/healthyclients/MyApplication.kt | 5 + .../adapter/user/UserContactsAdapter.kt | 28 + .../bean/user/IMDoctorInfoBean.java | 50 ++ .../chart/DoubleWheelBaseLayout.java | 4 +- .../xjjk/healthyclients/data/api/CommonApi.kt | 29 + .../healthyclients/data/api/GuidanceApi.kt | 2 +- .../data/api/HealthRecordApi.kt | 170 ---- .../data/api/InterventionApi.kt | 447 ---------- .../data/api/InterventionNetApi.kt | 129 --- .../data/repository/CommonRepository.kt | 51 ++ .../data/repository/HealthRecordRepository.kt | 149 ---- .../data/repository/InterventionRepository.kt | 771 ------------------ .../fragment/EmergencyFragment.kt | 46 +- .../fragment/MonitorFragment.kt | 105 +-- .../fragment/UserInfoFragment.kt | 81 +- .../xjjk/healthyclients/retrofit/UrlConfig.kt | 61 +- .../interceptor/CustomSignInterceptor.kt | 70 +- .../interceptor/LoggingInterceptor2.java | 1 + .../InterventionRetrofitHelper.kt | 11 +- .../intervention/TokenHeaderInterceptor.java | 2 + .../superfuntion/BindingViewExt.kt | 3 +- .../SeekDoctorSearchActivityFuntion.kt | 88 -- .../superfuntion/StartActivityManager.kt | 61 +- .../ui/activity/EmergencyContactActivity.kt | 165 ++++ .../ui/activity/InterventionWebActivity.kt | 22 +- .../ui/activity/SelectLocationActivity.kt | 153 ++++ .../ui/activity/UserSoSContactsActivity.kt | 103 +++ .../emergency/AddBigDiseaseActivity.kt | 234 ------ .../EmergencySeekDoctorDetailsActivity.kt | 7 +- .../ui/activity/guidance/AllDoctorActivity.kt | 73 ++ .../guidance/AppointmentDetailActivity.kt | 19 +- .../guidance/DoctorHomepageActivity.kt | 73 +- .../guidance/DoctorsGuidanceActivity.kt | 122 --- .../guidance/FilterSearchDoctorActivity.kt | 333 -------- .../guidance/IMSelectArchivesActivity.kt | 81 ++ .../guidance/SeekDoctorSearchActivity.kt | 459 ----------- .../guidance/SelectAppointmentTimeActivity.kt | 4 +- .../activity/guidance/ViewLocationActivity.kt | 126 +++ .../adapter/GuidanceFragmentDoctorAdapter.kt | 1 + .../adapter/IMSelectArchivesAdapter.kt | 24 + .../adapter/SeekDoctorDepartment3Adapter.kt | 18 - .../adapter/SeekDoctorDepartmentAdapter.kt | 41 - .../adapter/SeekDoctorDoctorAdapter.kt | 150 ---- .../viewmodel/ConsultantManagerViewModel.kt | 3 +- .../ui/viewmodel/EmergencyViewModel.kt | 191 +++-- .../ui/viewmodel/IMSelectArchivesViewModel.kt | 31 + .../ui/viewmodel/MainViewModel.kt | 195 +++++ .../ui/viewmodel/UserInfoSettingViewModel.kt | 56 ++ .../healthyclients/utils/ConstantUtils.kt | 12 +- .../utils/IMInputActionSettingUtils.kt | 11 +- .../xjjk/healthyclients/utils/MapUtils.java | 6 +- .../view/AppointmentInformationView.kt | 6 +- .../view/CustomFilterSearchView.kt | 596 -------------- .../healthyclients/view/DoctorBaseInfoView.kt | 6 +- .../healthyclients/view/FuntionBlurbDialog.kt | 101 +++ .../drawable-xxhdpi/ic_select_location.png | Bin 0 -> 1161 bytes .../res/drawable-xxhdpi/ic_user_contacts.png | Bin 0 -> 2434 bytes .../main_home_tab_emergency_normal.jpg | Bin 2805 -> 1528 bytes .../main_home_tab_emergency_selected.jpg | Bin 6978 -> 1546 bytes .../main_home_tab_index_normal.jpg | Bin 2246 -> 1842 bytes .../main_home_tab_index_selected.jpg | Bin 5215 -> 1866 bytes .../main_home_tab_monitor_normal.jpg | Bin 3290 -> 1859 bytes .../main_home_tab_monitor_selected.jpg | Bin 8532 -> 1854 bytes .../main_home_tab_my_normal.jpg | Bin 2360 -> 1726 bytes .../main_home_tab_my_selected.jpg | Bin 5604 -> 1724 bytes app/src/main/res/drawable/ic_down_close.png | Bin 0 -> 3372 bytes .../res/layout/activity_all_doctor_info.xml | 89 ++ .../res/layout/activity_big_add_disease.xml | 341 -------- .../activity_big_add_disease_details.xml | 383 --------- .../main/res/layout/activity_big_disease.xml | 110 --- .../layout/activity_filter_search_doctor.xml | 62 -- .../res/layout/activity_intervention_web.xml | 3 +- .../res/layout/activity_search_department.xml | 25 - .../res/layout/activity_search_disease.xml | 39 - .../main/res/layout/activity_seek_doctor.xml | 138 ---- .../activity_seek_doctor_department.xml | 41 - .../layout/activity_seek_doctor_disease.xml | 29 - .../layout/activity_seek_doctor_hospital.xml | 30 - .../layout/activity_seek_doctor_search.xml | 221 ----- .../activity_user_emergency_contact.xml | 222 +++++ ...nce.xml => activity_user_sos_contacts.xml} | 18 +- .../res/layout/bottom_tab_item_layout.xml | 8 +- .../res/layout/dialog_funtion_blurb_view.xml | 183 +++++ .../main/res/layout/fragment_emergency.xml | 191 +++-- app/src/main/res/layout/fragment_monitor.xml | 6 +- .../item_recycle_seek_doctor_doctor_child.xml | 162 ---- .../main/res/layout/item_user_contacts.xml | 43 + .../layout/view_appointment_information.xml | 1 + .../main/res/layout/view_doctor_base_info.xml | 1 + .../res/layout/wheel_picker_linkage_my.xml | 99 +++ app/src/main/res/values/strings.xml | 11 +- 94 files changed, 2585 insertions(+), 5834 deletions(-) create mode 100644 app/src/main/java/com/xjjk/healthyclients/adapter/user/UserContactsAdapter.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/bean/user/IMDoctorInfoBean.java delete mode 100644 app/src/main/java/com/xjjk/healthyclients/data/api/HealthRecordApi.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/data/api/InterventionApi.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/data/api/InterventionNetApi.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/data/repository/HealthRecordRepository.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/data/repository/InterventionRepository.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/superfuntion/SeekDoctorSearchActivityFuntion.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/EmergencyContactActivity.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/SelectLocationActivity.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/UserSoSContactsActivity.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/emergency/AddBigDiseaseActivity.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/AllDoctorActivity.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/DoctorsGuidanceActivity.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/FilterSearchDoctorActivity.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/IMSelectArchivesActivity.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/SeekDoctorSearchActivity.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/ViewLocationActivity.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/IMSelectArchivesAdapter.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDepartment3Adapter.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDepartmentAdapter.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDoctorAdapter.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/IMSelectArchivesViewModel.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/MainViewModel.kt delete mode 100644 app/src/main/java/com/xjjk/healthyclients/view/CustomFilterSearchView.kt create mode 100644 app/src/main/java/com/xjjk/healthyclients/view/FuntionBlurbDialog.kt create mode 100644 app/src/main/res/drawable-xxhdpi/ic_select_location.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_user_contacts.png create mode 100644 app/src/main/res/drawable/ic_down_close.png create mode 100644 app/src/main/res/layout/activity_all_doctor_info.xml delete mode 100644 app/src/main/res/layout/activity_big_add_disease.xml delete mode 100644 app/src/main/res/layout/activity_big_add_disease_details.xml delete mode 100644 app/src/main/res/layout/activity_big_disease.xml delete mode 100644 app/src/main/res/layout/activity_filter_search_doctor.xml delete mode 100644 app/src/main/res/layout/activity_search_department.xml delete mode 100644 app/src/main/res/layout/activity_search_disease.xml delete mode 100644 app/src/main/res/layout/activity_seek_doctor.xml delete mode 100644 app/src/main/res/layout/activity_seek_doctor_department.xml delete mode 100644 app/src/main/res/layout/activity_seek_doctor_disease.xml delete mode 100644 app/src/main/res/layout/activity_seek_doctor_hospital.xml delete mode 100644 app/src/main/res/layout/activity_seek_doctor_search.xml create mode 100644 app/src/main/res/layout/activity_user_emergency_contact.xml rename app/src/main/res/layout/{activity_doctors_guidance.xml => activity_user_sos_contacts.xml} (62%) create mode 100644 app/src/main/res/layout/dialog_funtion_blurb_view.xml delete mode 100644 app/src/main/res/layout/item_recycle_seek_doctor_doctor_child.xml create mode 100644 app/src/main/res/layout/item_user_contacts.xml create mode 100644 app/src/main/res/layout/wheel_picker_linkage_my.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d312772..20ec71e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -74,7 +74,7 @@ + android:value="0771c9b6ed759235927c3738ff4c070b" /> @@ -178,6 +178,22 @@ + + + + + + diff --git a/app/src/main/assets/tab.json b/app/src/main/assets/tab.json index fe3fc35..2140e7b 100644 --- a/app/src/main/assets/tab.json +++ b/app/src/main/assets/tab.json @@ -14,7 +14,7 @@ "iconSelected": "main_home_tab_index_selected" }, { - "tabName": "就医", + "tabName": "应急", "tabTag": "key_emergency_fragment", "iconNormal": "main_home_tab_emergency_normal", "iconSelected": "main_home_tab_emergency_selected", diff --git a/app/src/main/java/com/xjjk/healthyclients/MainActivity.kt b/app/src/main/java/com/xjjk/healthyclients/MainActivity.kt index 8102682..87ec179 100644 --- a/app/src/main/java/com/xjjk/healthyclients/MainActivity.kt +++ b/app/src/main/java/com/xjjk/healthyclients/MainActivity.kt @@ -9,27 +9,44 @@ import android.os.Message import android.view.Gravity import android.view.KeyEvent import android.view.View +import android.widget.Toast import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle import com.amap.api.maps.MapsInitializer import com.permissionx.guolindev.PermissionX import com.sw.healthyclients.data.local.DataStoreManager import com.sw.healthyclients.utils.CustomActivityManager +import com.sw.healthyclients.view.CustomToast +import com.tencent.qcloud.tuicore.TUICore +import com.tencent.qcloud.tuikit.tuichat.TUIChatService +import com.tencent.qcloud.tuikit.tuichat.classicui.event.IMChatEvent import com.xjjk.healthyclients.base.BaseVMBActivity import com.xjjk.healthyclients.bottomtab.HomeBottomTabLayout import com.xjjk.healthyclients.databinding.ActivityMainBinding +import com.xjjk.healthyclients.event.RefreshEvent +import com.xjjk.healthyclients.event.UserNoticeBean import com.xjjk.healthyclients.fragment.EmergencyFragment import com.xjjk.healthyclients.fragment.GuidanceFragment import com.xjjk.healthyclients.fragment.MonitorFragment +import com.xjjk.healthyclients.superfuntion.loginIm +import com.xjjk.healthyclients.superfuntion.startAllDoctorActivity import com.xjjk.healthyclients.superfuntion.startLoginActivity +import com.xjjk.healthyclients.ui.viewmodel.MainViewModel import com.xjjk.healthyclients.utils.ConstantUtils import com.xjjk.healthyclients.utils.LocationManager import com.xjjk.healthyclients.utils.SystemUtils +import com.xjjk.healthyclients.view.FuntionBlurbDialog import com.xjjk.healthyclients.view.PrivacyDialog import com.xjjk.healthyclients.view.TextViewDialog +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch +import org.greenrobot.eventbus.EventBus import org.lzh.framework.updatepluginlib.UpdateBuilder -class MainActivity : BaseVMBActivity(R.layout.activity_main), +class MainActivity : BaseVMBActivity(R.layout.activity_main), HomeBottomTabLayout.HomeBottomTabLayoutCallback { //每个tab对应的tag,和json配置文件中保持一致 @@ -37,6 +54,9 @@ class MainActivity : BaseVMBActivity(R.layout val TAG_EMERGENCY = "key_emergency_fragment" val TAG_MONITOR = "key_monitor_fragment" val TAG_MY = "key_my_fragment" + var mIMChatEvent:IMChatEvent?=null + var doctorId="" + var textViewDialog: TextViewDialog? = null var mPermissionList = arrayListOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, @@ -135,6 +155,102 @@ class MainActivity : BaseVMBActivity(R.layout super.onBackEvent() } + override fun createObserve() { + super.createObserve() + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.tokenOverdue.collectLatest { overdue -> + if (overdue) { + ConstantUtils.mCheckToken = true + EventBus.getDefault().post(RefreshEvent()) + if (DataStoreManager.getToken().isNotEmpty()) { + mViewModel.getNoticeData() + } + if (DataStoreManager.isLogin()) { + MyApplication.appViewModel?.getIMSig(successCall = { + loginIm(it.userId, it.userSig) + }) + } + } else { + ConstantUtils.mCheckToken = false +// startLoginActivity(this@MainActivity) + } + } + } + } + //用户弹窗 + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.noticeBean.collectLatest { bean -> + if (bean.title.isNotEmpty() && bean.content.isNotEmpty()) { + showBlurbDialog(bean) + } + } + } + } + //用户弹窗-结果提交 + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.submitNoticeChooseResult.collectLatest { success -> + if (success) { + mFunctionBlurbDialog?.cancel() + } + } + } + } + //用户弹窗-结果提交 + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.timePrescription.collectLatest { result -> + if (result=="1") { + //过期 +// val textViewDialog = TextViewDialog(CustomActivityManager.getInstance().TopActivity()) +// textViewDialog?.setDialogTitle("温馨提示", 18f) +// textViewDialog?.setContent("医生信息已过期!", 14f) +// textViewDialog?.setContentStyle(Gravity.LEFT) +// textViewDialog?.setBtnText("确认", 18f) +// textViewDialog?.setDialogCancelable(false) +// textViewDialog?.setOnAffirmClickListener(object : TextViewDialog.OnAffirmClickListener { +// override fun onAffirmClick(viewDialog: TextViewDialog) { +// +// } +// +// override fun onCancelClick(viewDialog: TextViewDialog) { +// +// } +// }) +// textViewDialog?.show() + CustomToast.makeText(CustomActivityManager.getInstance().TopActivity(), "医生信息已过期!", Toast.LENGTH_SHORT).show() + }else{ + //未过期 + val bundle = Bundle() + bundle.putString("doctorId", mIMChatEvent?.getDoctor()) + TUICore.startActivity( + TUIChatService.getAppContext(), + "DoctorHomepageActivity", + bundle + ) + } + } + } + } + + //全科医生校验 + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.selectTfHelper.collectLatest { success -> + if (success) { + //去查询全科医生信息 + if (doctorId.isNotEmpty()) { + mContext?.startAllDoctorActivity(doctorId) + } + } + } + } + } + + } + override fun onPause() { textViewDialog?.dismiss() super.onPause() @@ -205,6 +321,7 @@ class MainActivity : BaseVMBActivity(R.layout // } // } } + private val mFunctionBlurbDialog : FuntionBlurbDialog by lazy { FuntionBlurbDialog(this@MainActivity) } private var isExit = false var mHandler: Handler = @SuppressLint("HandlerLeak") @@ -234,5 +351,43 @@ class MainActivity : BaseVMBActivity(R.layout } return super.onKeyDown(keyCode, event) } + private fun showBlurbDialog(bean: UserNoticeBean) { + mFunctionBlurbDialog?.setTitle(bean.title) + mFunctionBlurbDialog?.setContent(bean.content) + mFunctionBlurbDialog?.setOnAffirmClickListener(object : + FuntionBlurbDialog.OnAffirmClickListener { + override fun onAffirmClick(type: Int, viewDialog: FuntionBlurbDialog) { + mViewModel.submitNoticeChooseItem(bean.id, type) + } + }) + mFunctionBlurbDialog?.show() + } + + + override fun onMessageEvent(event: Any?) { + super.onMessageEvent(event) + try { + event?.let { event -> + if (event is IMChatEvent) { + if (event.getType()==0) { + mIMChatEvent=event + mViewModel.initIMDialog() + mViewModel.selectDoctorCardExpireTime(event.time) + }else if (event.getType()==1){ + if (event.message.isNotEmpty()) { + CustomToast.makeText(CustomActivityManager.getInstance().TopActivity(), event.message, Toast.LENGTH_SHORT).show() + } + }else if (event.getType()==2){ + doctorId=event.doctor + mViewModel.initIMDialog() + mViewModel.selectTfHelper(event.doctor) + println("头像id"+doctorId) + } + } + } + } catch (e: Exception) { + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/MyApplication.kt b/app/src/main/java/com/xjjk/healthyclients/MyApplication.kt index 3ab19d9..d6de4ae 100644 --- a/app/src/main/java/com/xjjk/healthyclients/MyApplication.kt +++ b/app/src/main/java/com/xjjk/healthyclients/MyApplication.kt @@ -12,6 +12,8 @@ import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelStore import androidx.lifecycle.ViewModelStoreOwner +import com.bumptech.glide.Glide +import com.bumptech.glide.load.model.GlideUrl import com.lzy.ninegrid.NineGridView import com.orhanobut.logger.AndroidLogAdapter import com.orhanobut.logger.Logger @@ -28,6 +30,7 @@ import com.tencent.qcloud.tuicore.TUIThemeManager import com.tencent.qcloud.tuicore.interfaces.TUILoginListener import com.tencent.qcloud.tuicore.util.ErrorMessageConverter import com.tencent.qcloud.tuicore.util.TUIUtil +import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.LocationMessageHolder import com.tencent.qcloud.tuikit.tuichat.config.TUIChatConfigs import com.tencent.qcloud.tuikit.tuichat.interfaces.IMInputViewActionListener import com.xjjk.healthyclients.bean.AppUpdateBean @@ -44,6 +47,7 @@ import com.xjjk.healthyclients.utils.updateplugin.CustomDownloadNotifier import com.xjjk.healthyclients.utils.updateplugin.CustomInstallNotifier import com.xjjk.healthyclients.utils.updateplugin.CustomUpdateNotifier import com.xjjk.healthyclients.view.AppraiseDialog +import okhttp3.OkHttpClient import org.json.JSONException import org.json.JSONObject import org.lzh.framework.updatepluginlib.UpdateConfig @@ -71,6 +75,7 @@ class MyApplication : Application(), ViewModelStoreOwner { Log.i(TAG, "onCreate") super.onCreate() ConstantUtils.mIsCloseDialog=true + LocationMessageHolder.mapKey = "a87b89a2b4a32ed31da04d0996035cc1" Logger.addLogAdapter(AndroidLogAdapter()) appContext = this DownloadFileUtil.init(this) diff --git a/app/src/main/java/com/xjjk/healthyclients/adapter/user/UserContactsAdapter.kt b/app/src/main/java/com/xjjk/healthyclients/adapter/user/UserContactsAdapter.kt new file mode 100644 index 0000000..8913480 --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/adapter/user/UserContactsAdapter.kt @@ -0,0 +1,28 @@ +package com.xjjk.healthyclients.adapter.user + +import android.content.Context +import android.widget.TextView +import com.xjjk.healthyclients.R +import com.xjjk.healthyclients.adapter.common.CommonAdapter +import com.xjjk.healthyclients.adapter.common.ViewHolder +import com.xjjk.healthyclients.bean.user.SelectEmergencyContactListBean + +class UserContactsAdapter( + var mContext: Context?, + var layoutId: Int, + var datas: ArrayList? +) : CommonAdapter(mContext, layoutId, datas) { + override fun convert(holder: ViewHolder?, bean: SelectEmergencyContactListBean?, position: Int) { + holder?.getView(R.id.item_user_name)?.let{ + bean?.apply { + it.text= "$name-$phone" + } + } + holder?.getView(R.id.item_user_concern)?.let{ + bean?.apply { + it.text= familyRelation_dictText + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/bean/user/IMDoctorInfoBean.java b/app/src/main/java/com/xjjk/healthyclients/bean/user/IMDoctorInfoBean.java new file mode 100644 index 0000000..d970660 --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/bean/user/IMDoctorInfoBean.java @@ -0,0 +1,50 @@ +package com.xjjk.healthyclients.bean.user; + +public class IMDoctorInfoBean { + + private String id; + private String userId; + private String userName; + private String faceUrl; + private String memo; + + public String getId() { + return id == null ? "" : id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUserId() { + return userId == null ? "" : userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getUserName() { + return userName == null ? "" : userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getFaceUrl() { + return faceUrl == null ? "" : faceUrl; + } + + public void setFaceUrl(String faceUrl) { + this.faceUrl = faceUrl; + } + + public String getMemo() { + return memo == null ? "" : memo; + } + + public void setMemo(String memo) { + this.memo = memo; + } +} diff --git a/app/src/main/java/com/xjjk/healthyclients/chart/DoubleWheelBaseLayout.java b/app/src/main/java/com/xjjk/healthyclients/chart/DoubleWheelBaseLayout.java index 926e64b..addeace 100644 --- a/app/src/main/java/com/xjjk/healthyclients/chart/DoubleWheelBaseLayout.java +++ b/app/src/main/java/com/xjjk/healthyclients/chart/DoubleWheelBaseLayout.java @@ -23,13 +23,13 @@ import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.github.gzuliyujiang.wheelpicker.R; import com.github.gzuliyujiang.wheelpicker.contract.LinkageProvider; import com.github.gzuliyujiang.wheelpicker.contract.OnLinkageSelectedListener; import com.github.gzuliyujiang.wheelpicker.widget.BaseWheelLayout; import com.github.gzuliyujiang.wheelview.annotation.ScrollState; import com.github.gzuliyujiang.wheelview.contract.WheelFormatter; import com.github.gzuliyujiang.wheelview.widget.WheelView; +import com.xjjk.healthyclients.R; import java.util.Arrays; import java.util.List; @@ -68,7 +68,7 @@ public class DoubleWheelBaseLayout extends BaseWheelLayout { @Override protected int provideLayoutRes() { - return R.layout.wheel_picker_linkage; + return R.layout.wheel_picker_linkage_my; } @CallSuper diff --git a/app/src/main/java/com/xjjk/healthyclients/data/api/CommonApi.kt b/app/src/main/java/com/xjjk/healthyclients/data/api/CommonApi.kt index e818495..d465a6c 100644 --- a/app/src/main/java/com/xjjk/healthyclients/data/api/CommonApi.kt +++ b/app/src/main/java/com/xjjk/healthyclients/data/api/CommonApi.kt @@ -7,6 +7,8 @@ import com.xjjk.healthyclients.bean.LoginBean import com.xjjk.healthyclients.bean.SelectUserInfoBean import com.xjjk.healthyclients.bean.SelectUserMessageListBean import com.xjjk.healthyclients.bean.UploadFileResultBean +import com.xjjk.healthyclients.bean.user.IMDoctorInfoBean +import com.xjjk.healthyclients.bean.user.SelectEmergencyContactListBean import com.xjjk.healthyclients.data.bean.ApiResponse import com.xjjk.healthyclients.event.UserNoticeBean import okhttp3.MultipartBody @@ -79,6 +81,16 @@ interface CommonApi { */ @GET("/sys/api/messageRemind/changeAlRead") suspend fun changeAlRead(@QueryMap params: MutableMap): ApiResponse + /** + * 更新紧急联系人 + */ + @POST("/sys/api/emergencyContact/updateAndInsertEmergencyContact") + suspend fun updateAndInsertEmergencyContact(@Body bean: SelectEmergencyContactListBean): ApiResponse + /** + * 删除紧急联系人 + */ + @GET("/sys/api/emergencyContact/removeEmergencyContactList") + suspend fun removeEmergencyContactList(@QueryMap params: MutableMap): ApiResponse /** * 检查更新 @@ -96,6 +108,23 @@ interface CommonApi { */ @GET("/health-consultation/api/consult/notice/chooseToDontShowUp") suspend fun chooseToDontShowUp(@QueryMap params: MutableMap): ApiResponse + /** + * 卡片时效校验 + */ + @GET("health-consultation/api/consult/conSession/selectDoctorCardExpireTime") + suspend fun selectDoctorCardExpireTime(@QueryMap params: MutableMap): ApiResponse + + /** + * 全科医生校验 + */ + @GET("health-consultation/api/consult/conHelper/selectTfHelper") + suspend fun selectTfHelper(@QueryMap params: MutableMap): ApiResponse + + /** + * 查询全科医生信息 + */ + @GET("health-consultation/api/consult/conHelper/selectHelperInfoDesc") + suspend fun selectHelperInfoDesc(@QueryMap params: MutableMap): ApiResponse } \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/data/api/GuidanceApi.kt b/app/src/main/java/com/xjjk/healthyclients/data/api/GuidanceApi.kt index e68101f..327d2ce 100644 --- a/app/src/main/java/com/xjjk/healthyclients/data/api/GuidanceApi.kt +++ b/app/src/main/java/com/xjjk/healthyclients/data/api/GuidanceApi.kt @@ -231,7 +231,7 @@ interface GuidanceApi { /** * 咨询小助手 */ - @GET("health-consultation/api/consult/conSession/insertUserAndHelperSession") + @GET("health-consultation/api/consult/conSession/insertUserAndHelperSessionNew") suspend fun submitAssistantConsultApply(): ApiResponse /** * 获取档案列表 diff --git a/app/src/main/java/com/xjjk/healthyclients/data/api/HealthRecordApi.kt b/app/src/main/java/com/xjjk/healthyclients/data/api/HealthRecordApi.kt deleted file mode 100644 index 442517b..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/data/api/HealthRecordApi.kt +++ /dev/null @@ -1,170 +0,0 @@ -package com.xjjk.healthyclients.data.api - - -import com.xjjk.healthyclients.bean.healthrecord.CheckRecordUserInfoBean -import com.xjjk.healthyclients.data.bean.ApiResponse -import retrofit2.http.GET -import retrofit2.http.QueryMap - -/** - * @author nanfeifei - * @time 2023/8/4 13:22 - * @description - */ -interface HealthRecordApi { -// /** -// * 健康数据分析 -// */ -// @GET("health-archives/api/archives/medicalDataAnalysis/selectMedicalDataAnalysisVOList") -// suspend fun getHealthDataAnalysisData(): ApiResponse> -// -// /** -// * 健康数据分析子项(比如:化学检查列表) -// */ -// @GET("health-archives/api/archives/medicalDataAnalysis/selectMedicalUniItemClassList") -// suspend fun getHealthDataAnalysisItemData(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 健康数据分析子项详情(比如:血常规) -// */ -// @GET("health-archives/api/archives/medicalUserResult/selectMedicalUserResult") -// suspend fun getHealthDataAnalysisItemDetailData(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 检查子项记录(比如:白细胞数) -// */ -// @GET("health-archives/api/archives/medicalUserResult/selectMedicalUserResultInfoById") -// suspend fun getHealthCheckItemRecordData(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 腰臀比 -// */ -// @GET("health-archives/api/archives/compute/waistHipRatio") -// suspend fun waistHipRatio(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 理想体重 -// */ -// @GET("health-archives/api/archives/compute/idealBodyWeight") -// suspend fun idealBodyWeight(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 能量需求 -// */ -// @GET("health-archives/api/archives/compute/energyDemand") -// suspend fun energyDemand(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 所有运动 -// */ -// @GET("health-archives/api/archives/compute/allExercise") -// suspend fun allExercise(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 减掉一公斤 -// */ -// @GET("health-archives/api/archives/compute/loseKilo") -// suspend fun loseKilo(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 一分钟了解自己 -// */ -// @GET("health-archives/api/archives/compute/knowYourselfInMinute") -// suspend fun knowYourselfInMinute(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 健康监测首页 -// */ -// @GET("health-archives/api/archives/healthMonitoring/selectHealthMonitoringInfo") -// suspend fun selectHealthMonitoringInfo(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 体重记录 -// */ -// @GET("health-archives/api/archives/healthMonitoring/selectHeightAndWeightBmiList") -// suspend fun selectHeightAndWeightBmiList(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 血脂记录 -// */ -// @GET("health-archives/api/archives/healthMonitoring/selectBloodFat") -// suspend fun selectBloodFat(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 血糖记录 -// */ -// @GET("health-archives/api/archives/healthMonitoring/selectBloodSugarList") -// suspend fun selectBloodSugarList(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 血压记录 -// */ -// @GET("health-archives/api/archives/healthMonitoring/selectBloodPresureList") -// suspend fun selectBloodPresureList(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 血糖详情 -// */ -// @GET("health-archives/api/archives/healthMonitoring/selectBloodSugarInfo") -// suspend fun selectBloodSugarInfo(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * BMI首页 -// */ -// @GET("health-archives/api/archives/healthMonitoring/selectHeightAndWeightBmi") -// suspend fun getBMIHomeData(): ApiResponse -// -// /** -// * 血压详情 -// */ -// @GET("health-archives/api/archives/healthMonitoring/selectBloodPresure") -// suspend fun selectBloodPresure(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 异常项列表 -// */ -// @GET("health-archives/api/archives/healthQuo/exceptionList") -// suspend fun getExceptionData(): ApiResponse> -// -// /** -// * 健康现状首页 -// */ -// @GET("health-archives/api/archives/healthQuo/info") -// suspend fun getHealthStatusData(): ApiResponse -// -// /** -// * 健康现状首页 -// */ -// @GET("health-archives/api/archives/medicalUserResult/selectMedicalMiddleResultExtVO") -// suspend fun getConclusionSuggestionData(@QueryMap params: MutableMap): ApiResponse -// - /** - * 体检报告人员信息 - */ - @GET("health-archives/historyReport/getHistoryReportById") - suspend fun getHistoryReportNoDetail(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 历年体检列表 -// */ -// @POST("health-archives/historyReport/getHistoryReportByPage") -// suspend fun getHistoryReportByPage(@Body requestBody: RequestBody): ApiResponse -// -// /** -// * 获取存在结论建议的日期列表 -// */ -// @GET("health-archives/api/archives/medicalUserResult/selectMedicalUserResultInfoExDate") -// suspend fun getConclusionSuggestionDateList(): ApiResponse> -// -// /** -// * 获取体检结论、建议语音文件 -// */ -// @GET("health-archives/historyReport/getVoiceUrl") -// suspend fun getReportVoiceUrl(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 生成体检结论、建议语音文件 -// */ -// @GET("health-archives/historyReport/convertVoice2") -// suspend fun convertReportVoiceUrl(@QueryMap params: MutableMap): ApiResponse -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/data/api/InterventionApi.kt b/app/src/main/java/com/xjjk/healthyclients/data/api/InterventionApi.kt deleted file mode 100644 index 51f8cfd..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/data/api/InterventionApi.kt +++ /dev/null @@ -1,447 +0,0 @@ -package com.xjjk.healthyclients.data.api - -import com.sw.healthyclients.bean.intervention.NearbyAmbulanceBean -import com.xjjk.healthyclients.bean.AedNetworkingBean -import com.xjjk.healthyclients.bean.NearbyResourceBean -import com.xjjk.healthyclients.data.bean.ApiResponse -import retrofit2.http.GET -import retrofit2.http.QueryMap - -// -//import com.sw.healthyclients.bean.common.CommonSettingMenuBean -//import com.sw.healthyclients.bean.emergency.EmergencyGroupInfo -//import com.sw.healthyclients.bean.home.HomeWeightRankBean -//import com.sw.healthyclients.bean.intervention.AEDResultBean -//import com.sw.healthyclients.bean.intervention.DoctorListBean -//import com.sw.healthyclients.bean.intervention.ElectronicBookBean -//import com.sw.healthyclients.bean.intervention.EmergencySearchResponse -//import com.sw.healthyclients.bean.intervention.ImageTextBean -//import com.sw.healthyclients.bean.intervention.InterventionPlanBean -//import com.sw.healthyclients.bean.intervention.KnowledgeSuggestBean -//import com.sw.healthyclients.bean.intervention.KnowledgeSuggestDetailBean -//import com.sw.healthyclients.bean.intervention.MySportBean -//import com.sw.healthyclients.bean.intervention.MySportDetailBean -//import com.sw.healthyclients.bean.intervention.NearbyAmbulanceBean -//import com.sw.healthyclients.bean.intervention.NearbyResourceBean -//import com.sw.healthyclients.bean.intervention.PostHealthBean -//import com.sw.healthyclients.bean.intervention.PostHealthSecondaryBean -//import com.sw.healthyclients.bean.intervention.PsychologyConceptBean -//import com.sw.healthyclients.bean.intervention.ResourceStaffBean -//import com.sw.healthyclients.bean.intervention.RiskAssessmentResultBean -//import com.sw.healthyclients.bean.intervention.SelectFollowUpListBean -//import com.sw.healthyclients.bean.intervention.SelectMedicalResourceBean -//import com.sw.healthyclients.bean.intervention.SelectMedicinePrescriptionDTOListBean -//import com.sw.healthyclients.bean.intervention.SelectUserHaveNewTabBean -//import com.sw.healthyclients.bean.intervention.SportEffectBean -//import com.sw.healthyclients.bean.intervention.SportEffectVideoBean -//import com.sw.healthyclients.bean.intervention.SportWayBean -//import com.sw.healthyclients.bean.intervention.VisitRecordBean -//import com.sw.healthyclients.data.bean.ApiResponse -//import com.sw.healthyclients.ui.intervene2.bean.AskFollowCheckBean -//import com.sw.healthyclients.ui.intervene2.bean.DiabetesQuestionBean -//import com.sw.healthyclients.ui.intervene2.bean.EnrollBean -//import com.sw.healthyclients.ui.intervene2.bean.FoodOverWeightInterventionActionBean -//import com.sw.healthyclients.ui.intervene2.bean.FoodOverWeightListBean -//import com.sw.healthyclients.ui.intervene2.bean.FoodOverWeightRankBean -//import com.sw.healthyclients.ui.intervene2.bean.FoodWarningBean -//import com.sw.healthyclients.ui.intervene2.bean.MonitorResultBean -//import com.sw.healthyclients.ui.intervene2.bean.PracticeBean -//import com.sw.healthyclients.ui.intervene2.bean.RankBean -//import com.sw.healthyclients.ui.intervene2.bean.RankListResult -//import com.sw.healthyclients.ui.intervene2.bean.UserWeightInfoBean -//import com.sw.healthyclients.ui.intervene2.bean.WeightChangeBean -//import com.sw.healthyclients.ui.intervene2.bean.WeightChangeTrendBean -//import okhttp3.RequestBody -//import retrofit2.http.Body -//import retrofit2.http.GET -//import retrofit2.http.POST -//import retrofit2.http.QueryMap -// -interface InterventionApi { -// -// /** -// * 专家知识列表 -// */ -// @POST("health-intervene/api/knowledge/post/queryKnowledgeBySpecialist") -// suspend fun queryKnowledgeBySpecialist(@Body requestBody: RequestBody): ApiResponse> -// /** -// * 公共知识列表 -// */ -// @POST("health-intervene/api/knowledge/post/queryKnowledgeList") -// suspend fun queryKnowledgeList(@Body requestBody: RequestBody): ApiResponse> -// -// /** -// * 专家列表 -// */ -// @POST("health-intervene/api/knowledge/post/querySpecialistList") -// suspend fun querySpecialistList(@Body requestBody: RequestBody): ApiResponse> -// -// /** -// * 健康技能-电子书列表 -// */ -// @POST("health-intervene/api/knowledge/post/querySpecialistList") -// suspend fun getElectronicBookList(@Body requestBody: RequestBody): ApiResponse> -// /** -// * 体检可视化-Fragment中一级标签 -// */ -// @POST("health-intervene/api/knowledge/post/querySpecialistList") -// suspend fun getPrimaryTagListData(@Body requestBody: RequestBody): ApiResponse> -// /** -// * 体检可视化-Fragment中二级标签 -// */ -// @POST("health-intervene/api/knowledge/post/querySpecialistList") -// suspend fun getSecondaryTagListData(@Body requestBody: RequestBody): ApiResponse> -// -// /** -// * 岗位列表 -// */ -// @GET("health-intervene/health-answer/class/app/list") -// suspend fun selectPostListById(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 岗位列表 -// */ -// @GET("health-intervene/api/knowledge/post/knowledgeListByPostId") -// suspend fun knowledgeListByPostId(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 运动效果-视频列表 -// */ -// @GET("health-intervene/rest/health-food-exercise/fitness/class/list") -// suspend fun getSportVideoListData(@QueryMap params: MutableMap): ApiResponse -// /** -// * 运动效果-详情 -// */ -// @GET("health-intervene/rest/health-food-exercise/fitness/detail") -// suspend fun getSportVideoDetailData(@QueryMap params: MutableMap): ApiResponse -// /** -// * 我的运动 -// */ -// @GET("health-intervene/rest/health-food-exercise/fitness/record") -// suspend fun getMySportListData(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 获取运动方式 -// */ -// @GET("health-intervene/rest/health-food-exercise/fitness/fitnessList") -// suspend fun getSportWayListData(): ApiResponse> -// /** -// * 上传运动 -// */ -// @POST("health-intervene/rest/health-food-exercise/fitness/upload") -// suspend fun uploadSportData(@Body requestBody: RequestBody): ApiResponse -// -// /** -// * 急救联动-资源列表 -// */ -// @POST("health-intervene/rest/aid/resource/search") -// suspend fun getEmergencySearch(@Body requestBody: RequestBody): ApiResponse -// /** -// * 急救联动-AED -// */ -// @GET("health-emergency/api/aed/nearbyAed") -// suspend fun getNearbyAed(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 我的运动详情 -// */ -// @GET("health-intervene/rest/health-food-exercise/fitness/analysisInfo") -// suspend fun getMySportDetailData(@QueryMap params: MutableMap): ApiResponse -// /** -// * 获取应急IM群组信息 -// */ -// @GET("/health-emergency/api/emergency/createGroupMag") -// suspend fun getIMGroupInfo(@QueryMap params: MutableMap): ApiResponse -// /** -// * 干预-测评列表 -// */ -// @GET("health-intervene/rest/health-survey/assess/template/listNew") -// suspend fun getRiskAssessmentListData(@QueryMap params: MutableMap): ApiResponse -// - /** - * 附近医疗点 - */ - @GET("medical-center/api/resource/nearbyResource") - suspend fun nearbyResource(@QueryMap params: MutableMap): ApiResponse> - /** - * 附近救护车 - */ - @GET("medical-center/api/ambulance/nearbyAmbulance") - suspend fun nearbyAmbulance(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 查询最近医疗点和就诊记录 -// */ -// @POST("medical-center/api/chronicDiseaseUser/selectMedicalResource") -// suspend fun selectMedicalResource(@QueryMap params: MutableMap): ApiResponse -// /** -// * 通过id查询医疗点 -// */ -// @GET("medical-center/medicalCenter/medicalResource/queryById") -// suspend fun MedicalResourcequeryById(@QueryMap params: MutableMap): ApiResponse -// /** -// * 通过id查询医疗点 -// */ -// @GET("medical-center/api/resource/resourceStaff") -// suspend fun resourceStaff(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 查询慢病管理的tab -// */ -// @GET("medical-center/api/followUpRecord/user/tab") -// suspend fun selectUserHaveTab(@QueryMap params: MutableMap): ApiResponse -// /** -// * 随访记录 -// */ -// @GET("medical-center/api/followUpRecord/selectFollowUpList") -// suspend fun selectFollowUpList(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 申请随访校验 -// */ -// @GET("medical-center/api/followUpRecord/apply-check") -// suspend fun askFollowCheck(@QueryMap params: MutableMap): ApiResponse -// /** -// * 申请随访提交 -// */ -// @POST("medical-center/api/followUpRecord/user-apply") -// suspend fun askFollowSubmit(@Body requestBody: RequestBody): ApiResponse -// /** -// * 膳食处方 -// */ -// @GET("medical-center/api/dietaryPrescription/selectDietaryPrescriptionList") -// suspend fun selectDietaryPrescriptionList(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 运动处方 -// */ -// @GET("medical-center/api/sportsPrescription/selectSportsPrescriptionDTOList") -// suspend fun selectSportsPrescriptionDTOList(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 用药方案 -// */ -// @GET("medical-center/api/medicinePrescription/selectMedicinePrescriptionDTOList") -// suspend fun selectMedicinePrescriptionDTOList(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 就诊记录 -// */ -// @GET("medical-center/api/dailyDiagnosis/list") -// suspend fun quertVisitRecordList(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 是否填写基础问卷 -// */ -// @GET("health-intervene/api/psychology/psychologyEvaluateBase/selectPsychologyBaseExist") -// suspend fun selectPsychologyBaseExist(@QueryMap params: MutableMap): ApiResponse -// /** -// * 心理概念知识 -// */ -// @GET("health-intervene/app/psychology/psychologyConceptKnow/list") -// suspend fun psychologyConcept(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 心理答题知识推荐 -// */ -// @GET("health-intervene/api/psychology/answer/knowledge/page") -// suspend fun knowledgeSuggest(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 心理答题知识推荐详情 -// */ -// @GET("health-intervene/api/psychology/answer/knowledge") -// suspend fun knowledgeAnswerDetails(@QueryMap params: MutableMap): ApiResponse -// -// -// /** -// * 体重管理-首页活动列表 -// */ -// @GET("health-intervene/api/intervene/activity/list") -// suspend fun list(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 体重管理-用户报名活动 -// */ -// @GET("health-intervene/api/intervene/activity/user/registration") -// suspend fun registration(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 体重管理-用户报名数据 -// */ -// @GET("health-intervene/api/intervene/activity/signUp") -// suspend fun signUp(@QueryMap params: MutableMap): ApiResponse -// /** -// * 体重管理-体重变化 -// */ -// @GET("health-intervene/api/intervene/activity/weightChange") -// suspend fun weightChange(@QueryMap params: MutableMap): ApiResponse -// /** -// * 体重管理-活动排名 -// */ -// @GET("health-intervene/api/intervene/activity/rank") -// suspend fun rank(@QueryMap params: MutableMap): ApiResponse -// /** -// * 体重管理-更新体重 -// */ -// @GET("health-intervene/api/intervene/activity/user/updateWeight") -// suspend fun updateWeight(@QueryMap params: MutableMap): ApiResponse -// /** -// * 体重管理-数据监控 -// */ -// @GET("health-intervene/api/intervene/activity/monitor") -// suspend fun monitor(@QueryMap params: MutableMap): ApiResponse -// /** -// * 体重管理-活动历史 -// */ -// @GET("health-intervene/api/intervene/activity/history") -// suspend fun history(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 体重管理-全部排名 -// */ -// @GET("health-intervene/api/intervene/activity/all/rank") -// suspend fun actionRank(@QueryMap params: MutableMap): ApiResponse -// /** -// * 体重管理-体重变化趋势 -// */ -// @GET("health-intervene/api/intervene/activity/user/weightChangeTrend") -// suspend fun weightChangeTrend(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 营养慢病-实测 -// */ -// @GET("health-intervene/meals/api/cd-nutrient/calculate/practice") -// suspend fun practice(@QueryMap params: MutableMap): ApiResponse -// /** -// * 营养慢病-模拟 -// */ -// @POST("health-intervene/meals/api/cd-nutrient/calculate/simulate") -// suspend fun simulate(@Body requestBody: RequestBody): ApiResponse -// -// /** -// * 慢病预警-查询用户是否提交过问卷 -// */ -// @GET("health-intervene/meals/api/cd-forecast/survey/check") -// suspend fun surveyCheck(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 慢病预警-获取问卷信息 -// */ -// @GET("health-intervene/meals/api/cd-forecast/survey/info") -// suspend fun surveyInfo(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 提交问卷-慢病预警 -// */ -// @POST("health-intervene/meals/api/cd-forecast/survey/submit") -// suspend fun postAnswerSurveyData(@Body requestBody: RequestBody): ApiResponse -// -// -// /** -// * 慢病预警-实测 -// */ -// @GET("health-intervene/meals/api/cd-forecast/user/practice") -// suspend fun getUserPractice(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 慢病预警-模拟 -// */ -// @POST("health-intervene/meals/api/cd-forecast/user/simulate") -// suspend fun postUserSimulate(@Body requestBody: RequestBody): ApiResponse -// -// -// /** -// * 干预首页-心理数据(返回最新的心理评估结果) -// */ -// @GET("health-intervene/intervene-home/psychology") -// suspend fun interveneHomePsychology(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 干预首页-最新一天的膳食摄入(千卡) -// */ -// @GET("health-intervene/intervene-home/meals") -// suspend fun interveneHomeMeals(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 干预首页-知识模块数据(返回学习时长) -// */ -// @GET("health-intervene/intervene-home/knowledge") -// suspend fun interveneHomeKnowledge(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 干预首页-最新一天的运动消耗(卡) -// */ -// @GET("health-intervene/intervene-home/exercise") -// suspend fun interveneHomeExercise(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 干预首页-环境数据(返回最近的室外空气质量设备数据) -// */ -// @GET("health-intervene/intervene-home/environment") -// suspend fun interveneHomeEnvironment(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 干预首页-糖尿病(返回最新血糖) -// */ -// @GET("health-intervene/intervene-home/diabetes") -// suspend fun interveneHomeDiabetes(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 干预首页-心血管(手表返回最新心率) -// */ -// @GET("health-intervene/intervene-home/cardiovascular") -// suspend fun interveneHomeCardiovascular(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 干预首页-癌症(返回重点指标是否异常) -// */ -// @GET("health-intervene/intervene-home/cancer") -// suspend fun interveneHomeCancer(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 体重管理-获取当前用户是否已经参加活动 -// */ -// @GET("health-intervene/app/healthMealsWeightPlan/getJoinPlanId") -// suspend fun getWeightJoinPlanId(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 体重管理-活动列表 -// */ -// @GET("health-intervene/app/healthMealsWeightPlan/list") -// suspend fun getWeightPlanList(@QueryMap params: MutableMap): ApiResponse> -// -// /** -// * 体重管理-获取当前登录人身高体重及目标体重 -// */ -// @GET("health-intervene/app/healthMealsWeightPlan/getUserInfoByPlanId") -// suspend fun getUserWeightInfo(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 体重管理-活动报名 -// */ -// @POST("health-intervene/app/healthMealsWeightPlan/signUp") -// suspend fun postWeightPlanSignUp(@Body requestBody: RequestBody): ApiResponse -// -// /** -// * 体重管理-获取活动详情 -// */ -// @GET("health-intervene/app/healthMealsWeightPlan/getPlanInfo") -// suspend fun getWeightPlanInfo(@QueryMap params: MutableMap): ApiResponse -// /** -// * 体重管理-获取历史参与记录 -// */ -// @GET("health-intervene/app/healthMealsWeightPlan/joinHistory") -// suspend fun getWeightJoinHistory(@QueryMap params: MutableMap): ApiResponse> -// /** -// * 体重管理-分页获取计划排行榜 -// */ -// @GET("health-intervene/app/healthMealsWeightPlan/getPlanRank") -// suspend fun getWeightRank(@QueryMap params: MutableMap): ApiResponse -// /** -// * 体重管理-分页获取计划排行榜 -// */ -// @GET("health-intervene/app/healthMealsWeightPlan/getPlanRankNew") -// suspend fun getWeightRankNew(@QueryMap params: MutableMap): ApiResponse -// -// /** -// * 体重管理-更新体重 -// */ -// @GET("health-intervene/app/healthMealsWeightPlan/updateWeight") -// suspend fun getMealsUpdateWeight(@QueryMap params: MutableMap): ApiResponse -// -// -// - /** - * 心血管-AED组网 - */ - @GET("health-intervene/intervene/v2/aedEquipmentManger/nearbyAed") - suspend fun getAedNetworkingData(@QueryMap params: MutableMap): ApiResponse> - -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/data/api/InterventionNetApi.kt b/app/src/main/java/com/xjjk/healthyclients/data/api/InterventionNetApi.kt deleted file mode 100644 index 726bd1b..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/data/api/InterventionNetApi.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.xjjk.healthyclients.data.api - -import com.xjjk.healthyclients.retrofit.intervention.CustomInterventionResponseResult -import retrofit2.Call -import retrofit2.http.Body -import retrofit2.http.GET -import retrofit2.http.Header -import retrofit2.http.Headers -import retrofit2.http.POST -import retrofit2.http.Query -import java.util.SortedMap - -interface InterventionNetApi { - - /** - * 获取公钥 - */ - @Headers("urlType:levelTwo") - @GET("/gateway/sys/getPublicKey") - fun getPublicKey( - @Header("X-TIMESTAMP") timeStamp: String, - @Header("X-Sign") timeSign: String, - @Query("timeSign") timeSignStr: String - ): Call> - - /** - * 通过身份证获取Token - */ - @Headers("urlType:levelTwo") - @POST("/gateway/sys/thirdAppGetTokenByIdCard") - fun getTokenByIdCard( - @Header("X-TIMESTAMP") timeStamp: String, - @Header("X-Sign") signStr: String, - @Body idCardJson: SortedMap - ): Call> -// -// /** -// * 获取健康干预膳食信息 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/getOneUserNutrimentHealthScores") -// fun getUserNutriment(): Call> -// -// /** -// * 获取膳食信息顶部用户数据 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/getHomePageUserInfo") -// fun getFoodHomePageUserInfo(): Call> -// -// -// /** -// * 获取膳食信息底部数据 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/nutritionFood") -// fun getFoodHomePageNutritionFood(@Query("day") day: String): Call> -// -// /** -// * 获取单餐营养分析 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/queryUserTimes") -// fun getNutritionUserTimes( -// @Query("timesName") timesName: String, -// @Query("mainTimeDay") mainTimeDay: String -// ): Call> -// -// /** -// * 获取更多营养素 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/otherEnergyVOList") -// fun getOtherEnergyList( -// @Query("timesName") timesName: String, -// @Query("mainTimeDay") mainTimeDay: String -// ): Call>> -// -// -// /** -// * 食物营养排行榜 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/getQueryStFoodNutritionVOList") -// fun getStFoodNutritionList( -// @Query("timesName") timesName: String, -// @Query("mainTimeDay") mainTimeDay: String, -// @Query("type") type: Int -// ): Call>> -// -// /** -// * 获取单餐就餐数据 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/getWeChatOneTimesVOList") -// fun getOneTimesFoodList( -// @Query("timesName") timesName: String, -// @Query("mainTimeDay") mainTimeDay: String -// ): Call> -// -// /** -// * 获取单日营养分析 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/queryUserDayTimesNew") -// fun getDayNutritionUser( -// @Query("mainTimeDay") mainTimeDay: String -// ): Call> -// -// -// /** -// * 获取日就餐数据 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/getUserEatWeekTimes") -// fun getUserEatWeekTimes( -// @Query("days") mainTimeDay: String -// ): Call>> -// -// /** -// * 获取日就餐数据 -// */ -// @Headers("urlType:levelTwo") -// @GET("/gateway/thirdAppProgram/getMonthCalendarAndStatus") -// fun getMonthCalendarAndStatus( -// @Query("monthTime") monthTime: String -// ): Call> - -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/data/repository/CommonRepository.kt b/app/src/main/java/com/xjjk/healthyclients/data/repository/CommonRepository.kt index 7b790d3..a426738 100644 --- a/app/src/main/java/com/xjjk/healthyclients/data/repository/CommonRepository.kt +++ b/app/src/main/java/com/xjjk/healthyclients/data/repository/CommonRepository.kt @@ -6,6 +6,8 @@ import com.xjjk.healthyclients.bean.CommonSettingMenuBean import com.xjjk.healthyclients.bean.SelectUserInfoBean import com.xjjk.healthyclients.bean.SelectUserMessageListBean import com.xjjk.healthyclients.bean.UploadFileResultBean +import com.xjjk.healthyclients.bean.user.IMDoctorInfoBean +import com.xjjk.healthyclients.bean.user.SelectEmergencyContactListBean import com.xjjk.healthyclients.data.api.CommonApi import com.xjjk.healthyclients.data.bean.ApiResponse import com.xjjk.healthyclients.data.repository.EmergencyRepository.apiCall @@ -123,6 +125,24 @@ object CommonRepository { service.changeAlRead(map) } } + /** + * 更新紧急联系人 + */ + suspend fun updateAndInsertEmergencyContact(bean: SelectEmergencyContactListBean): ApiResponse { + return apiCall { + service.updateAndInsertEmergencyContact(bean) + } + } + /** + * 删除紧急联系人 + */ + suspend fun removeEmergencyContactList(id: String): ApiResponse { + return apiCall { + val map = mutableMapOf() + map.put("id",id) + service.removeEmergencyContactList(map) + } + } /** * 首页用户弹窗-选择多少天不显示 */ @@ -134,6 +154,16 @@ object CommonRepository { service.chooseToDontShowUp(map) } } + /** + * 卡片时效校验 + */ + suspend fun selectDoctorCardExpireTime(time:Long): ApiResponse { + return apiCall { + val map = mutableMapOf() + map.put("sendTime",time) + service.selectDoctorCardExpireTime(map) + } + } suspend fun getAppUpdateInfo(): ApiResponse{ val params = mutableMapOf() params["androidOrIos"] = 1 @@ -141,5 +171,26 @@ object CommonRepository { return apiCall { service.getAppUpdateInfo(params) } } + /** + * 全科医生校验 + */ + suspend fun selectTfHelper(id:String): ApiResponse { + return apiCall { + val map = mutableMapOf() + map.put("helpId",id) + service.selectTfHelper(map) + } + } + /** + * 查询全科医生信息 + */ + suspend fun selectHelperInfoDesc(id:String): ApiResponse { + return apiCall { + val map = mutableMapOf() + map.put("helpId",id) + service.selectHelperInfoDesc(map) + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/data/repository/HealthRecordRepository.kt b/app/src/main/java/com/xjjk/healthyclients/data/repository/HealthRecordRepository.kt deleted file mode 100644 index 99294bf..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/data/repository/HealthRecordRepository.kt +++ /dev/null @@ -1,149 +0,0 @@ -import com.xjjk.healthyclients.base.repository.BaseRepository -import com.xjjk.healthyclients.bean.healthrecord.CheckRecordUserInfoBean -import com.xjjk.healthyclients.data.api.HealthRecordApi -import com.xjjk.healthyclients.data.bean.ApiResponse -import com.xjjk.healthyclients.retrofit.RetrofitManager - - -/** - * @author nanfeifei - * @time 2023/8/4 13:30 - * @description - */ -object HealthRecordRepository : BaseRepository() { - private val service by lazy { RetrofitManager.getService(HealthRecordApi::class.java) } -// suspend fun getHealthDataAnalysisData(): ApiResponse> { -// return apiCall { service.getHealthDataAnalysisData() } -// } -// suspend fun getHealthDataAnalysisItemData(id: String): ApiResponse> { -// val params = mutableMapOf() -// params["classId"] = id -// return apiCall { service.getHealthDataAnalysisItemData(params) } -// } -// suspend fun getHealthDataAnalysisItemDetailData(id: String): ApiResponse> { -// val params = mutableMapOf() -// params["modeId"] = id -// return apiCall { service.getHealthDataAnalysisItemDetailData(params) } -// } -// suspend fun getHealthCheckItemRecordData(id: String): ApiResponse { -// val params = mutableMapOf() -// params["modeId"] = id -// return apiCall { service.getHealthCheckItemRecordData(params) } -// } -// suspend fun waistHipRatio(sex: String,waist: String,hip: String): ApiResponse { -// val params = mutableMapOf() -// params["sex"] = sex -// params["waist"] = waist -// params["hip"] = hip -// return apiCall {service.waistHipRatio(params)} -// } -// -// suspend fun idealBodyWeight(age: String,height: String): ApiResponse { -// val params = mutableMapOf() -// params["age"] = age -// params["height"] = height -// return apiCall {service.idealBodyWeight(params)} -// } -// suspend fun energyDemand(sex: String,age: String,height: String,weight: String): ApiResponse { -// val params = mutableMapOf() -// params["sex"] = sex -// params["age"] = age -// params["height"] = height -// params["weight"] = weight -// return apiCall {service.energyDemand(params)} -// } -// suspend fun allExercise(): ApiResponse> { -// val params = mutableMapOf() -// return apiCall {service.allExercise(params)} -// } -// suspend fun loseKilo(exerciseId:String,weight:String): ApiResponse { -// val params = mutableMapOf() -// params["exerciseId"] = exerciseId -// params["weight"] = weight -// return apiCall {service.loseKilo(params)} -// } -// suspend fun knowYourselfInMinute(sex: String,age: String,height: String,weight: String): ApiResponse { -// val params = mutableMapOf() -// params["sex"] = sex -// params["age"] = age -// params["height"] = height -// params["weight"] = weight -// return apiCall {service.knowYourselfInMinute(params)} -// } -// suspend fun selectHealthMonitoringInfo(): ApiResponse { -// val params = mutableMapOf() -// return apiCall {service.selectHealthMonitoringInfo(params)} -// } -// suspend fun selectHeightAndWeightBmiList(year:String): ApiResponse> { -// val params = mutableMapOf() -// params["year"] = year -// return apiCall {service.selectHeightAndWeightBmiList(params)} -// } -// suspend fun selectBloodFat(year:String): ApiResponse> { -// val params = mutableMapOf() -// params["year"] = year -// return apiCall {service.selectBloodFat(params)} -// } -// suspend fun selectBloodSugarList(year:String): ApiResponse> { -// val params = mutableMapOf() -// params["year"] = year -// return apiCall { service.selectBloodSugarList(params) } -// } -// -// suspend fun getBMIHomeData(): ApiResponse { -// return apiCall {service.getBMIHomeData()} -// } -// suspend fun selectBloodPresureList(year:String): ApiResponse> { -// val params = mutableMapOf() -// params["year"] = year -// return apiCall {service.selectBloodPresureList(params)} -// } -// suspend fun selectBloodSugarInfo(): ApiResponse { -// val params = mutableMapOf() -// return apiCall {service.selectBloodSugarInfo(params)} -// } -// suspend fun selectBloodPresure(): ApiResponse { -// val params = mutableMapOf() -// return apiCall { service.selectBloodPresure(params) } -// } -// suspend fun getExceptionData(): ApiResponse> { -// return apiCall {service.getExceptionData()} -// } -// suspend fun getHealthStatusData(): ApiResponse { -// return apiCall {service.getHealthStatusData()} -// } -// suspend fun getConclusionSuggestionData(date: String): ApiResponse { -// val params = mutableMapOf() -// params["year"] = date -// return apiCall {service.getConclusionSuggestionData(params)} -// } - suspend fun getHistoryReportNoDetail(id: String): ApiResponse { - val params = mutableMapOf() - params["id"] = id - return apiCall {service.getHistoryReportNoDetail(params)} - } -// suspend fun getHistoryReportByPage(pageNo: String,pageSize:String="100",userId:String): ApiResponse { -// val params = mutableMapOf() -// params["pageNo"] = pageNo -// params["pageSize"] = pageSize -// params["userId"] = userId -// return apiCall { service.getHistoryReportByPage(params.toJson().toRequestBody()) } -// } -// -// suspend fun getConclusionSuggestionDateList(): ApiResponse> { -// return apiCall {service.getConclusionSuggestionDateList()} -// } -// -// suspend fun getReportVoiceUrl(id: String): ApiResponse { -// val params = mutableMapOf() -// params["resultId"] = id -// return apiCall {service.getReportVoiceUrl(params)} -// } -// -// suspend fun convertReportVoiceUrl(id: String, type: Int): ApiResponse { -// val params = mutableMapOf() -// params["resultId"] = id -// params["type"] = type -// return apiCall {service.convertReportVoiceUrl(params)} -// } -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/data/repository/InterventionRepository.kt b/app/src/main/java/com/xjjk/healthyclients/data/repository/InterventionRepository.kt deleted file mode 100644 index 7b06fa5..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/data/repository/InterventionRepository.kt +++ /dev/null @@ -1,771 +0,0 @@ -import com.sw.healthyclients.bean.intervention.NearbyAmbulanceBean -import com.xjjk.healthyclients.bean.AedNetworkingBean -import com.xjjk.healthyclients.bean.NearbyResourceBean -import com.xjjk.healthyclients.data.api.InterventionApi -import com.xjjk.healthyclients.data.bean.ApiResponse -import com.xjjk.healthyclients.data.repository.EmergencyRepository.apiCall -import com.xjjk.healthyclients.retrofit.RetrofitManager - -// -//import com.sw.healthyclients.bean.common.CommonSettingMenuBean -//import com.sw.healthyclients.bean.emergency.EmergencyGroupInfo -//import com.sw.healthyclients.bean.home.HomeWeightRankBean -//import com.sw.healthyclients.bean.intervention.AEDBeanRequest -//import com.sw.healthyclients.bean.intervention.AEDResultBean -//import com.sw.healthyclients.bean.intervention.DoctorListBean -//import com.sw.healthyclients.bean.intervention.ElectronicBookBean -//import com.sw.healthyclients.bean.intervention.EmergencySearchRequest -//import com.sw.healthyclients.bean.intervention.EmergencySearchResponse -//import com.sw.healthyclients.bean.intervention.ImageTextBean -//import com.sw.healthyclients.bean.intervention.InterventionPlanBean -//import com.sw.healthyclients.bean.intervention.KnowledgeSuggestBean -//import com.sw.healthyclients.bean.intervention.KnowledgeSuggestDetailBean -//import com.sw.healthyclients.bean.intervention.MySportBean -//import com.sw.healthyclients.bean.intervention.MySportDetailBean -//import com.sw.healthyclients.bean.intervention.NearbyAmbulanceBean -//import com.sw.healthyclients.bean.intervention.NearbyResourceBean -//import com.sw.healthyclients.bean.intervention.PostHealthBean -//import com.sw.healthyclients.bean.intervention.PostHealthSecondaryBean -//import com.sw.healthyclients.bean.intervention.PsychologyConceptBean -//import com.sw.healthyclients.bean.intervention.ResourceStaffBean -//import com.sw.healthyclients.bean.intervention.RiskAssessmentResultBean -//import com.sw.healthyclients.bean.intervention.SelectFollowUpListBean -//import com.sw.healthyclients.bean.intervention.SelectMedicalResourceBean -//import com.sw.healthyclients.bean.intervention.SelectMedicinePrescriptionDTOListBean -//import com.sw.healthyclients.bean.intervention.SelectUserHaveNewTabBean -//import com.sw.healthyclients.bean.intervention.SportEffectBean -//import com.sw.healthyclients.bean.intervention.SportEffectVideoBean -//import com.sw.healthyclients.bean.intervention.SportWayBean -//import com.sw.healthyclients.bean.intervention.VisitRecordBean -//import com.sw.healthyclients.data.api.InterventionApi -//import com.sw.healthyclients.data.bean.ApiResponse -//import com.sw.healthyclients.data.repository.EmergencyRepository.apiCall -//import com.sw.healthyclients.retrofit.RetrofitManager -//import com.sw.healthyclients.retrofit.RetrofitManager.toRequestBody -//import com.sw.healthyclients.superfuntion.toJson -//import com.sw.healthyclients.ui.intervene2.bean.AskFollowCheckBean -//import com.sw.healthyclients.ui.intervene2.bean.DiabetesQuestionBean -//import com.sw.healthyclients.ui.intervene2.bean.EnrollBean -//import com.sw.healthyclients.ui.intervene2.bean.FoodOverWeightInterventionActionBean -//import com.sw.healthyclients.ui.intervene2.bean.FoodOverWeightListBean -//import com.sw.healthyclients.ui.intervene2.bean.FoodOverWeightRankBean -//import com.sw.healthyclients.ui.intervene2.bean.FoodWarningBean -//import com.sw.healthyclients.ui.intervene2.bean.MonitorResultBean -//import com.sw.healthyclients.ui.intervene2.bean.PracticeBean -//import com.sw.healthyclients.ui.intervene2.bean.RankBean -//import com.sw.healthyclients.ui.intervene2.bean.RankListResult -//import com.sw.healthyclients.ui.intervene2.bean.UserWeightInfoBean -//import com.sw.healthyclients.ui.intervene2.bean.UserWeightSignUpBean -//import com.sw.healthyclients.ui.intervene2.bean.WeightChangeBean -//import com.sw.healthyclients.ui.intervene2.bean.WeightChangeTrendBean -// -object InterventionRepository { - private val service by lazy { RetrofitManager.getService(InterventionApi::class.java) } -// -// /** -// * 专家知识列表 -// */ -// suspend fun queryKnowledgeBySpecialist( -// specialistId: String, -// pageNo: Int, -// pageSize: Int -// ): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["pageNo"] = pageNo -// map["pageSize"] = pageSize -// map["specialistId"] = specialistId -// service.queryKnowledgeBySpecialist(map.toJson().toRequestBody()) -// } -// } -// -// /** -// * 公共知识列表 -// */ -// suspend fun queryKnowledgeList( -// knowledgeType: String, -// sourceType: Int?, -// pageNo: Int, -// pageSize: Int -// ): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["pageNo"] = pageNo -// map["pageSize"] = pageSize -// map["flag"] = knowledgeType -// if (sourceType != null) { -// map["type"] = sourceType.toString() -// } -// service.queryKnowledgeList(map.toJson().toRequestBody()) -// } -// } -// -// /** -// * 专家列表 -// */ -// suspend fun querySpecialistList(pageNo: Int, pageSize: Int): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["pageNo"] = pageNo -// map["pageSize"] = pageSize -// service.querySpecialistList(map.toJson().toRequestBody()) -// } -// } -// -// suspend fun getElectronicBookList( -// pageNo: Int, -// pageSize: Int -// ): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["pageNo"] = pageNo -// map["pageSize"] = pageSize -// service.getElectronicBookList(map.toJson().toRequestBody()) -// } -// } -// -// suspend fun getPrimaryTagListData(): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// service.getPrimaryTagListData(map.toJson().toRequestBody()) -// } -// } -// -// suspend fun getSecondaryTagListData(): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// service.getSecondaryTagListData(map.toJson().toRequestBody()) -// } -// } -// -// /** -// * 岗位列表 -// */ -// suspend fun selectPostListById(classPatentNo: String="",classNo: String=""): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["classPatentNo"] = classPatentNo -// map["classNo"] = classNo -// service.selectPostListById(map) -// } -// } -// /** -// * 查询慢病管理的tab -// */ -// suspend fun selectUserHaveTab(): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// service.selectUserHaveTab(map) -// } -// } -// /** -// * 随访记录 -// */ -// suspend fun selectFollowUpList(type:Int,pageNo:Int,pageSize:Int): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["type"]=type -// map["pageNo"]=pageNo -// map["pageSize"]=pageSize -// service.selectFollowUpList(map) -// } -// } -// -// /** -// * 申请随访记录校验 -// */ -// suspend fun askFollowCheck(): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// service.askFollowCheck(map) -// } -// } -// -// /** -// * 申请随访提交 -// */ -// suspend fun askFollowSubmit(content:String): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map.put("applications",content) -// service.askFollowSubmit(map.toJson().toRequestBody()) -// } -// } -// /** -// * 膳食处方 -// */ -// suspend fun selectDietaryPrescriptionList(type:Int): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["type"]=type -// service.selectDietaryPrescriptionList(map) -// } -// } -// /** -// * 运动处方 -// */ -// suspend fun selectSportsPrescriptionDTOList(type:Int): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["type"]=type -// service.selectSportsPrescriptionDTOList(map) -// } -// } -// /** -// * 用药方案 -// */ -// suspend fun selectMedicinePrescriptionDTOList(type:Int): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["type"]=type -// service.selectMedicinePrescriptionDTOList(map) -// } -// } -// /** -// * 就诊记录 -// */ -// suspend fun quertVisitRecordList(): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// service.quertVisitRecordList(map) -// } -// } -// -// /** -// * 岗位二级列表 -// */ -// suspend fun knowledgeListByPostId( -// flag: String, -// id: String -// ): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["postId"] = id -// map["flag"] = flag -// service.knowledgeListByPostId(map) -// } -// } -// -// suspend fun getSportVideoListData(tabId: String): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// if (tabId.isNotEmpty()) { -// map["category"] = tabId -// } -// service.getSportVideoListData(map) -// } -// } -// -// suspend fun getSportVideoDetailData(itemId: Int): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["fitnessNo"] = itemId -// service.getSportVideoDetailData(map) -// } -// } -// -// suspend fun getMySportListData( -// pageNo: Int, -// pageSize: Int -// ): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["pageNum"] = pageNo -// map["pageSize"] = pageSize -// service.getMySportListData(map) -// } -// } -// -// suspend fun getEmergencySearch(bean: EmergencySearchRequest): ApiResponse { -// return apiCall { -// service.getEmergencySearch(bean.toJson().toRequestBody()) -// } -// } -// suspend fun getNearbyAed(bean: AEDBeanRequest): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// if(bean.longitude>0){ -// map["longitude"] = bean.longitude -// } -// if(bean.latitude>0){ -// map["latitude"] = bean.latitude -// } -// map["radiusRange"] = bean.radiusRange -// map["aedNum"] = "" -// service.getNearbyAed(map) -// } -// } -// -// suspend fun getSportWayListData(): ApiResponse> { -// return apiCall { service.getSportWayListData() } -// } -// -// suspend fun uploadSportData( -// sportWayId: Int, -// sportMinutes: Int, -// videoPath: String -// ): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["fitnessNo"] = sportWayId -// map["minutes"] = sportMinutes -// map["video"] = videoPath -// service.uploadSportData(map.toJson().toRequestBody()) -// } -// } -// -// suspend fun getMySportDetailData(id: Int): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["id"] = id -// service.getMySportDetailData(map) -// } -// } -// -// /** -// * 急救联动发起咨询 -// * @param type 咨询类型0:图文 1:视频 -// */ -// suspend fun getIMGroupInfo(name: String, longitude: Double, -// latitude: Double, type: String): ApiResponse { -// var map = mutableMapOf() -// map["longitude"] = longitude -// map["latitude"] = latitude -// map["type"] = type -// map["name"] = name -// return apiCall { service.getIMGroupInfo(map) } -// } -// suspend fun getRiskAssessmentListData(pageType: Int): ApiResponse{ -// var map = mutableMapOf() -// map["module"] = pageType -// return apiCall { service.getRiskAssessmentListData(map) } -// } -// - suspend fun nearbyResource(name:String="",longitude: Double,latitude:Double,resourceNum:Int): ApiResponse> { - var map = mutableMapOf() - map["name"] = name - map["longitude"] = longitude - map["latitude"] = latitude - map["radiusRange"] = 100000 - map["resourceNum"] = resourceNum - return apiCall { service.nearbyResource(map) } - } - - suspend fun nearbyAmbulance(longitude: Double,latitude:Double): ApiResponse> { - var map = mutableMapOf() - map["longitude"] = longitude - map["latitude"] = latitude - map["radiusRange"] = 100000 - return apiCall { service.nearbyAmbulance(map) } - } -// -// suspend fun selectMedicalResource(longitude: Double,latitude:Double): ApiResponse{ -// var map = mutableMapOf() -// map["longitude"] = longitude -// map["latitude"] = latitude -// return apiCall { service.selectMedicalResource(map) } -// } -// suspend fun MedicalResourcequeryById(id:String): ApiResponse{ -// var map = mutableMapOf() -// map["id"] = id -// return apiCall { service.MedicalResourcequeryById(map) } -// } -// suspend fun resourceStaff(id:String): ApiResponse>{ -// var map = mutableMapOf() -// map["resourceId"] = id -// return apiCall { service.resourceStaff(map) } -// } -// -// /** -// * 体重管理-首页活动列表 -// */ -// suspend fun list( -// isJoin: Boolean, -// pageNo: Int, -// pageSize: Int -// ): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["isJoin"] = isJoin -// map["pageNo"] = pageNo -// map["pageSize"] = pageSize -// service.list(map) -// } -// } -// -// /** -// * 体重管理-用户报名 -// */ -// suspend fun registration( -// interveneId: String, -// height: String, -// weight: String, -// type: String -// ): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["interveneId"] = interveneId -// map["height"] = height -// map["weight"] = weight -// map["type"] = type -// service.registration(map) -// } -// } -// /** -// * 体重管理-用户报名数据 -// */ -// suspend fun signUp( -// interveneId: String -// ): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["interveneId"] = interveneId -// service.signUp(map) -// } -// } -// /** -// * 体重管理-体重变化 -// */ -// suspend fun weightChange( -// matchId: String -// ): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["matchId"] = matchId -// service.weightChange(map) -// } -// } -// /** -// * 体重管理-活动排名 -// */ -// suspend fun rank( -// interveneId: String -// ): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["interveneId"] = interveneId -// service.rank(map) -// } -// } -// /** -// * 体重管理-更新体重 -// */ -// suspend fun updateWeight( -// interveneId: String, -// weight: String -// ): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["interveneId"] = interveneId -// map["weight"] = weight -// service.updateWeight(map) -// } -// } -// /** -// * 体重管理-数据监控 -// */ -// suspend fun monitor( -// interveneId: String, -// startTime: String, -// endTime: String -// ): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["interveneId"] = interveneId -// map["startTime"] = startTime -// map["endTime"] = endTime -// service.monitor(map) -// } -// } -// -// /** -// * 体重管理-活动历史 -// */ -// suspend fun history( -// pageNo: Int, -// pageSize: Int -// ): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["pageNo"] = pageNo -// map["pageSize"] = pageSize -// service.history(map) -// } -// } -// /** -// * 体重管理-全部排名 -// */ -// suspend fun actionRank(column:String,interveneId:String, -// pageNo: Int, -// pageSize: Int -// ): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["pageNo"] = pageNo -// map["pageSize"] = pageSize -// map["column"] = column -// map["order"] = "asc" -// map["interveneId"] = interveneId -// service.actionRank(map) -// } -// } -// /** -// * 体重管理-全部排名 -// */ -// suspend fun weightChangeTrend(matchId:String -// ): ApiResponse> { -// return apiCall { -// val map = mutableMapOf() -// map["matchId"] = matchId -// service.weightChangeTrend(map) -// } -// } -// /** -// * 营养慢病-实测 -// */ -// suspend fun practice(startDate:String,endDate:String -// ): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["startDate"] = startDate -// map["endDate"] = endDate -// service.practice(map) -// } -// } -// /** -// * 营养慢病-实测 -// */ -// suspend fun simulate(bean : PracticeBean.BasicDataDTO): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// service.simulate(bean.toJson().toRequestBody()) -// } -// } -// -// -// /** -// * 慢病预警-查询用户是否提交过问卷 -// */ -// suspend fun surveyCheck(): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// service.surveyCheck(map) -// } -// } -// -// /** -// * 慢病预警-获取问卷信息 -// */ -// suspend fun surveyInfo(): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// service.surveyInfo(map) -// } -// } -// -// -// /** -// * 提交问卷-慢病预警 -// */ -// suspend fun postAnswerSurveyData(map: MutableMap): ApiResponse { -// return apiCall { -// service.postAnswerSurveyData(map.toJson().toRequestBody()) -// -// } -// } -// -// /** -// * 慢病预警-实测 -// */ -// suspend fun getUserPractice(startDate:String,endDate:String): ApiResponse { -// return apiCall { -// val map = mutableMapOf() -// map["startDate"] = startDate -// map["endDate"] = endDate -// service.getUserPractice(map) -// } -// } -// -// /** -// * 慢病预警-实测 -// */ -// suspend fun postUserSimulate(bean: FoodWarningBean.BasicData): ApiResponse { -// return apiCall { -// service.postUserSimulate(bean.toJson().toRequestBody()) -// } -// } -// -// suspend fun selectPsychologyBaseExist(): ApiResponse{ -// var map = mutableMapOf() -// return apiCall { service.selectPsychologyBaseExist(map) } -// } -// suspend fun psychologyConcept(): ApiResponse>{ -// var map = mutableMapOf() -// map.put("pageNo",1) -// map.put("pageSize",100) -// return apiCall { service.psychologyConcept(map) } -// } -// suspend fun knowledgeSuggest(): ApiResponse>{ -// var map = mutableMapOf() -// map.put("pageNo",1) -// map.put("pageSize",100) -// return apiCall { service.knowledgeSuggest(map) } -// } -// suspend fun knowledgeAnswerDetails(id:String): ApiResponse{ -// var map = mutableMapOf() -// map.put("id",id) -// return apiCall { service.knowledgeAnswerDetails(map) } -// } -// -// /** -// * 干预首页 8个接口 -// */ -// suspend fun interveneHomePsychology(): ApiResponse{ -// val map = mutableMapOf() -// return apiCall { service.interveneHomePsychology(map) } -// } -// suspend fun interveneHomeMeals(): ApiResponse{ -// val map = mutableMapOf() -// return apiCall { service.interveneHomeMeals(map) } -// } -// suspend fun interveneHomeKnowledge(): ApiResponse{ -// val map = mutableMapOf() -// return apiCall { service.interveneHomeKnowledge(map) } -// } -// suspend fun interveneHomeExercise(): ApiResponse{ -// val map = mutableMapOf() -// return apiCall { service.interveneHomeExercise(map) } -// } -// suspend fun interveneHomeEnvironment(longitude: Double, latitude: Double): ApiResponse{ -// val map = mutableMapOf() -// map["longitude"] = longitude -// map["latitude"] = latitude -// return apiCall { service.interveneHomeEnvironment(map) } -// } -// suspend fun interveneHomeDiabetes(): ApiResponse{ -// val map = mutableMapOf() -// return apiCall { service.interveneHomeDiabetes(map) } -// } -// suspend fun interveneHomeCardiovascular(): ApiResponse{ -// val map = mutableMapOf() -// return apiCall { service.interveneHomeCardiovascular(map) } -// } -// suspend fun interveneHomeCancer(): ApiResponse{ -// val map = mutableMapOf() -// return apiCall { service.interveneHomeCancer(map) } -// } -// -// /** -// * 体重管理-获取当前用户是否已经参加活动 -// */ -// suspend fun getWeightJoinPlanId(): ApiResponse{ -// val map = mutableMapOf() -// return apiCall { service.getWeightJoinPlanId(map) } -// } -// -// /** -// * 体重管理-活动列表 -// */ -// suspend fun getWeightPlanList(): ApiResponse>{ -// val map = mutableMapOf() -// map["pageNo"] = 1 -// map["pageSize"] = 100 -// map["state"] = 1 -// return apiCall { service.getWeightPlanList(map) } -// } -// -// /** -// * 体重管理-获取当前登录人身高体重及目标体重 -// */ -// suspend fun getUserWeightInfo(planId:String): ApiResponse{ -// val map = mutableMapOf() -// map["planId"] = planId -// return apiCall { service.getUserWeightInfo(map) } -// } -// -// /** -// * 体重管理-活动报名 -// */ -// suspend fun postWeightPlanSignUp(bean: UserWeightSignUpBean): ApiResponse { -// return service.postWeightPlanSignUp(bean.toJson().toRequestBody()) -// } -// -// /** -// * 体重管理-获取活动详情 -// */ -// suspend fun getWeightPlanInfo(planId:String,time:String): ApiResponse { -// val map = mutableMapOf() -// map["planId"] = planId -// map["time"] = time -// return apiCall { service.getWeightPlanInfo(map) } -// } -// -// /** -// * 体重管理-获取历史参与记录 -// */ -// suspend fun getWeightJoinHistory(): ApiResponse> { -// val map = mutableMapOf() -// return apiCall { service.getWeightJoinHistory(map) } -// } -// -// /** -// * 体重管理-分页获取计划排行榜 -// */ -// suspend fun getWeightRank( -// planId: String, -// type: Int, -// pageNo: Int, -// pageSize: Int -// ): ApiResponse { -// val map = mutableMapOf() -// map["planId"] = planId -// map["type"] = type -// map["pageNo"] = pageNo -// map["pageSize"] = pageSize -// return apiCall { service.getWeightRank(map) } -// } -// -// /** -// * 体重管理-分页获取计划排行榜-new -// */ -// suspend fun getWeightRankNew( -// planId: String?, -// type: Int, -// pageNo: Int, -// pageSize: Int -// ): ApiResponse { -// val map = mutableMapOf() -// map["planId"] = planId -// map["type"] = type -// map["pageNo"] = pageNo -// map["pageSize"] = pageSize -// return apiCall { service.getWeightRankNew(map) } -// } -// -// /** -// * 体重管理-更新体重 -// */ -// suspend fun getMealsUpdateWeight( -// planId: String, -// weight: String -// ): ApiResponse { -// val map = mutableMapOf() -// map["planId"] = planId -// map["weight"] = weight -// return apiCall { service.getMealsUpdateWeight(map) } -// } -// -/** - *心血管-AED组网 - */ -suspend fun getAedNetworkingData(longitude: Double,latitude: Double,radiusRange: Int,aedNum: String): ApiResponse> { - return apiCall { - val map = mutableMapOf() - map["longitude"] = longitude - map["latitude"] = latitude - map["radiusRange"] = radiusRange - map["aedNum"] = aedNum - service.getAedNetworkingData(map) - } -} -} 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 f468c44..39b9b97 100644 --- a/app/src/main/java/com/xjjk/healthyclients/fragment/EmergencyFragment.kt +++ b/app/src/main/java/com/xjjk/healthyclients/fragment/EmergencyFragment.kt @@ -7,6 +7,7 @@ import android.graphics.Color import android.net.Uri import android.os.Build import android.os.Bundle +import android.text.TextUtils import android.util.Log import android.view.View import androidx.annotation.RequiresApi @@ -57,8 +58,8 @@ class EmergencyFragment : var firstLocation = true //我当前位置的经纬度 - var mCurrentLat: Double = 34.327271 - var mCurrentLon: Double = 108.949845 + var mCurrentLat: Double = 43.793026 + var mCurrentLon: Double = 87.627704 //所选目标的经纬度 var mLat = 0.0 @@ -100,21 +101,23 @@ class EmergencyFragment : // mHeadType.add(EmergencyDictBean("全部","全部","全部","0",true)) mHeadType.add(EmergencyDictBean("油田医院","油田医院","油田医院","1",true)) mHeadType.add(EmergencyDictBean("合作医院","合作医院","合作医院","2",false)) - mHeadType.add(EmergencyDictBean("医疗点","医疗点","医疗点","3",false)) + mHeadType.add(EmergencyDictBean("健康小屋","健康小屋","健康小屋","3",false)) mHeadType.add(EmergencyDictBean("AED","AED","AED","4",false)) mHeadType.add(EmergencyDictBean("救护车","救护车","救护车","5",false)) mBinding.fragmentEmergencyHeadRv.setHeadData(mHeadType) { titleBean -> - if (titleBean.value.equals("3")) { - mViewModel.nearbyResource(mCurrentLat,mCurrentLon,100) - } else if (titleBean.value.equals("4")) { - mViewModel.getAedNetworkingData(mCurrentLon,mCurrentLat) - } else if (titleBean.value.equals("5")) { - mViewModel.nearbyAmbulance(mCurrentLat,mCurrentLon) - } else { - titleId = titleBean.value - mViewModel.getEmergencyData(titleBean.value, mCurrentLat, mCurrentLon) - } +// if (titleBean.value.equals("3")) { +// mViewModel.nearbyResource(mCurrentLat,mCurrentLon,100) +// } else if (titleBean.value.equals("4")) { +// mViewModel.getAedNetworkingData(mCurrentLon,mCurrentLat) +// } else if (titleBean.value.equals("5")) { +// mViewModel.nearbyAmbulance(mCurrentLat,mCurrentLon) +// } else { + titleId = titleBean.value + mViewModel.getEmergencyData(titleBean.value, mCurrentLat, mCurrentLon) + mBinding.fragmentEmergencyMarkerInfo.visibility = View.GONE + +// } } } @@ -357,12 +360,19 @@ class EmergencyFragment : var bean = getMarkerInfo(mLat, mLon, mViewModel.markList.value) if (bean != null) { mBinding?.let { - it.fragmentEmergencyHospitalTag.text = bean?.level + if (TextUtils.isEmpty(bean?.level_dictText)) { + it.fragmentEmergencyHospitalTag.visibility = View.GONE + } else { + it.fragmentEmergencyHospitalTag.visibility = View.VISIBLE + it.fragmentEmergencyHospitalTag.text = bean?.level_dictText + } it.fragmentEmergencyHospitalName.text = bean?.name - if(bean?.mobile?.isNullOrEmpty() == true){ - it.fragmentEmergencyPhone.visibility=View.INVISIBLE - }else{ - it.fragmentEmergencyPhone.visibility=View.VISIBLE + if (bean?.mobile == null) { + it.fragmentEmergencyPhone.visibility = View.GONE + it.fragmentEmergencyHospitalLandline.visibility = View.GONE + } else { + it.fragmentEmergencyPhone.visibility = View.VISIBLE + it.fragmentEmergencyHospitalLandline.visibility = View.VISIBLE } it.fragmentEmergencyHospitalLandline.text = bean?.mobile it.fragmentEmergencyHospitalAddress.text = bean?.address diff --git a/app/src/main/java/com/xjjk/healthyclients/fragment/MonitorFragment.kt b/app/src/main/java/com/xjjk/healthyclients/fragment/MonitorFragment.kt index 355935c..83bcb5b 100644 --- a/app/src/main/java/com/xjjk/healthyclients/fragment/MonitorFragment.kt +++ b/app/src/main/java/com/xjjk/healthyclients/fragment/MonitorFragment.kt @@ -4,6 +4,7 @@ import android.graphics.Color import android.os.Bundle import android.text.TextUtils import android.view.View +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.github.gzuliyujiang.wheelpicker.NumberPicker import com.github.gzuliyujiang.wheelview.contract.WheelFormatter import com.sw.healthyclients.data.local.DataStoreManager @@ -21,10 +22,13 @@ import com.xjjk.healthyclients.data.api.HealthCheckNetApi import com.xjjk.healthyclients.databinding.FragmentMonitorBinding import com.xjjk.healthyclients.retrofit.getHealthCheckRetrofit import com.xjjk.healthyclients.retrofit.intervention.CallbackInterventionManager +import com.xjjk.healthyclients.superfuntion.initColors import com.xjjk.healthyclients.ui.activity.CvdWarningHistoryActivity import com.xjjk.healthyclients.ui.activity.InterventionWebActivity +import com.xjjk.healthyclients.utils.ConstantUtils -class MonitorFragment: BaseVMBFragment(R.layout.fragment_monitor) { +class MonitorFragment: BaseVMBFragment(R.layout.fragment_monitor), + SwipeRefreshLayout.OnRefreshListener { private val COLOR_PICKER_OK = "#21BEBD" private val TYPE_HEART_RATE = "heart_rate" private val TYPE_SPO2 = "spo2" @@ -44,14 +48,16 @@ class MonitorFragment: BaseVMBFragment(R. private var cvdMainAdapter: CvdMainAdapter = CvdMainAdapter() private var mUserId: String = "" - private var mToken: String = "" override fun initView(root: View?, savedInstanceState: Bundle?) { + mBinding.apply { + swipeRefresh.initColors() + swipeRefresh.setOnRefreshListener(this@MonitorFragment) + } } override fun initData() { super.initData() - mToken = DataStoreManager.getToken() mUserId = DataStoreManager.getUserId().toString() // mUserId = "09fd6195cd4c4f1fb457f34678fa0011" @@ -62,12 +68,15 @@ class MonitorFragment: BaseVMBFragment(R. mBinding.recyclerView.adapter = cvdMainAdapter initListData() + getHomePageUserInfo() + } - override fun lazyLoadData() { - super.lazyLoadData() - getHomePageUserInfo() -// answer() + override fun onRefresh() { + mBinding.swipeRefresh.isRefreshing = false + if (ConstantUtils.mCheckToken) { + getHomePageUserInfo() + } } private fun initListData() { @@ -263,59 +272,6 @@ class MonitorFragment: BaseVMBFragment(R. } -// fun answer(){ -// dialog?.show() -// var getCvdHomeData = mApi.selectTfFillQuestion(mType.toString()) -// getCvdHomeData.enqueue(object : CallbackInterventionManager() { -// -// override fun onSuccess( -// code: Int, -// result: Boolean?, -// message: String, -// ok: Boolean -// ) { -// dialog?.dismiss() -// result?.let { -// if (it) { -// //已填写问卷 -// mBinding?.ccdwvAnswer?.answerState(true) -// getRiskInfo() -// }else{ -// mBinding?.ccdwvAnswer?.answerState(false) -// } -// } -// } -// -// override fun onFail(code: Int, errMsg: String?) { -// dialog?.dismiss() -// showToast(errMsg) -// } -// -// }) -// } -// -// fun getRiskInfo(){ -// var getCvdHomeData = mApi.selectAngiocarpyPreventionWarningDOByUserId(mType.toString()) -// getCvdHomeData.enqueue(object : CallbackInterventionManager() { -// -// override fun onSuccess( -// code: Int, -// result: CvdRiskInfoBean?, -// message: String, -// ok: Boolean -// ) { -// dialog?.dismiss() -// mBinding?.ccdwvAnswer?.setRiskInfo(result) -// } -// -// override fun onFail(code: Int, errMsg: String?) { -// showToast(errMsg) -// } -// -// }) -// } - - private fun showHeartPicker() { val picker = DoubleWheelBPicker(requireActivity()) picker.setData(HeartRateProvider()) @@ -367,7 +323,7 @@ class MonitorFragment: BaseVMBFragment(R. picker.setFormatter(WheelFormatter { item -> "$item %" }) picker.setRange(75, 90, 5) picker.setDefaultValue(spo2DefaultMin) - picker.setTitle("血氧阈值") + picker.setTitle("血氧阈值(下限)") picker.okView.text = "保存并同步" picker.okView.setTextColor(Color.parseColor(COLOR_PICKER_OK)) picker.show() @@ -388,37 +344,12 @@ class MonitorFragment: BaseVMBFragment(R. picker.setFormatter(WheelFormatter { item -> "$item" }) picker.setRange(80, 99, 1) picker.setDefaultValue(StressDefaultMin) - picker.setTitle("压力阈值") + picker.setTitle("压力阈值(上限)") picker.okView.text = "保存并同步" picker.okView.setTextColor(Color.parseColor(COLOR_PICKER_OK)) picker.show() } - private fun getTitleTagList(): MutableList { - val titleList: MutableList = mutableListOf() - var titleTag = TitleTagBean() - titleTag.text = "防范心梗" - titleTag.isSelect = true - titleList.add(titleTag) - - titleTag = TitleTagBean() - titleTag.text = "吃动平衡" - titleTag.isSelect = false - titleList.add(titleTag) - - titleTag = TitleTagBean() - titleTag.text = "血管健康" - titleTag.isSelect = false - titleList.add(titleTag) - - titleTag = TitleTagBean() - titleTag.text = "防脑卒中" - titleTag.isSelect = false - titleList.add(titleTag) - - return titleList - } - // private fun resetTitleTagStatus(position: Int) { // titleTextAdapter.data // for ((index, item) in titleTextAdapter.data.withIndex()) { 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 469b8f7..3e65af3 100644 --- a/app/src/main/java/com/xjjk/healthyclients/fragment/UserInfoFragment.kt +++ b/app/src/main/java/com/xjjk/healthyclients/fragment/UserInfoFragment.kt @@ -1,4 +1,3 @@ - import android.os.Bundle import android.os.SystemClock import android.view.View @@ -22,6 +21,7 @@ import com.xjjk.healthyclients.superfuntion.startLoginActivity 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.viewmodel.UserInfoFragmentViewModel import com.xjjk.healthyclients.utils.ConstantUtils import kotlinx.coroutines.flow.collectLatest @@ -30,9 +30,10 @@ import kotlinx.coroutines.launch /** *我的fragment */ -class UserInfoFragment: BaseVMBFragment(R.layout.fragment_user_info){ - var mList= arrayListOf() - var mUserMenuAdapter : UserMenuAdapter?=null +class UserInfoFragment : + BaseVMBFragment(R.layout.fragment_user_info) { + var mList = arrayListOf() + var mUserMenuAdapter: UserMenuAdapter? = null var time: Long = 2000 var mCount = 5 @@ -41,6 +42,7 @@ class UserInfoFragment: BaseVMBFragment { - context?.let{ + context?.let { if (DataStoreManager.getToken().isNullOrEmpty()) { startLoginActivity(it) - }else{ - startConsultantManagerActivity(it,true) + } else { + startConsultantManagerActivity(it, true) } } } + 3 -> { context?.let { startEmergencySeekDoctorActivity(it) } } + 8 -> { + requireContext().startUserSoSContactsActivity() + } + + else -> {} } } @@ -173,7 +193,7 @@ class UserInfoFragment: BaseVMBFragment { context?.let { if (ConstantUtils.mCheckToken) { @@ -231,26 +251,29 @@ class UserInfoFragment: BaseVMBFragment { context?.let { - var token= DataStoreManager.getToken() + var token = DataStoreManager.getToken() if (token.isNotEmpty()) { startUserInfoSettingActivity(it) - }else{ + } else { startLoginActivity(it) } } } + R.id.user_tv_name -> { context?.let { - var token= DataStoreManager.getToken() + var token = DataStoreManager.getToken() if (token.isNotEmpty()) { - }else{ + } else { startLoginActivity(it) } } } + R.id.title_iv_right -> { context?.let { startUserSettingActivity(it) } } + R.id.tv_login_out -> { context?.let { startLoginActivity(it) diff --git a/app/src/main/java/com/xjjk/healthyclients/retrofit/UrlConfig.kt b/app/src/main/java/com/xjjk/healthyclients/retrofit/UrlConfig.kt index 98cc505..d50af7a 100644 --- a/app/src/main/java/com/xjjk/healthyclients/retrofit/UrlConfig.kt +++ b/app/src/main/java/com/xjjk/healthyclients/retrofit/UrlConfig.kt @@ -5,53 +5,52 @@ import com.xjjk.healthyclients.utils.UrlH5RouteUtils import okhttp3.HttpUrl.Companion.toHttpUrl object UrlConfig { -// private const val DEBUG_DEFAULT_IP_ADDRESS_REMOTE = "http://192.168.1.98/" // 开发环境 - private const val DEBUG_DEFAULT_IP_ADDRESS_REMOTE = "http://cqyt.dev.yg.dt.io/" // 开发环境 - private const val TEST_DEFAULT_IP_ADDRESS_REMOTE = "https://starry.test.icdat.cn/" // 测试环境 - private const val PRODUCT_DEFAULT_IP_ADDRESS_REMOTE = "https://health-api.tzgl.shuziweidao.com" -// private const val PRODUCT_DEFAULT_IP_ADDRESS_REMOTE = "http://192.168.1.98/" + private const val DEBUG_DEFAULT_IP_ADDRESS_REMOTE = "http://192.168.1.98/" // 开发环境 +// private const val DEBUG_DEFAULT_IP_ADDRESS_REMOTE = "http://cqyt.dev.yg.dt.io/" // 开发环境 +// private const val TEST_DEFAULT_IP_ADDRESS_REMOTE = "https://starry.test.icdat.cn/" // 测试环境 + private const val PRODUCT_DEFAULT_IP_ADDRESS_REMOTE = "https://xjgateway.mcrm.vip:8888" - private const val DEBUG_H5_ADDRESS_REMOTE = "http://cms.dev.yg.dt.io" // 开发环境 - private const val TEST_H5_ADDRESS_REMOTE = "https://starry.out.icdat.cn" // 测试环境 - private const val PRODUCT_H5_ADDRESS_REMOTE = "https://console.shuziweidao.com" +// private const val DEBUG_H5_ADDRESS_REMOTE = "http://cms.dev.yg.dt.io" // 开发环境 +// private const val TEST_H5_ADDRESS_REMOTE = "https://starry.out.icdat.cn" // 测试环境 + private const val PRODUCT_H5_ADDRESS_REMOTE = "https://xjconsole.mcrm.vip:8888" val baseUrlType: BaseUrlType = BaseUrlType.PRODUCT var testDeviceList = mutableListOf("7e8e7e49a26340b1","bb2d17cc138d109f")//测试设备列表 荣耀 oppo vivo var isTestDevice: Boolean = false - var isOpenIm: Boolean = false + var isOpenIm: Boolean = true enum class BaseUrlType(val type: Int) { DEBUG(1), - TEST(2), +// TEST(2), PRODUCT(3) } - private fun getBaseUrl(baseUrlType: BaseUrlType = BaseUrlType.DEBUG): String { + private fun getBaseUrl(baseUrlType: BaseUrlType = BaseUrlType.PRODUCT): String { return when (baseUrlType) { BaseUrlType.DEBUG -> { DEBUG_DEFAULT_IP_ADDRESS_REMOTE } - - BaseUrlType.TEST -> { - TEST_DEFAULT_IP_ADDRESS_REMOTE - } +// +// BaseUrlType.TEST -> { +// TEST_DEFAULT_IP_ADDRESS_REMOTE +// } BaseUrlType.PRODUCT -> { PRODUCT_DEFAULT_IP_ADDRESS_REMOTE } } } - fun getH5BaseUrl(baseUrlType: BaseUrlType = BaseUrlType.DEBUG): String { + fun getH5BaseUrl(baseUrlType: BaseUrlType = BaseUrlType.PRODUCT): String { return when (baseUrlType) { BaseUrlType.DEBUG -> { - DEBUG_H5_ADDRESS_REMOTE - } - - BaseUrlType.TEST -> { - TEST_H5_ADDRESS_REMOTE + PRODUCT_H5_ADDRESS_REMOTE } +// +// BaseUrlType.TEST -> { +// TEST_H5_ADDRESS_REMOTE +// } BaseUrlType.PRODUCT -> { PRODUCT_H5_ADDRESS_REMOTE @@ -119,16 +118,16 @@ object UrlConfig { /** * 获取健康干预-膳食 接口地址 */ - fun getInterventionFoodUrl():String { - return when (baseUrlType) { - BaseUrlType.DEBUG,BaseUrlType.TEST -> { - "https://vip.shuziweidao.com" - } - BaseUrlType.PRODUCT -> { - "https://yyjk.shuziweidao.com/" - } - } - } +// fun getInterventionFoodUrl():String { +// return when (baseUrlType) { +// BaseUrlType.DEBUG,BaseUrlType.TEST -> { +// "https://vip.shuziweidao.com" +// } +// BaseUrlType.PRODUCT -> { +// "https://yyjk.shuziweidao.com/" +// } +// } +// } /** * H5访问地址 diff --git a/app/src/main/java/com/xjjk/healthyclients/retrofit/interceptor/CustomSignInterceptor.kt b/app/src/main/java/com/xjjk/healthyclients/retrofit/interceptor/CustomSignInterceptor.kt index d6a60b1..318d6ce 100644 --- a/app/src/main/java/com/xjjk/healthyclients/retrofit/interceptor/CustomSignInterceptor.kt +++ b/app/src/main/java/com/xjjk/healthyclients/retrofit/interceptor/CustomSignInterceptor.kt @@ -43,71 +43,17 @@ import java.util.concurrent.TimeUnit * 版本: v1.0

*/ class CustomSignInterceptor : BaseCustomDynamicInterceptor() { - companion object { + companion object{ var marketId = 10029 const val BODY_NO_ENCODE = "bodyNoEncode" } - override fun dynamicHeader(builder: Request.Builder): Request.Builder { // builder.addHeader("Content-Type", "application/json") builder.addHeader("X-Access-Token", DataStoreManager.getToken()) +// builder.addHeader("X-ClientSign", "Quarry") return builder } - override fun intercept(chain: Interceptor.Chain): Response { - var requestTimeout = chain.connectTimeoutMillis() - //获取request - val request = chain.request() - //从request中获取原有的HttpUrl实例oldHttpUrl - val oldHttpUrl = request.url - //获取request的创建者builder - val builder = request.newBuilder() - println("动态修改超时时间--${requestTimeout}") - //读取新的动态超时时间 - val requestTimeoutNew = request.header("TIMEOUT") - if (!requestTimeoutNew.isNullOrEmpty()) { - requestTimeout = requestTimeoutNew.toFormatInt() - println("动态修改超时时间connectTimeout:${requestTimeout}") - } - - - //从request中获取headers,通过给定的键url_name - val headerValues = request.headers("urlType") - if (headerValues != null && headerValues.size > 0) { - //如果有这个header,先将配置的header删除,因此header仅用作app和okhttp之间使用 - builder.removeHeader("urlType") - //匹配获得新的BaseUrl - val headerValue = headerValues[0] - var newBaseUrl: HttpUrl? = null - newBaseUrl = if ("levelTwo" == headerValue) { - UrlConfig.getInterventionFoodUrl().toHttpUrlOrNull() - } else { - oldHttpUrl - } - //重建新的HttpUrl,修改需要修改的url部分 - val newFullUrl = oldHttpUrl - .newBuilder() - .scheme("https") //更换网络协议 - .host(newBaseUrl!!.host) //更换主机名 - .port(newBaseUrl!!.port) //更换端口 - .build() - //重建这个request,通过builder.url(newFullUrl).build(); - if (getInterventionToken() != null && !getInterventionToken().isEmpty()) { - builder.header("X-Access-Token", getInterventionToken()) - } - // 然后返回一个response至此结束修改 - return chain.withConnectTimeout(requestTimeout, TimeUnit.MILLISECONDS) - .withReadTimeout(requestTimeout, TimeUnit.MILLISECONDS) - .withWriteTimeout(requestTimeout, TimeUnit.MILLISECONDS) - .proceed(builder.url(newFullUrl).build()) - } - return super.intercept( - chain.withConnectTimeout(requestTimeout, TimeUnit.MILLISECONDS) - .withReadTimeout(requestTimeout, TimeUnit.MILLISECONDS) - .withWriteTimeout(requestTimeout, TimeUnit.MILLISECONDS) - ) - } - override fun dynamic(dynamicMap: TreeMap?): TreeMap { //dynamicMap:是原有的全局参数+局部参数 // dynamicMap?.set("marketId".asEncode(), marketId.toString()) //示例 @@ -116,22 +62,22 @@ class CustomSignInterceptor : BaseCustomDynamicInterceptor() { override fun dynamicJson(json: String?): String { var jsonObj: Any - jsonObj = if (TextUtils.isEmpty(json)) { + jsonObj = if(TextUtils.isEmpty(json)){ JsonObject() - } else { + }else{ JsonParser.parseString(json) } json?.let { Logger.d(it) } - return if (jsonObj is JsonObject) { + return if(jsonObj is JsonObject){ // jsonObj.addProperty("marketId".asEncode(), marketId) //示例 - if (jsonObj.has(BODY_NO_ENCODE)) { + if(jsonObj.has(BODY_NO_ENCODE)){ jsonObj.remove(BODY_NO_ENCODE) encrypt(jsonObj.toJson(), false) - } else { + }else{ jsonObj.remove(BODY_NO_ENCODE) encrypt(jsonObj.toJson(), true) } - } else { + }else{ json!! } } diff --git a/app/src/main/java/com/xjjk/healthyclients/retrofit/interceptor/LoggingInterceptor2.java b/app/src/main/java/com/xjjk/healthyclients/retrofit/interceptor/LoggingInterceptor2.java index 8d030fc..abb3105 100644 --- a/app/src/main/java/com/xjjk/healthyclients/retrofit/interceptor/LoggingInterceptor2.java +++ b/app/src/main/java/com/xjjk/healthyclients/retrofit/interceptor/LoggingInterceptor2.java @@ -57,6 +57,7 @@ public class LoggingInterceptor2 implements Interceptor { if (DataStoreManager.INSTANCE.getToken()!=null&&!DataStoreManager.INSTANCE.getToken().isEmpty() ) { requestBuilder.header("X-Access-Token", DataStoreManager.INSTANCE.getToken()); } +// requestBuilder.header("X-ClientSign", "Quarry"); // requestBuilder.header("Platform", ConstantUtils.mPlatform); // requestBuilder.header("VersionName", BuildConfig.VERSION_NAME); // requestBuilder.header("VersionCode", BuildConfig.VERSION_CODE+""); diff --git a/app/src/main/java/com/xjjk/healthyclients/retrofit/intervention/InterventionRetrofitHelper.kt b/app/src/main/java/com/xjjk/healthyclients/retrofit/intervention/InterventionRetrofitHelper.kt index 68da559..577920b 100644 --- a/app/src/main/java/com/xjjk/healthyclients/retrofit/intervention/InterventionRetrofitHelper.kt +++ b/app/src/main/java/com/xjjk/healthyclients/retrofit/intervention/InterventionRetrofitHelper.kt @@ -1,16 +1,7 @@ -package com.bihu.myapplication.retrofit +package com.xjjk.healthyclients.retrofit.intervention import com.xjjk.healthyclients.retrofit.RetrofitManager -import com.xjjk.healthyclients.retrofit.interceptor.LoggingInterceptor2 -import com.xjjk.healthyclients.retrofit.UrlConfig.getDefaultBaseUrl -import com.xjjk.healthyclients.retrofit.UrlConfig.getInterventionFoodUrl -import com.xjjk.healthyclients.retrofit.gson.GsonConverterFactoryNew -import com.xjjk.healthyclients.retrofit.intervention.TokenHeaderInterceptor -import com.xjjk.healthyclients.utils.ApiDns -import okhttp3.OkHttpClient import retrofit2.Retrofit -import retrofit2.converter.gson.GsonConverterFactory -import java.util.concurrent.TimeUnit fun getInterventionRetrofit(): Retrofit { // val builder = OkHttpClient.Builder() diff --git a/app/src/main/java/com/xjjk/healthyclients/retrofit/intervention/TokenHeaderInterceptor.java b/app/src/main/java/com/xjjk/healthyclients/retrofit/intervention/TokenHeaderInterceptor.java index acb4399..f992b9e 100644 --- a/app/src/main/java/com/xjjk/healthyclients/retrofit/intervention/TokenHeaderInterceptor.java +++ b/app/src/main/java/com/xjjk/healthyclients/retrofit/intervention/TokenHeaderInterceptor.java @@ -53,6 +53,8 @@ public class TokenHeaderInterceptor implements Interceptor { if (DataStoreManager.INSTANCE.getInterventionToken()!=null&&!DataStoreManager.INSTANCE.getInterventionToken().isEmpty() ) { requestBuilder.header("X-Access-Token", DataStoreManager.INSTANCE.getInterventionToken()); } +// requestBuilder.header("X-ClientSign", "Quarry"); + // requestBuilder.header("Platform", ConstantUtils.mPlatform); // requestBuilder.header("VersionName", BuildConfig.VERSION_NAME); // requestBuilder.header("VersionCode", BuildConfig.VERSION_CODE+""); diff --git a/app/src/main/java/com/xjjk/healthyclients/superfuntion/BindingViewExt.kt b/app/src/main/java/com/xjjk/healthyclients/superfuntion/BindingViewExt.kt index a14d2c4..124b013 100644 --- a/app/src/main/java/com/xjjk/healthyclients/superfuntion/BindingViewExt.kt +++ b/app/src/main/java/com/xjjk/healthyclients/superfuntion/BindingViewExt.kt @@ -3,6 +3,7 @@ package com.xjjk.healthyclients.superfuntion import android.widget.ImageView import androidx.databinding.BindingAdapter import com.allen.library.SuperTextView +import com.xjjk.healthyclients.R /** * DataBinding的自定义属性 @@ -19,7 +20,7 @@ fun ImageView.setImageUrl(url: String) { */ @BindingAdapter("circleImageUrl") fun ImageView.setCircleImageUrl(url: String?) { - loadCircle(url) + loadCircle(url,R.drawable.ic_default_doctor_head_img) } @BindingAdapter("sLeftTextString") fun SuperTextView.setLeftTextString(text: CharSequence) { diff --git a/app/src/main/java/com/xjjk/healthyclients/superfuntion/SeekDoctorSearchActivityFuntion.kt b/app/src/main/java/com/xjjk/healthyclients/superfuntion/SeekDoctorSearchActivityFuntion.kt deleted file mode 100644 index 3eea714..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/superfuntion/SeekDoctorSearchActivityFuntion.kt +++ /dev/null @@ -1,88 +0,0 @@ -package com.xjjk.healthyclients.superfuntion - -import android.os.Build -import android.view.View -import android.view.View.OnLongClickListener -import androidx.annotation.RequiresApi -import com.google.android.material.tabs.TabLayout -import com.xjjk.healthyclients.ui.activity.guidance.SeekDoctorSearchActivity - -fun SeekDoctorSearchActivity.getTab(name: String): TabLayout.Tab { - var newTab = mBinding.seekDoctorSearchTab.newTab() - newTab.view.setOnLongClickListener(object : OnLongClickListener { - override fun onLongClick(v: View?): Boolean { - return true - } - }) - newTab.setText(name) - return newTab -} - - -/** - * 切换tab刷新相关操作 - * //0 综合 1专家 2医院 3疾病 4科室 - * 切换 - */ -fun SeekDoctorSearchActivity.switchTabRefresh(position: Int) { - mBinding?.apply { - when (position) { - 0 -> { - seekDoctorDepartmentListRoot.visibility = View.VISIBLE - seekDoctorDoctorListRoot.visibility = View.VISIBLE - seekDoctorHospitalListRoot.visibility = View.VISIBLE - seekDoctorDiseaseListRoot.visibility = View.VISIBLE - - rlDoctor.visibility=View.GONE - rlHospital.visibility=View.GONE - rlDisease.visibility=View.GONE - rlDepartment.visibility=View.GONE - } - 1 -> { - seekDoctorDoctorListRoot.visibility = View.VISIBLE - seekDoctorDepartmentListRoot.visibility = View.GONE - seekDoctorHospitalListRoot.visibility = View.GONE - seekDoctorDiseaseListRoot.visibility = View.GONE - - rlDoctor.visibility=View.GONE - rlHospital.visibility=View.GONE - rlDisease.visibility=View.GONE - rlDepartment.visibility=View.GONE - } - 2 -> { - seekDoctorHospitalListRoot.visibility = View.VISIBLE - seekDoctorDoctorListRoot.visibility = View.GONE - seekDoctorDepartmentListRoot.visibility = View.GONE - seekDoctorDiseaseListRoot.visibility = View.GONE - - rlDoctor.visibility=View.GONE - rlHospital.visibility=View.GONE - rlDisease.visibility=View.GONE - rlDepartment.visibility=View.GONE - } - 3 -> { - seekDoctorHospitalListRoot.visibility = View.GONE - seekDoctorDoctorListRoot.visibility = View.GONE - seekDoctorDepartmentListRoot.visibility = View.GONE - seekDoctorDiseaseListRoot.visibility = View.VISIBLE - - rlDoctor.visibility=View.GONE - rlHospital.visibility=View.GONE - rlDisease.visibility=View.GONE - rlDepartment.visibility=View.GONE - } - 4 -> { - seekDoctorHospitalListRoot.visibility = View.GONE - seekDoctorDoctorListRoot.visibility = View.GONE - seekDoctorDepartmentListRoot.visibility = View.VISIBLE - seekDoctorDiseaseListRoot.visibility = View.GONE - - rlDoctor.visibility=View.GONE - rlHospital.visibility=View.GONE - rlDisease.visibility=View.GONE - rlDepartment.visibility=View.GONE - } - } - } - -} diff --git a/app/src/main/java/com/xjjk/healthyclients/superfuntion/StartActivityManager.kt b/app/src/main/java/com/xjjk/healthyclients/superfuntion/StartActivityManager.kt index 1b3985d..57849b9 100644 --- a/app/src/main/java/com/xjjk/healthyclients/superfuntion/StartActivityManager.kt +++ b/app/src/main/java/com/xjjk/healthyclients/superfuntion/StartActivityManager.kt @@ -6,16 +6,19 @@ import android.net.Uri import android.os.Bundle import androidx.core.view.ContentInfoCompat import com.xjjk.healthyclients.bean.guidance.ConsultantBean +import com.xjjk.healthyclients.bean.user.SelectEmergencyContactListBean import com.xjjk.healthyclients.ui.activity.ChangePassWordActivity +import com.xjjk.healthyclients.ui.activity.EmergencyContactActivity import com.xjjk.healthyclients.ui.activity.FullScreenImageActivity import com.xjjk.healthyclients.ui.activity.LoginActivity import com.xjjk.healthyclients.ui.activity.RetrievePassWordActivity import com.xjjk.healthyclients.ui.activity.UserInfoSettingActivity import com.xjjk.healthyclients.ui.activity.UserSettingActivity +import com.xjjk.healthyclients.ui.activity.UserSoSContactsActivity import com.xjjk.healthyclients.ui.activity.WebActivity -import com.xjjk.healthyclients.ui.activity.emergency.AddBigDiseaseActivity import com.xjjk.healthyclients.ui.activity.emergency.EmergencySeekDoctorActivity import com.xjjk.healthyclients.ui.activity.emergency.EmergencySeekDoctorDetailsActivity +import com.xjjk.healthyclients.ui.activity.guidance.AllDoctorActivity import com.xjjk.healthyclients.ui.activity.guidance.AppointmentDetailActivity import com.xjjk.healthyclients.ui.activity.guidance.ArchivesDetailActivity import com.xjjk.healthyclients.ui.activity.guidance.BaseHealthyInfoAddActivity @@ -24,7 +27,6 @@ import com.xjjk.healthyclients.ui.activity.guidance.ConsultantManagerActivity import com.xjjk.healthyclients.ui.activity.guidance.DoctorAllAppraiseActivity import com.xjjk.healthyclients.ui.activity.guidance.DoctorHomepageActivity import com.xjjk.healthyclients.ui.activity.guidance.EditConsultantActivity -import com.xjjk.healthyclients.ui.activity.guidance.FilterSearchDoctorActivity import com.xjjk.healthyclients.ui.activity.guidance.GeneralPracticeGuidanceActivity import com.xjjk.healthyclients.ui.activity.guidance.GuidanceNoticeActivity import com.xjjk.healthyclients.ui.activity.guidance.MyGuidanceActivity @@ -297,10 +299,10 @@ fun startEditConsultantActivity(context: Context, consultantBean: ConsultantBean /** * 带筛选框的找专家 */ -fun startFilterSearchDoctorActivity(context: Context, value: String = "", bundle: Bundle) { - bundle.putString("search", value) - startActivity(context, bundle = bundle, targetClass = FilterSearchDoctorActivity::class.java) -} +//fun startFilterSearchDoctorActivity(context: Context, value: String = "", bundle: Bundle) { +// bundle.putString("search", value) +// startActivity(context, bundle = bundle, targetClass = FilterSearchDoctorActivity::class.java) +//} ///** // * 专家库咨询 // */ @@ -456,15 +458,15 @@ fun startLoginActivity(context: Context) { fun startUserInfoSettingActivity(context: Context) { startActivity(context, targetClass = UserInfoSettingActivity::class.java) } -// -///** -// * 紧急联系人 -// */ -//fun startEmergencyContactActivity(context: Context, bean: SelectEmergencyContactListBean?) { -// val bundle = Bundle() -// bundle.putSerializable("peopleInfo", bean) -// startActivity(context, bundle = bundle, targetClass = EmergencyContactActivity::class.java) -//} + +/** + * 紧急联系人 + */ +fun startEmergencyContactActivity(context: Context, bean: SelectEmergencyContactListBean?) { + val bundle = Bundle() + bundle.putSerializable("peopleInfo", bean) + startActivity(context, bundle = bundle, targetClass = EmergencyContactActivity::class.java) +} /** * 档案大图查看 @@ -580,9 +582,9 @@ fun startBaseHealthyInfoAddActivity(context: Context, memberId: String?) { /** * 新增大病就医 */ -fun startAddBigDiseaseActivity(context: Context) { - startActivity(context, targetClass = AddBigDiseaseActivity::class.java) -} +//fun startAddBigDiseaseActivity(context: Context) { +// startActivity(context, targetClass = AddBigDiseaseActivity::class.java) +//} /** * 大病就医详情 @@ -1343,13 +1345,22 @@ fun startMyGuidanceActivity(context: Context, value: String) { // val bundle = Bundle() // startActivity(this,bundle=bundle, targetClass = MotionStatActivity::class.java) //} -///** -// * 运动报表 -// */ -//fun Context.startUserSoSContactsActivity() { -// val bundle = Bundle() -// startActivity(this,bundle=bundle, targetClass = UserSoSContactsActivity::class.java) -//} +/** + * 紧急联系人 + */ +fun Context.startUserSoSContactsActivity() { + val bundle = Bundle() + startActivity(this,bundle=bundle, targetClass = UserSoSContactsActivity::class.java) +} + +/** + * 全科医生 + */ +fun Context.startAllDoctorActivity(id:String) { + val bundle = Bundle() + bundle.putString("id", id) + startActivity(this,bundle=bundle,targetClass = AllDoctorActivity::class.java) +} ///** // * 我的收藏与我的点赞 // */ diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/EmergencyContactActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/EmergencyContactActivity.kt new file mode 100644 index 0000000..198ef2f --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/EmergencyContactActivity.kt @@ -0,0 +1,165 @@ +package com.xjjk.healthyclients.ui.activity + +import android.os.Bundle +import android.view.View +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import com.github.gzuliyujiang.wheelpicker.OptionPicker +import com.luck.picture.lib.utils.ToastUtils.showToast +import com.xjjk.healthyclients.R +import com.xjjk.healthyclients.base.BaseVMBActivity +import com.xjjk.healthyclients.bean.CommonSettingMenuBean +import com.xjjk.healthyclients.bean.user.SelectEmergencyContactListBean +import com.xjjk.healthyclients.databinding.ActivityUserEmergencyContactBinding +import com.xjjk.healthyclients.ui.viewmodel.UserInfoFragmentViewModel +import com.xjjk.healthyclients.ui.viewmodel.UserInfoSettingViewModel +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch +import org.antlr.v4.runtime.misc.MurmurHash.finish + +/** + * 紧急联系人 + */ +class EmergencyContactActivity : + BaseVMBActivity(R.layout.activity_user_emergency_contact) { + var mBean: SelectEmergencyContactListBean? = null + val relationPicker: OptionPicker by lazy { OptionPicker(this) } + + override fun initView(savedInstanceState: Bundle?) { + mBinding?.apply { + } + + } + + override fun transparentStatusBar(): Boolean { + return false + } + + override fun initData() { + try { + mBean = intent.getSerializableExtra("peopleInfo") as SelectEmergencyContactListBean? + if (mBean != null) { + mBinding?.apply { + emergencyContactName.setText(mBean!!.name) + emergencyContactPhone.setText(mBean!!.phone) + emergencyContactIdcard.setText(mBean!!.idCard) + emergencyContactRelation.setText(mBean!!.familyRelation_dictText) + emergencyContactDel?.visibility=View.VISIBLE + } + }else{ + mBinding?.emergencyContactDel?.visibility=View.GONE + } + } catch (e: Exception) { + + } + mViewModel.getRelationList() + + } + + override fun createObserve() { + super.createObserve() + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.relationList.collectLatest { + if (it.isNullOrEmpty()) { + return@collectLatest + } + relationPicker.setData(it) + if (mBean == null) { + setRelationText(it[0]) + } else { + it.forEach { commonSettingMenuBean -> + if (mBean!!.familyRelation == commonSettingMenuBean.text + || mBean!!.familyRelation == commonSettingMenuBean.value + ) { + setRelationText(commonSettingMenuBean) + } + } + } + + + } + } + } + + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.upState.collectLatest { + if (it){ + finish() + } + } + } + } + + } + + private fun setRelationText(commonSettingMenuBean: CommonSettingMenuBean) { + mBinding.emergencyContactRelation.text = commonSettingMenuBean.text + if (mBean==null) { + mBean= SelectEmergencyContactListBean() + } + mBean?.familyRelation = commonSettingMenuBean.value + mBean?.familyRelation_dictText = commonSettingMenuBean.text + } + + private fun showRelationPicker() { + relationPicker.setBackgroundResource(R.drawable.rectangle_top_round_corner20_white) + relationPicker.setTitle(R.string.edit_consultant_relation_title) + relationPicker.setDefaultPosition(0) + relationPicker.wheelView.setFormatter { value -> + (value as CommonSettingMenuBean).text + } + relationPicker.setOnOptionPickedListener { position, item -> + setRelationText(item as CommonSettingMenuBean) + + } + relationPicker.show() + } + + + override fun bindEvent() { + mBinding?.apply { + addClickViews(emergencyContactRelation, emergencyContactDel, emergencyContactSave) + } + } + + override fun processClick(paramView: View?) { + when (paramView?.id) { + R.id.emergency_contact_relation -> { + showRelationPicker() + } + R.id.emergency_contact_del -> { + mBean?.let { mViewModel.removeEmergencyContactList(it.id) } + } + R.id.emergency_contact_save -> { + var name=mBinding.emergencyContactName.text.toString().trim() + if (name.length==0) { + showToast("请输入姓名") + return + } + var phone=mBinding.emergencyContactPhone.text.toString().trim() + if (phone.length==0) { + showToast("请输入手机号") + return + } + var idcard=mBinding.emergencyContactIdcard.text.toString().trim() + if (idcard.length==0) { + showToast("请输入身份证号") + return + } + var relation=mBinding.emergencyContactRelation.text.toString().trim() + if (relation.length==0) { + showToast("请选择关系") + return + } + mBean!!.name=name + mBean!!.phone=phone + mBean!!.idCard=idcard + mBean!!.familyRelation_dictText=relation + mViewModel.updateAndInsertEmergencyContact(mBean!!) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/InterventionWebActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/InterventionWebActivity.kt index 76648bc..adfb97c 100644 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/InterventionWebActivity.kt +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/InterventionWebActivity.kt @@ -2,18 +2,17 @@ package com.xjjk.healthyclients.ui.activity import android.graphics.Bitmap import android.os.Bundle +import android.text.TextUtils import android.view.View import android.webkit.WebChromeClient import android.webkit.WebView import android.webkit.WebViewClient -import com.bihu.myapplication.retrofit.getInterventionRetrofit import com.sw.healthyclients.data.local.DataStoreManager import com.sw.healthyclients.utils.DateUtil import com.sw.healthyclients.utils.DateUtil.getEndDateOfMonth import com.xjjk.healthyclients.R import com.xjjk.healthyclients.base.BaseVMBActivity import com.xjjk.healthyclients.base.viewmodel.TestViewModel -import com.xjjk.healthyclients.data.api.InterventionNetApi import com.xjjk.healthyclients.databinding.ActivityInterventionWebBinding import com.xjjk.healthyclients.retrofit.UrlConfig import com.xjjk.healthyclients.retrofit.UrlConfig.getDefaultBaseUrl @@ -25,7 +24,6 @@ import java.util.Locale class InterventionWebActivity() : BaseVMBActivity(R.layout.activity_intervention_web) { - var mApi = getInterventionRetrofit().create(InterventionNetApi::class.java) private var isShowLoading = false @@ -62,6 +60,8 @@ class InterventionWebActivity() : var mUserId = DataStoreManager.getUserId().toString() // mUserId = "09fd6195cd4c4f1fb457f34678fa0011" var path = intent.getStringExtra("path") + val titleText = getTitleText(path) + mBinding.toolbarLay.title = titleText if (mToken.isNullOrEmpty()) { mToken = DataStoreManager.getToken() } @@ -82,6 +82,9 @@ class InterventionWebActivity() : localAdress = "${localAdress}p=$path&r=${url}&t=${mToken}&id=${mUserId}" var date = intent.getStringExtra("date") + if (TextUtils.isEmpty(date)) { + date = DateUtil.nowStringDateShort + } when (path) { "weekly" -> { mBinding.weeklyLayout.visibility = View.VISIBLE @@ -108,6 +111,19 @@ class InterventionWebActivity() : mBinding.webView.loadUrl("$localAdress&d=${date}&h=${urlType}") } + private fun getTitleText(path: String?): String { + return when (path) { + "heartRate" -> "心率" + "oxygenSaturation" -> "血氧饱和度" + "pressure" -> "压力" + "temperature" -> "体温" + "stepNumber" -> "步数" + "sleep" -> "睡眠" + else -> "健康监测" + } + + } + override fun bindEvent() { mBinding.let { addClickViews( diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/SelectLocationActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/SelectLocationActivity.kt new file mode 100644 index 0000000..9039b69 --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/SelectLocationActivity.kt @@ -0,0 +1,153 @@ +package com.xjjk.healthyclients.ui.activity + +import android.Manifest +import android.content.Intent +import android.graphics.BitmapFactory +import android.os.Bundle +import android.provider.SyncStateContract +import android.view.View +import com.amap.api.location.AMapLocationClient +import com.amap.api.maps.AMap +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.MyLocationStyle +import com.google.gson.Gson +import com.permissionx.guolindev.PermissionX +import com.tencent.qcloud.tuicore.util.ToastUtil +import com.tencent.qcloud.tuikit.tuichat.bean.message.LocationMessageBean +import com.tencent.qcloud.tuikit.tuichat.classicui.setting.ChatLayoutSetting +import com.xjjk.healthyclients.R +import com.xjjk.healthyclients.base.BaseVMBActivity +import com.xjjk.healthyclients.base.viewmodel.TestViewModel +import com.xjjk.healthyclients.databinding.ActivitySelectLocationBinding +import com.xjjk.healthyclients.superfuntion.toJson +import org.greenrobot.eventbus.EventBus + + +/** + * @author nanfeifei + * @time 2023/7/4 10:38 + * @description 选择位置(IM发送位置使用) + */ +class SelectLocationActivity : BaseVMBActivity( + R.layout.activity_select_location) { + //初始化地图控制器对象 + var aMap: AMap? = null + var mCurrentLat: Double = 0.0 + var mCurrentLon: Double = 0.0 + var mPermissionList= arrayListOf( + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION) + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + mBinding.mapView.onSaveInstanceState(outState) + + } + + override fun onCreate(savedInstanceState: Bundle?) { + AMapLocationClient.updatePrivacyShow(this@SelectLocationActivity, true, true) + AMapLocationClient.updatePrivacyAgree(this@SelectLocationActivity, true) + super.onCreate(savedInstanceState) + } + override fun initView(savedInstanceState: Bundle?) { + mBinding.apply { + mapView.onCreate(savedInstanceState) + if (aMap == null) { + aMap = mapView.map + } + PermissionX.init(this@SelectLocationActivity) + .permissions(mPermissionList) + .request { allGranted, grantedList, deniedList -> + if (allGranted){ + setUpMap() + } + } + } + } + + override fun initData() { + + } + private fun setUpMap() { + // 自定义系统定位小蓝点 + val myLocationStyle = MyLocationStyle() + // 设置小蓝点的图 + myLocationStyle.myLocationIcon( + BitmapDescriptorFactory + .fromResource(R.mipmap.ic_my_location) + ) + myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW) + mBinding.apply { + aMap?.myLocationStyle = myLocationStyle + aMap?.moveCamera(CameraUpdateFactory.zoomTo(13F)) + aMap?.uiSettings?.isMyLocationButtonEnabled = true // 设置默认定位按钮是否显示 + aMap?.uiSettings?.isRotateGesturesEnabled = false + aMap?.uiSettings?.isTiltGesturesEnabled = false + aMap?.isMyLocationEnabled = true // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false + aMap?.setOnMyLocationChangeListener { + mCurrentLat = it.latitude + mCurrentLon = it.longitude + val markerOption = MarkerOptions() + markerOption.position(LatLng(mCurrentLat, mCurrentLon)) + aMap?.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mCurrentLat, mCurrentLon))) + markerOption.icon( + BitmapDescriptorFactory.fromBitmap( + BitmapFactory + .decodeResource(resources, R.drawable.ic_select_location) + ) + ) + markerOption.isFlat = true + var marker = aMap?.addMarker(markerOption) + aMap?.setOnCameraChangeListener(object : AMap.OnCameraChangeListener { + override fun onCameraChange(cameraPosition: CameraPosition?) { + if (cameraPosition != null) { + marker?.position = cameraPosition.target + mCurrentLat = cameraPosition.target.latitude + mCurrentLon = cameraPosition.target.longitude + } + } + + override fun onCameraChangeFinish(p0: CameraPosition?) { + + } + }) + } + } + + } + override fun onResume() { + super.onResume() + mBinding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + mBinding.mapView.onPause() + } + + override fun onDestroy() { + super.onDestroy() + mBinding.mapView.onDestroy() + } + override fun bindEvent() { + addClickViews(mBinding.toolbarLay.titleTvRight) + } + + override fun processClick(paramView: View?) { + when (paramView?.id) { + R.id.title_tv_right -> { + var intent = Intent() + var locationMessageBean = LocationMessageBean() + locationMessageBean.longitude = mCurrentLon + locationMessageBean.latitude = mCurrentLat + intent.putExtra(ChatLayoutSetting.KEY_CUSTOM_MESSAGE, locationMessageBean.toJson()) + setResult(ChatLayoutSetting.RESULT_CODE_LOCATION, intent) + finish() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/UserSoSContactsActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/UserSoSContactsActivity.kt new file mode 100644 index 0000000..5cce1b9 --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/UserSoSContactsActivity.kt @@ -0,0 +1,103 @@ +package com.xjjk.healthyclients.ui.activity + +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 com.xjjk.healthyclients.R +import com.xjjk.healthyclients.adapter.common.MultiItemTypeAdapter +import com.xjjk.healthyclients.adapter.user.UserContactsAdapter +import com.xjjk.healthyclients.base.BaseVMBActivity +import com.xjjk.healthyclients.bean.user.SelectEmergencyContactListBean +import com.xjjk.healthyclients.databinding.ActivityUserSosContactsBinding +import com.xjjk.healthyclients.superfuntion.startEmergencyContactActivity +import com.xjjk.healthyclients.ui.viewmodel.UserInfoSettingViewModel +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch + +/** + * 紧急联系人 + */ +class UserSoSContactsActivity : + BaseVMBActivity(R.layout.activity_user_sos_contacts), + MultiItemTypeAdapter.OnItemClickListener { + + var mUserContactsAdapter: UserContactsAdapter?=null + var mContactsList= arrayListOf() + + override fun initView(savedInstanceState: Bundle?) { + mBinding?.apply { + try { + mUserContactsAdapter= UserContactsAdapter(mContext, + R.layout.item_user_contacts,mContactsList) + var manager= LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL,false) + userInfoContactsRv.layoutManager=manager + mUserContactsAdapter?.setOnItemClickListener(this@UserSoSContactsActivity) + userInfoContactsRv.adapter=mUserContactsAdapter + + } catch (e: Exception) { + } + } + + + } + + override fun transparentStatusBar(): Boolean { + return false + } + + override fun initData() { + + + + + } + + override fun onResume() { + super.onResume() + mViewModel.selectEmergencyContactList() + } + + override fun createObserve() { + super.createObserve() + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.bean.collectLatest { + mContactsList.clear() + mContactsList.addAll(it) + mUserContactsAdapter?.notifyDataSetChanged() + } + } + } + } + + override fun bindEvent() { + mBinding?.apply { + addClickViews(toolbarLay.titleTvRight) + } + + } + + override fun processClick(paramView: View?) { + when (paramView?.id) { + R.id.title_tv_right -> { + mContext?.let { startEmergencyContactActivity(it,null) } + } + } + } + + override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { + mContext?.let { startEmergencyContactActivity(it,mContactsList[position]) } + } + + override fun onItemLongClick( + view: View?, + holder: RecyclerView.ViewHolder?, + position: Int + ): Boolean { + return false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/emergency/AddBigDiseaseActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/emergency/AddBigDiseaseActivity.kt deleted file mode 100644 index eae6e79..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/emergency/AddBigDiseaseActivity.kt +++ /dev/null @@ -1,234 +0,0 @@ -package com.xjjk.healthyclients.ui.activity.emergency - -import android.os.Bundle -import android.view.View -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.lifecycleScope -import androidx.lifecycle.repeatOnLifecycle -import com.github.gzuliyujiang.wheelpicker.DatePicker -import com.github.gzuliyujiang.wheelpicker.OptionPicker -import com.github.gzuliyujiang.wheelpicker.TimePicker -import com.github.gzuliyujiang.wheelpicker.annotation.DateMode -import com.github.gzuliyujiang.wheelpicker.annotation.TimeMode -import com.github.gzuliyujiang.wheelpicker.entity.DateEntity -import com.sw.healthyclients.data.local.DataStoreManager -import com.sw.healthyclients.utils.DateUtil -import com.xjjk.healthyclients.R -import com.xjjk.healthyclients.base.BaseVMBActivity -import com.xjjk.healthyclients.bean.CommonSettingMenuBean -import com.xjjk.healthyclients.bean.emergency.AddBigDiseaseSubmitBean -import com.xjjk.healthyclients.bean.emergency.HospitalBean -import com.xjjk.healthyclients.databinding.ActivityBigAddDiseaseBinding -import com.xjjk.healthyclients.ui.viewmodel.AddBigDiseaseViewModel -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.launch - -/** - * 大病就医 - */ -class AddBigDiseaseActivity : BaseVMBActivity(R.layout.activity_big_add_disease){ - val hospitalPicker: OptionPicker by lazy { OptionPicker(this) } - val registerTypePicker: OptionPicker by lazy { OptionPicker(this) } - val timePicker: DatePicker by lazy { DatePicker(this) } - val timePicker2: TimePicker by lazy { TimePicker(this) } - lateinit var currentDate: DateEntity - var mHospitalList= arrayListOf() - var mRegisterType= arrayListOf() - var mbean= AddBigDiseaseSubmitBean() - - - override fun initView(savedInstanceState: Bundle?) { - mBinding?.apply { - addDiseaseTime.text="${DateUtil.nowYear}-${DateUtil.nowMonth}-${DateUtil.nowDay}" - addDiseaseTime2.text="${DateUtil.nowHour}:${DateUtil.nowMinute}" - } - - } - - override fun initData() { - var defaultDate = DateEntity.yearOnFuture(0) - var name= DataStoreManager.getUserInfo().realname - if (name.isNullOrEmpty()) { - name= DataStoreManager.getUserInfo().username.toString() - } - mBinding?.addDiseaseName?.text=name - currentDate = DateEntity.target(defaultDate.year, defaultDate.month, defaultDate.day) - mViewModel.selectStationHospitalList() - mViewModel.getCommonSettingMenuList() - } - - override fun createObserve() { - super.createObserve() - mBinding?.apply { - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.messageList.collectLatest {list -> - mHospitalList.clear() - mHospitalList.addAll(list) - hospitalPicker.setData(mHospitalList) - } - } - } - - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.registerType.collectLatest {list -> - mRegisterType.clear() - mRegisterType.addAll(list) - registerTypePicker.setData(mRegisterType) - } - } - } - - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.isSubmit.collectLatest {isClose -> - if (isClose){ - finish() - } - } - } - } - } - - } - - - - - override fun bindEvent() { - mBinding?.apply { - addClickViews(addDiseaseSelectHospital,addDiseaseTime,addDiseaseRegisterType,bigDiseaseSubmit,addDiseaseTime2) - } - } - - override fun processClick(paramView: View?) { - when (paramView?.id) { - R.id.add_disease_select_hospital -> { - showHospitalPicker() - } - R.id.add_disease_time -> { - showDatePicker() - } - R.id.add_disease_time_2 -> { - showDatePicker2() - } - R.id.add_disease_register_type -> { - showRegisterTypePicker() - } - R.id.big_disease_submit -> { - mBinding?.apply { - if(addDiseaseSelectHospital.text.toString().trim().isEmpty()){ - showToast("请选择医院") - return - } - if(addDiseaseRegisterType.text.toString().trim().isEmpty()){ - showToast("请选择挂号类型") - return - } - if(addDiseaseTime.text.toString().trim().isEmpty()){ - showToast("请选择预约时间") - return - } - var time=addDiseaseTime.text.toString()+" "+addDiseaseTime2.text.toString() - var date= DateUtil.strToDateLong2(time) - mbean.desireTime = date.time - mbean.hospitalName=addDiseaseSelectHospital.text.toString().trim() - mbean.medicalCardNo=addDiseaseRegisterIdCard.text.toString().trim() - mbean.reservationOffice=addDiseaseDeparment.text.toString().trim() - mbean.reservationDoctor=addDiseaseDoctorName.text.toString().trim() - mbean.diseaseDescribe=addDiseaseSick.text.toString().trim() - mViewModel.appointmentSeeDoctor(mbean) - } - - } - } - } - - private fun showDatePicker() { - timePicker.setBackgroundResource(R.drawable.rectangle_top_round_corner20_white) - timePicker.setTitle("选择预约时间") -// (picker.headerView as TextView).gravity = Gravity.START - var wheelLayout = timePicker.wheelLayout - wheelLayout.setDateMode(DateMode.YEAR_MONTH_DAY) - wheelLayout.setRange(DateEntity.target(currentDate.year, 1, 1), DateEntity.target(currentDate.year+10, 1, 1), currentDate) - wheelLayout.setResetWhenLinkage(false) - timePicker.setOnDatePickedListener { year, month, day -> - setBirthDay(year, month, day) - } - timePicker.show() - } - private fun showDatePicker2() { - timePicker2.setBackgroundResource(R.drawable.rectangle_top_round_corner20_white) - timePicker2.setTitle("选择预约时间") -// (picker.headerView as TextView).gravity = Gravity.START - var wheelLayout = timePicker2.wheelLayout - wheelLayout.setTimeMode(TimeMode.HOUR_24_NO_SECOND) - wheelLayout.setResetWhenLinkage(false) - timePicker2.setOnTimePickedListener { hour, minute, day -> - mBinding?.apply { - var m="$minute" - if(minute<10){ - m="0$minute" - } - addDiseaseTime2.text="${hour}:${m}" - } -// setBirthDay(year, month, day) - } - timePicker2.show() - } - - private fun setBirthDay(year: Int, month: Int, day: Int) { - currentDate = DateEntity.target(year, month, day) - mBinding.addDiseaseTime.text = currentDate.toString() - mBinding.addDiseaseTime.setTextColor(mContext!!.resources.getColor(R.color.text_black_33)) - } - - private fun showHospitalPicker() { - if(mHospitalList.size==0){ - showToast("暂无可选择医院数据") - return - } - hospitalPicker.setBackgroundResource(R.drawable.rectangle_top_round_corner20_white) - hospitalPicker.setTitle("选择预约医院") - hospitalPicker.setDefaultPosition(0) - hospitalPicker.wheelView.setFormatter { value -> - (value as HospitalBean).name - } - hospitalPicker.setOnOptionPickedListener { position, item -> - setHospitalText(item as HospitalBean) - - } - hospitalPicker.show() - } - private fun setHospitalText(commonSettingMenuBean: HospitalBean) { - mBinding.addDiseaseSelectHospital.text = commonSettingMenuBean.name - mBinding.addDiseaseSelectHospital.setTextColor(mContext!!.resources.getColor(R.color.text_black_33)) - mbean.hospitalId = commonSettingMenuBean.id.toString() - } - - private fun showRegisterTypePicker() { - if (mRegisterType.size==0){ - showToast("暂无可选择挂号类型数据") - return - } - registerTypePicker.setBackgroundResource(R.drawable.rectangle_top_round_corner20_white) - registerTypePicker.setTitle("选择挂号类型") - registerTypePicker.setDefaultPosition(0) - registerTypePicker.wheelView.setFormatter { value -> - (value as CommonSettingMenuBean).text - } - registerTypePicker.setOnOptionPickedListener { position, item -> - setRelationText(item as CommonSettingMenuBean) - - } - registerTypePicker.show() - } - private fun setRelationText(commonSettingMenuBean: CommonSettingMenuBean) { - mBinding.addDiseaseRegisterType.text = commonSettingMenuBean.text - mBinding.addDiseaseRegisterType.setTextColor(mContext!!.resources.getColor(R.color.text_black_33)) - mbean.registerCategory = commonSettingMenuBean.value - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/emergency/EmergencySeekDoctorDetailsActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/emergency/EmergencySeekDoctorDetailsActivity.kt index 123412e..757dd1b 100644 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/emergency/EmergencySeekDoctorDetailsActivity.kt +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/emergency/EmergencySeekDoctorDetailsActivity.kt @@ -11,7 +11,6 @@ import com.xjjk.healthyclients.R import com.xjjk.healthyclients.base.BaseVMBActivity import com.xjjk.healthyclients.bean.emergency.GetOrderBySessionIdBean import com.xjjk.healthyclients.databinding.ActivityEmergencySeekDoctorDetailsBinding -import com.xjjk.healthyclients.superfuntion.startAddBigDiseaseActivity import com.xjjk.healthyclients.superfuntion.toHtml import com.xjjk.healthyclients.ui.activity.emergency.adapter.EmergencySeekDoctorDetailsAdapter import com.xjjk.healthyclients.ui.viewmodel.EmergencySeekDoctorDetailsViewModel @@ -164,9 +163,9 @@ class EmergencySeekDoctorDetailsActivity : BaseVMBActivity { switchMenu(1) } - R.id.big_disease_add -> { - mContext?.let { startAddBigDiseaseActivity(it) } - } +// R.id.big_disease_add -> { +// mContext?.let { startAddBigDiseaseActivity(it) } +// } else -> {} } } diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/AllDoctorActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/AllDoctorActivity.kt new file mode 100644 index 0000000..138ac2b --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/AllDoctorActivity.kt @@ -0,0 +1,73 @@ +package com.xjjk.healthyclients.ui.activity.guidance + +import android.os.Bundle +import android.view.View +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import com.xjjk.healthyclients.R +import com.xjjk.healthyclients.base.BaseVMBActivity +import com.xjjk.healthyclients.databinding.ActivityAllDoctorInfoBinding +import com.xjjk.healthyclients.superfuntion.loadCircle +import com.xjjk.healthyclients.ui.viewmodel.MainViewModel +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch + +/** + * 全科医生信息 + */ +class AllDoctorActivity : + BaseVMBActivity(R.layout.activity_all_doctor_info){ + + override fun initView(savedInstanceState: Bundle?) { + mBinding?.apply { + } + + + } + + override fun transparentStatusBar(): Boolean { + return false + } + + override fun initData() { + var id=intent.getStringExtra("id") + if (id != null) { + mViewModel.selectHelperInfoDesc(id) + } + + } + + override fun onResume() { + super.onResume() + } + + override fun createObserve() { + super.createObserve() + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.doctorInfo.collectLatest { bean -> + if (bean==null) { + return@collectLatest + } + mBinding?.apply { + ivIcon.loadCircle(bean.faceUrl) + tvName.text=bean.userName + tvDesc.text=bean.memo + } + } + } + } + } + + override fun bindEvent() { + mBinding?.apply { + } + + } + + override fun processClick(paramView: View?) { + when (paramView?.id) { + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/AppointmentDetailActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/AppointmentDetailActivity.kt index 67032e9..ae1f7d0 100644 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/AppointmentDetailActivity.kt +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/AppointmentDetailActivity.kt @@ -59,7 +59,7 @@ class AppointmentDetailActivity : lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.CREATED) { mViewModel.followStatus.collectLatest { - mBinding.llAppointmentInformation.getFollowView().isSelected = it +// mBinding.llAppointmentInformation.getFollowView().isSelected = it } } } @@ -90,7 +90,7 @@ class AppointmentDetailActivity : addClickViews( mBinding.btnCancel, mBinding.btnAppraise, - mBinding.llAppointmentInformation.getFollowView(), +// mBinding.llAppointmentInformation.getFollowView(), mBinding.llAppointmentInformation.mBinding.tvArchivesDetail ) mBinding.llAppointmentInformation.mBinding.stvPhysicalExaminationReportInfo.setRightTvClickListener { @@ -107,14 +107,15 @@ class AppointmentDetailActivity : override fun onBackEvent() { super.onBackEvent() if (!isGuidance) { - if (CustomActivityManager.getInstance().isActivityExist(DoctorsGuidanceActivity::class.java)) { - CustomActivityManager.getInstance().finishActivityTohome(DoctorsGuidanceActivity::class.java) - }else if (CustomActivityManager.getInstance().isActivityExist(DoctorHomepageActivity::class.java)) { +// if (CustomActivityManager.getInstance().isActivityExist(DoctorsGuidanceActivity::class.java)) { +// CustomActivityManager.getInstance().finishActivityTohome(DoctorsGuidanceActivity::class.java) +// }else + if (CustomActivityManager.getInstance().isActivityExist(DoctorHomepageActivity::class.java)) { CustomActivityManager.getInstance().finishActivityTohome(DoctorHomepageActivity::class.java) - }else if (CustomActivityManager.getInstance().isActivityExist(FilterSearchDoctorActivity::class.java)){ - CustomActivityManager.getInstance().finishActivityTohome(FilterSearchDoctorActivity::class.java) - }else if (CustomActivityManager.getInstance().isActivityExist(SeekDoctorSearchActivity::class.java)){ - CustomActivityManager.getInstance().finishActivityTohome(SeekDoctorSearchActivity::class.java) +// }else if (CustomActivityManager.getInstance().isActivityExist(FilterSearchDoctorActivity::class.java)){ +// CustomActivityManager.getInstance().finishActivityTohome(FilterSearchDoctorActivity::class.java) +// }else if (CustomActivityManager.getInstance().isActivityExist(SeekDoctorSearchActivity::class.java)){ +// CustomActivityManager.getInstance().finishActivityTohome(SeekDoctorSearchActivity::class.java) } } } diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/DoctorHomepageActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/DoctorHomepageActivity.kt index 91957b7..ed3fc2f 100644 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/DoctorHomepageActivity.kt +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/DoctorHomepageActivity.kt @@ -100,36 +100,33 @@ class DoctorHomepageActivity : } } } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED) { - mViewModel.followStatus.collectLatest { - mBinding.viewDoctorBaseInfo.getFollowView().isSelected = it - } - } - } +// lifecycleScope.launch { +// repeatOnLifecycle(Lifecycle.State.CREATED) { +// mViewModel.followStatus.collectLatest { +// mBinding.viewDoctorBaseInfo.getFollowView().isSelected = it +// } +// } +// } lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.CREATED){ mViewModel.noticeBean.collectLatest {bean -> - if (bean!=null) { - if (bean.isRead==1) { - if (mType=="1") { - startSelectConsultantActivity( - this@DoctorHomepageActivity, - ConstantUtils.ConsultType.IMAGE_TEXT_CONSULT, - doctorId - ) - }else if (mType=="0"){ - startSelectAppointmentTimeActivity(this@DoctorHomepageActivity, doctorId) - } - }else if (bean.isRead==2){ - if (mType=="1") { - doctorId?.let { startGuidanceNoticeActivity(this@DoctorHomepageActivity, it,"1") } - }else if (mType=="0"){ - doctorId?.let { startGuidanceNoticeActivity(this@DoctorHomepageActivity, it,"0") } - } + if (bean.isRead==1) { + if (mType=="1") { + startSelectConsultantActivity( + this@DoctorHomepageActivity, + ConstantUtils.ConsultType.IMAGE_TEXT_CONSULT, + doctorId + ) + }else if (mType=="0"){ + startSelectAppointmentTimeActivity(this@DoctorHomepageActivity, doctorId) + } + }else if (bean.isRead==2){ + if (mType=="1") { + doctorId?.let { startGuidanceNoticeActivity(this@DoctorHomepageActivity, it,"1") } + }else if (mType=="0"){ + doctorId?.let { startGuidanceNoticeActivity(this@DoctorHomepageActivity, it,"0") } } - } } } @@ -146,7 +143,7 @@ class DoctorHomepageActivity : addClickViews( mBinding.btnImageTextConsult, mBinding.btnAudioVideoConsult, - mBinding.viewDoctorBaseInfo.getFollowView(), +// mBinding.viewDoctorBaseInfo.getFollowView(), mBinding.tvMoreAppraise ) } @@ -170,9 +167,9 @@ class DoctorHomepageActivity : } } - R.id.btn_follow -> { - mViewModel.followDoctor(doctorId) - } +// R.id.btn_follow -> { +// mViewModel.followDoctor(doctorId) +// } R.id.tv_more_appraise -> { startDoctorAllAppraiseActivity(this, doctorId) @@ -180,13 +177,13 @@ class DoctorHomepageActivity : } } - @Subscribe(threadMode = ThreadMode.MAIN) - open fun onMessageEvent(event: FollowDoctorEvent) { - if (event == null) { - return - } - lifecycleScope.launch { - mViewModel.followStatus.emit(event.followStatus) - } - } +// @Subscribe(threadMode = ThreadMode.MAIN) +// open fun onMessageEvent(event: FollowDoctorEvent) { +// if (event == null) { +// return +// } +// lifecycleScope.launch { +// mViewModel.followStatus.emit(event.followStatus) +// } +// } } \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/DoctorsGuidanceActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/DoctorsGuidanceActivity.kt deleted file mode 100644 index 7a3fefa..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/DoctorsGuidanceActivity.kt +++ /dev/null @@ -1,122 +0,0 @@ -package com.xjjk.healthyclients.ui.activity.guidance - -import android.app.ProgressDialog -import android.os.Bundle -import android.view.View -import android.view.Window -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.lifecycleScope -import androidx.lifecycle.repeatOnLifecycle -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.sw.healthyclients.view.LoadingDialog -import com.xjjk.healthyclients.R -import com.xjjk.healthyclients.adapter.common.MultiItemTypeAdapter -import com.xjjk.healthyclients.base.BaseVMBActivity -import com.xjjk.healthyclients.bean.guidance.DoctorChildBean -import com.xjjk.healthyclients.bean.guidance.selectDictListByNHDSRequestBean -import com.xjjk.healthyclients.databinding.ActivityDoctorsGuidanceBinding -import com.xjjk.healthyclients.superfuntion.startDoctorHomepageActivity -import com.xjjk.healthyclients.ui.activity.guidance.adapter.SeekDoctorDoctorAdapter -import com.xjjk.healthyclients.ui.viewmodel.DoctorsGuidanceViewModel -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.launch - -/** - * 专家库咨询 - */ -class DoctorsGuidanceActivity : - BaseVMBActivity(R.layout.activity_doctors_guidance){ - private var mDoctorList=arrayListOf() //医生列表 - private var mSeekDoctorDoctorAdapter: SeekDoctorDoctorAdapter?=null - - //科室数据 - - var mOfficeIds = arrayListOf() - var mSicksIds = arrayListOf() - var mDialog:LoadingDialog?=null - var mBean= selectDictListByNHDSRequestBean() - override fun initView(savedInstanceState: Bundle?) { - mBinding?.apply { - mSeekDoctorDoctorAdapter= SeekDoctorDoctorAdapter(mContext!!, - R.layout.item_recycle_seek_doctor_doctor_child,mDoctorList) - val doctorLayoutManager = LinearLayoutManager(this@DoctorsGuidanceActivity) - mFilterContentView.layoutManager = doctorLayoutManager - mFilterContentView.adapter = mSeekDoctorDoctorAdapter - } - - - } - - override fun transparentStatusBar(): Boolean { - return false - } - - override fun initData() { - var intents=intent - var office=intents.getStringArrayListExtra("officeIds") - if (office!=null) { - mOfficeIds.addAll(office) - } - var sick= intents.getStringArrayListExtra("sicksIds") - if (sick!=null) { - mSicksIds.addAll(sick) - } - mViewModel.selectDictListBySickAndDepartment(mOfficeIds,mSicksIds) - - } - - override fun createObserve() { - super.createObserve() - - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDoctorSoure.collectLatest {list -> - mDoctorList.clear() - mDoctorList.addAll(list) - if(mDoctorList.size>0){ - mBinding?.includeEmpty?.visibility=View.GONE - } - mSeekDoctorDoctorAdapter?.notifyDataSetChanged() - } - } - } - - } - - override fun bindEvent() { - - mSeekDoctorDoctorAdapter?.setOnItemClickListener(object : - MultiItemTypeAdapter.OnItemClickListener { - override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { - mContext?.let { startDoctorHomepageActivity(it,mDoctorList[position].id) } - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - } - - override fun processClick(paramView: View?) { - when (paramView?.id) { - } - } - - - fun createDialog2() { - mDialog = LoadingDialog( - mContext, - ProgressDialog.STYLE_SPINNER, "数据加载中" - ) - mDialog!!.requestWindowFeature(Window.FEATURE_NO_TITLE) - mDialog!!.setCanceledOnTouchOutside(false) - mDialog!!.setCancelable(false) - mDialog!!.setMessage("请稍后...") - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/FilterSearchDoctorActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/FilterSearchDoctorActivity.kt deleted file mode 100644 index 15e25a4..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/FilterSearchDoctorActivity.kt +++ /dev/null @@ -1,333 +0,0 @@ -package com.xjjk.healthyclients.ui.activity.guidance - -import android.app.ProgressDialog -import android.os.Bundle -import android.view.View -import android.view.Window -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.lifecycleScope -import androidx.lifecycle.repeatOnLifecycle -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.sw.healthyclients.view.LoadingDialog -import com.xjjk.healthyclients.R -import com.xjjk.healthyclients.adapter.common.MultiItemTypeAdapter -import com.xjjk.healthyclients.base.BaseVMBActivity -import com.xjjk.healthyclients.bean.guidance.DepartListBean -import com.xjjk.healthyclients.bean.guidance.DoctorChildBean -import com.xjjk.healthyclients.bean.guidance.FilterSearchBean -import com.xjjk.healthyclients.bean.guidance.SickListBean -import com.xjjk.healthyclients.bean.guidance.selectDictListByNHDSRequestBean -import com.xjjk.healthyclients.databinding.ActivityFilterSearchDoctorBinding -import com.xjjk.healthyclients.superfuntion.startDoctorHomepageActivity -import com.xjjk.healthyclients.ui.activity.guidance.adapter.SeekDoctorDoctorAdapter -import com.xjjk.healthyclients.ui.viewmodel.FilterSearchDoctorViewModel -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.launch - -/** - * 带筛选的找专家 - */ -class FilterSearchDoctorActivity : - BaseVMBActivity(R.layout.activity_filter_search_doctor){ - private var mDoctorList=arrayListOf() //医生列表 - private var mHospitalList=arrayListOf() //医院 - private var mDepartList=arrayListOf() //科室 - private var mSickList=arrayListOf() //疾病 - private var mSeekDoctorDoctorAdapter: SeekDoctorDoctorAdapter?=null - - //科室数据 - private var mDepartmentListLeft=arrayListOf() //科室列表 - private var mSickListLeft=arrayListOf() //科室列表 - private var mDepartmentListRight=arrayListOf() //科室列表 - private var mSickListRight=arrayListOf() //科室列表 - - var Re_hospitalId="" - var Re_search="" - var Re_hospitalName="" - var Re_departId="" - var Re_departName="" - var Re_sickId="" - var Re_sickName="" - var mDialog: LoadingDialog?=null - var mBean= selectDictListByNHDSRequestBean() - override fun initView(savedInstanceState: Bundle?) { -// initFilterDropDownView() - mBinding?.apply { - mSeekDoctorDoctorAdapter= SeekDoctorDoctorAdapter(mContext!!, - R.layout.item_recycle_seek_doctor_doctor_child,mDoctorList) - val doctorLayoutManager = LinearLayoutManager(this@FilterSearchDoctorActivity) - mFilterContentView.layoutManager = doctorLayoutManager - mFilterContentView.adapter = mSeekDoctorDoctorAdapter - } - - - } - - override fun transparentStatusBar(): Boolean { - return false - } - - override fun initData() { - var intents=intent - Re_search=intents.getStringExtra("search").toString() - Re_hospitalId= intents.getStringExtra("hospitalId").toString() - Re_hospitalName=intents.getStringExtra("hospitalName").toString() - Re_departId=intents.getStringExtra("departId").toString() - Re_departName=intents.getStringExtra("departName").toString() - Re_sickId=intents.getStringExtra("sickId").toString() - Re_sickName=intents.getStringExtra("sickName").toString() - mBinding.seekDoctorSearch.initEtContext(Re_search) - refreshState() - - lifecycleScope.launch { - if (Re_hospitalName.isNotEmpty()) { - mViewModel.titleText.emit(Re_hospitalName) - }else{ - mViewModel.titleText.emit("找专家") - } - } - - //科室左侧数据 - mViewModel.selectDepartListByHospitalId(Re_hospitalId,"0") - - //疾病左侧数据 - mViewModel.selectDepartListSick("0") - mViewModel.selectSickListByDepartmentId("0") - - } - - override fun createObserve() { - super.createObserve() - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDepartmentSoure.collectLatest {list -> - mDepartList.clear() - mDepartList.addAll(list) - mBinding.dropDownMenu.setDepartData(mDepartList) - } - } - } - - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mHospitalSoure.collectLatest {list -> - mHospitalList.clear() - mHospitalList.addAll(list) - mBinding.dropDownMenu.setHospitalData(mHospitalList) - } - } - } - - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDiseaseSoure.collectLatest {list -> - mSickList.clear() - mSickList.addAll(list) - mBinding.dropDownMenu.setSickData(mSickList) - } - } - } - - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDoctorSoure.collectLatest {list -> - mDoctorList.clear() - mDoctorList.addAll(list) - mSeekDoctorDoctorAdapter?.notifyDataSetChanged() - if (mDoctorList.size==0) { - showEmptys() - }else{ - hindEmptys() - } - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mCloseDialog.collectLatest {isClose -> - if (isClose) { - mDialog?.dismiss() - } - } - } - } - - //科室左侧数据 - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mLeftSoure.collectLatest { - mDepartmentListLeft.clear() - mDepartmentListLeft.addAll(it) - if(mDepartmentListLeft.size>0){ - mDepartmentListLeft[0].isSelect=true -// mViewModel.selectDepartList(mDepartmentListLeft[0].id) - mViewModel.selectDepartListByHospitalId(Re_hospitalId,mDepartmentListLeft[0].id) - mBinding.dropDownMenu.setLeftData(mDepartmentListLeft) - } - - } - } - } - //科室右侧数据 - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mRightSoure.collectLatest { - mDepartmentListRight.clear() - mDepartmentListRight.addAll(it) - mBinding.dropDownMenu.setDepartRightData(mDepartmentListRight) - } - } - } - //疾病左侧数据 - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mLeftSickSoure.collectLatest { - mSickListLeft.clear() - mSickListLeft.addAll(it) - if(mSickListLeft.size>0){ - mSickListLeft[0].isSelect=true - } - mBinding.dropDownMenu.setSickLeftData(mSickListLeft) - } - } - } - //疾病右侧数据 - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mRightSickSoure.collectLatest { - mSickListRight.clear() - mSickListRight.addAll(it) - mBinding.dropDownMenu.setSickRightData(mSickListRight) - } - } - } - } - - override fun bindEvent() { - mBinding.dropDownMenu.setFilterListener { - //二级筛选条件 - if (it.tfSort.isNotEmpty()) { - mBean.tfSort= it.tfSort - } - if (it.hospitalId.isNotEmpty()) { - mBean.hospitalId= it.hospitalId - } - if (it.isSelectHospital) { - mBean.hospitalId="" - } - - mBean.departmentId= it.departmentId - mBean.sickId= it.sickId - if(Re_hospitalId!=mBean.hospitalId){ - Re_hospitalId=mBean.hospitalId - mBean.departmentId="" - mBean.sickId="" - mBinding.dropDownMenu.setDepartResettingText("全部科室") - mBinding.dropDownMenu.setSickResettingText("全部疾病") - }else{ - Re_hospitalId=mBean.hospitalId - } - if(Re_departId!= it.departmentId){ - Re_departId= it.departmentId - mBean.sickId="" - mBinding.dropDownMenu.setSickResettingText("全部疾病") - }else{ - Re_departId= it.departmentId - } - mViewModel.selectDepartListByHospitalId(Re_hospitalId,"0") - - - mBean.doctorName= mBinding.seekDoctorSearch.getInoputText() - mViewModel.selectDictListByNHDS(mBean) - } - - mBinding.seekDoctorSearch.setOnCustomClickListener { - mBean.doctorName=mBinding.seekDoctorSearch.getInoputText() - mViewModel.selectDictListByNHDS(mBean) - } - - mBinding.dropDownMenu.setDoubleListListener { type, id -> - // type 0 科室 1疾病 - when(type){ - 0 -> { -// mViewModel.selectDepartList(id) - mViewModel.selectDepartListByHospitalId(Re_hospitalId,id) - } - 1 -> { - mViewModel.selectSickListByDepartmentId(id) - } - } - } - - mSeekDoctorDoctorAdapter?.setOnItemClickListener(object : - MultiItemTypeAdapter.OnItemClickListener { - override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { - mContext?.let { startDoctorHomepageActivity(it,mDoctorList[position].id) } - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - } - - override fun processClick(paramView: View?) { - when (paramView?.id) { - } - } - - fun showEmptys(){ - mBinding?.tvEmpty?.visibility=View.VISIBLE - } - fun hindEmptys(){ - mBinding?.tvEmpty?.visibility=View.GONE - } - - fun refreshState(){ - if (Re_hospitalId.isNotEmpty()&&Re_hospitalName.isNotEmpty()){ - //从医院详情页点击全部科室 - mBinding.dropDownMenu.hideHospitalFilter() - }else if (Re_departId.isNotEmpty()&&Re_departName.isNotEmpty()){ - //点击科室进来的 - if (Re_departName.contains("全部")) { - Re_departId="" - }else{ - mBinding.dropDownMenu.setDepartText(Re_departName,Re_departId) - } - }else if (Re_sickId.isNotEmpty()&&Re_sickName.isNotEmpty()){ - //点击疾病进来的 - if (Re_sickName.contains("全部")) { - Re_sickId="" - }else{ - mBinding.dropDownMenu.setSickText(Re_sickName,Re_sickId) - } - } - createDialog2() - mDialog?.show() - mBean.doctorName= mBinding.seekDoctorSearch.getInoputText() - mBean.sickId=Re_sickId - mBean.departmentId=Re_departId - mBean.hospitalId=Re_hospitalId - mBinding.dropDownMenu.setDataBean(mBean) - mViewModel.selectDictListByNHDS(mBean) - - mSeekDoctorDoctorAdapter?.notifyDataSetChanged() - } - - fun createDialog2() { - mDialog = LoadingDialog( - mContext, - ProgressDialog.STYLE_SPINNER, "数据加载中" - ) - mDialog!!.requestWindowFeature(Window.FEATURE_NO_TITLE) - mDialog!!.setCanceledOnTouchOutside(false) - mDialog!!.setCancelable(false) - mDialog!!.setMessage("请稍后...") - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/IMSelectArchivesActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/IMSelectArchivesActivity.kt new file mode 100644 index 0000000..3240f6e --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/IMSelectArchivesActivity.kt @@ -0,0 +1,81 @@ +package com.xjjk.healthyclients.ui.activity.guidance + +import android.content.Intent +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 com.buddy.kredit.android.view.SpaceItemDecoration +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.listener.OnItemChildClickListener +import com.tencent.qcloud.tuikit.tuichat.classicui.setting.ChatLayoutSetting +import com.xjjk.healthyclients.R +import com.xjjk.healthyclients.base.BaseVMBActivity +import com.xjjk.healthyclients.bean.guidance.ArchivesBean +import com.xjjk.healthyclients.databinding.ActivityImSelectArchivesBinding +import com.xjjk.healthyclients.superfuntion.toJson +import com.xjjk.healthyclients.ui.activity.guidance.adapter.IMSelectArchivesAdapter +import com.xjjk.healthyclients.ui.viewmodel.IMSelectArchivesViewModel +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch + +/** + * @author nanfeifei + * @time 2023/7/5 10:32 + * @description IM选择档案 + */ +class IMSelectArchivesActivity : BaseVMBActivity( + R.layout.activity_im_select_archives), OnItemChildClickListener { + var memberId: String? = null + val mAdapter by lazy { IMSelectArchivesAdapter() } + override fun initView(savedInstanceState: Bundle?) { + memberId = intent.extras?.getString("memberId") ?: "" + mBinding.apply { + val linearLayoutManager = LinearLayoutManager(this@IMSelectArchivesActivity) + rvList.layoutManager = linearLayoutManager + rvList.addItemDecoration(SpaceItemDecoration(this@IMSelectArchivesActivity, R.drawable.decoration_item_gray, 1f)) + } + } + + override fun createObserve() { + super.createObserve() + mBinding.apply { + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + mViewModel.archivesBeanList.collectLatest { list -> + list?.let { + mAdapter.setList(list) + mAdapter.loadMoreModule.loadMoreComplete() + if (rvList.adapter == null) { + mAdapter.setEmptyView(R.layout.layout_empty) + mAdapter.setOnItemChildClickListener(this@IMSelectArchivesActivity) + rvList.adapter = mAdapter + } + } + } + } + } + } + } + override fun initData() { + mViewModel.getArchivesList(memberId) + } + + override fun bindEvent() { + + } + + override fun processClick(paramView: View?) { + + } + + override fun onItemChildClick(adapter: BaseQuickAdapter<*, *>, view: View, position: Int) { + var archivesBean: ArchivesBean = adapter.getItem(position) as ArchivesBean + var intent = Intent() + intent.putExtra(ChatLayoutSetting.KEY_CUSTOM_MESSAGE, archivesBean.toIMArchivesMessageBean().toJson()) + setResult(ChatLayoutSetting.RESULT_CODE_ARCHIVES, intent) + finish() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/SeekDoctorSearchActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/SeekDoctorSearchActivity.kt deleted file mode 100644 index 77ef00b..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/SeekDoctorSearchActivity.kt +++ /dev/null @@ -1,459 +0,0 @@ -package com.xjjk.healthyclients.ui.activity.guidance - -import android.os.Bundle -import android.view.View -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.lifecycleScope -import androidx.lifecycle.repeatOnLifecycle -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.google.android.flexbox.AlignItems -import com.google.android.flexbox.FlexDirection -import com.google.android.flexbox.FlexWrap -import com.google.android.flexbox.FlexboxLayoutManager -import com.google.android.material.tabs.TabLayout -import com.google.android.material.tabs.TabLayout.OnTabSelectedListener -import com.sw.healthyclients.bean.guidance.DiseaseBean -import com.xjjk.healthyclients.R -import com.xjjk.healthyclients.adapter.common.MultiItemTypeAdapter -import com.xjjk.healthyclients.base.BaseVMBActivity -import com.xjjk.healthyclients.bean.guidance.DepartmentchildBean -import com.xjjk.healthyclients.bean.guidance.DoctorChildBean -import com.xjjk.healthyclients.bean.guidance.HospitalchildBean -import com.xjjk.healthyclients.databinding.ActivitySeekDoctorSearchBinding -import com.xjjk.healthyclients.superfuntion.getTab -import com.xjjk.healthyclients.superfuntion.startDoctorHomepageActivity -import com.xjjk.healthyclients.superfuntion.startFilterSearchDoctorActivity -import com.xjjk.healthyclients.superfuntion.switchTabRefresh -import com.xjjk.healthyclients.ui.activity.guidance.adapter.DiseaseAdapter -import com.xjjk.healthyclients.ui.activity.guidance.adapter.SeekDoctorDepartmentAdapter -import com.xjjk.healthyclients.ui.activity.guidance.adapter.SeekDoctorDoctorAdapter -import com.xjjk.healthyclients.ui.activity.guidance.adapter.SeekDoctorHospitalAdapter -import com.xjjk.healthyclients.ui.viewmodel.SeekDoctorSearchActivityViewModel -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.launch - -/** - * 找专家-搜索页 - */ -class SeekDoctorSearchActivity : BaseVMBActivity(R.layout.activity_seek_doctor_search){ - private var mSeekDoctorHospitalAdapter: SeekDoctorHospitalAdapter?=null - private var mSeekDoctorDoctorAdapter: SeekDoctorDoctorAdapter?=null - private var mSeekDoctorDepartmentAdapter: SeekDoctorDepartmentAdapter?=null - private var mDiseaseAdapter: DiseaseAdapter?=null - private var mDoctorList=arrayListOf() //医生列表 - private var mHospitalList=arrayListOf() //医院列表 - private var mDepartmentList=arrayListOf() //科室列表 - private var mDiseaseList=arrayListOf() //疾病 - private var mPosition=0 //0 综合 1专家 2医院 3疾病 4科室 - override fun initView(savedInstanceState: Bundle?) { - mBinding.apply { - seekDoctorSearch.initView(getString(R.string.search_input_hint)) - //tablayout - seekDoctorSearchTab.addTab(getTab("综合")) - seekDoctorSearchTab.addTab(getTab("专家")) - seekDoctorSearchTab.addTab(getTab("医院")) - seekDoctorSearchTab.addTab(getTab("疾病")) - seekDoctorSearchTab.addTab(getTab("科室")) - //医生 - mSeekDoctorDoctorAdapter= SeekDoctorDoctorAdapter(mContext!!,R.layout.item_recycle_seek_doctor_doctor_child,mDoctorList) - val doctorLayoutManager = LinearLayoutManager(this@SeekDoctorSearchActivity) - seekDoctorDoctorList.layoutManager = doctorLayoutManager - seekDoctorDoctorList.adapter = mSeekDoctorDoctorAdapter - //医院 - mSeekDoctorHospitalAdapter= SeekDoctorHospitalAdapter(mContext!!, - R.layout.item_recycle_seek_doctor_hospital_child,mHospitalList) - val linearLayoutManager = LinearLayoutManager(this@SeekDoctorSearchActivity) - seekDoctorHospitalList.layoutManager = linearLayoutManager - seekDoctorHospitalList.adapter = mSeekDoctorHospitalAdapter - //科室 - mSeekDoctorDepartmentAdapter= SeekDoctorDepartmentAdapter(mContext!!, - R.layout.item_recycle_seek_doctor_department_child,mDepartmentList) - val linearLayoutManager2 = GridLayoutManager(this@SeekDoctorSearchActivity,2,GridLayoutManager.VERTICAL,false) - seekDoctorDepartmentList.layoutManager = linearLayoutManager2 - seekDoctorDepartmentList.adapter = mSeekDoctorDepartmentAdapter - //疾病 - var manager= FlexboxLayoutManager(mContext) - manager.setFlexDirection(FlexDirection.ROW) - //设置是否换行 - manager.setFlexWrap(FlexWrap.WRAP) - manager.setAlignItems(AlignItems.STRETCH) - seekDoctorDiseaseList.layoutManager=manager - mDiseaseAdapter= DiseaseAdapter(mContext, - R.layout.item_recycle_seek_doctor_disease_child,mDiseaseList){} - seekDoctorDiseaseList.adapter=mDiseaseAdapter - - rlDoctor.visibility=View.GONE - rlHospital.visibility=View.GONE - rlDisease.visibility=View.GONE - rlDepartment.visibility=View.GONE - } - } - - override fun initData() { - - var mIntent=intent - var content=mIntent.getStringExtra("search") - mBinding?.apply { - seekDoctorSearch.initEtContext(content) - if (content != null) { - mViewModel.searchComprehensive(content) - } - } - - - } - - override fun createObserve() { - super.createObserve() - mBinding?.apply { - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mHospitalSoure.collectLatest {list -> -// if(list.size==0){ -// mBinding?.seekDoctorHospitalListRoot?.visibility=View.GONE -// }else{ -// mBinding?.seekDoctorHospitalListRoot?.visibility=View.VISIBLE - mHospitalList.clear() - mHospitalList.addAll(list) - mSeekDoctorHospitalAdapter?.notifyDataSetChanged() -// } - - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDepartmentSoure.collectLatest {list -> -// if(list.size==0){ -// mBinding?.seekDoctorDepartmentListRoot?.visibility=View.GONE -// }else{ -// mBinding?.seekDoctorDepartmentListRoot?.visibility=View.VISIBLE - mDepartmentList.clear() - mDepartmentList.addAll(list) - mSeekDoctorDepartmentAdapter?.notifyDataSetChanged() -// } - - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDiseaseSoure.collectLatest {list -> -// if(list.size==0){ -// mBinding?.seekDoctorDiseaseListRoot?.visibility=View.GONE -// }else{ -// mBinding?.seekDoctorDiseaseListRoot?.visibility=View.VISIBLE - mDiseaseList.clear() - mDiseaseList.addAll(list) - mDiseaseAdapter?.notifyDataSetChanged() -// } - - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDoctorSoure.collectLatest {list -> -// if(list.size==0){ -// mBinding?.seekDoctorDoctorListRoot?.visibility=View.GONE -// }else{ -// mBinding?.seekDoctorDoctorListRoot?.visibility=View.VISIBLE - mDoctorList.clear() - mDoctorList.addAll(list) - mSeekDoctorDoctorAdapter?.notifyDataSetChanged() -// } - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mAllState.collectLatest {state -> - if(!state){ - if (mPosition==0) { - showEmptys() - }else{ - hindEmptys() - } - }else{ - hindEmptys() - } - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mHospitalSoureState.collectLatest {state -> - if(!state){ - if (mPosition==2) { - showEmptys() - }else{ - hindEmptys() - } - mBinding?.seekDoctorHospitalListRoot?.visibility=View.GONE - if (mPosition==0){ - rlHospital.visibility=View.GONE - } - }else{ - if (mPosition==0){ - rlHospital.visibility=View.VISIBLE - } - mBinding?.seekDoctorHospitalListRoot?.visibility=View.VISIBLE - hindEmptys() - } - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDoctorSoureState.collectLatest {state -> - if(!state){ - mBinding?.seekDoctorDoctorListRoot?.visibility=View.GONE - if (mPosition==1) { - showEmptys() - }else{ - hindEmptys() - } - if (mPosition==0) { - rlDoctor.visibility=View.GONE - } - }else{ - mBinding?.seekDoctorDoctorListRoot?.visibility=View.VISIBLE - hindEmptys() - if (mPosition==0) { - rlDoctor.visibility=View.VISIBLE - } - } - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDepartmentSoureState.collectLatest {state -> - if(!state){ - if (mPosition==4) { - showEmptys() - }else{ - hindEmptys() - } - mBinding?.seekDoctorDepartmentListRoot?.visibility=View.GONE - if (mPosition==0){ - rlDepartment.visibility=View.GONE - } - }else{ - mBinding?.seekDoctorDepartmentListRoot?.visibility=View.VISIBLE - hindEmptys() - if (mPosition==0){ - rlDepartment.visibility=View.VISIBLE - } - } - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED){ - mViewModel.mDiseaseSoureState.collectLatest {state -> - if(!state){ - if (mPosition==3) { - showEmptys() - }else{ - hindEmptys() - } - mBinding?.seekDoctorDiseaseListRoot?.visibility=View.GONE - if (mPosition==0) { - rlDisease.visibility=View.GONE - } - }else{ - mBinding?.seekDoctorDiseaseListRoot?.visibility=View.VISIBLE - hindEmptys() - if (mPosition==0) { - rlDisease.visibility=View.VISIBLE - } - } - } - } - } - } - } - - fun showEmptys(){ - mBinding?.tvEmpty?.visibility=View.VISIBLE - } - fun hindEmptys(){ - mBinding?.tvEmpty?.visibility=View.GONE - } - - override fun bindEvent() { - mBinding.seekDoctorSearch.setOnCustomClickListener { - if(it.isNotEmpty()){ -// mViewModel.searchComprehensive(it) - when(mPosition){ - 0 -> { - mViewModel.searchComprehensive(it) - } - 1 -> { - mViewModel.searchConDoctor(it) - } - 2 -> { - mViewModel.searchConResource(it) - } - 3 -> { - mViewModel.searchconSicksList(it) - } - 4 -> { - mViewModel.searchConDepartment(it) - } - } - }else{ - showToast("搜索内容不能为空") - } - } - mBinding?.apply{ - addClickViews(tvDoctorMore,tvHospitalMore,tvDiseaseMore,tvDepartmentMore) - } - - mBinding.seekDoctorSearchTab.addOnTabSelectedListener(object:OnTabSelectedListener{ - override fun onTabSelected(tab: TabLayout.Tab?) { - mPosition=tab?.position!! - switchTabRefresh(mPosition) - mBinding?.let{ - when(mPosition){ - 0 -> { - mViewModel.searchComprehensive(it.seekDoctorSearch.getInoputText()) - } - 1 -> { - mViewModel.searchConDoctor(it.seekDoctorSearch.getInoputText()) - } - 2 -> { - mViewModel.searchConResource(it.seekDoctorSearch.getInoputText()) - } - 3 -> { - mViewModel.searchconSicksList(it.seekDoctorSearch.getInoputText()) - } - 4 -> { - mViewModel.searchConDepartment(it.seekDoctorSearch.getInoputText()) - } - } - } - - } - - override fun onTabUnselected(tab: TabLayout.Tab?) { - } - - override fun onTabReselected(tab: TabLayout.Tab?) { - } - }) - - mSeekDoctorDoctorAdapter?.setOnItemClickListener(object : MultiItemTypeAdapter.OnItemClickListener{ - override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { - mContext?.let { startDoctorHomepageActivity(it,mDoctorList[position].id) } - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - - mSeekDoctorHospitalAdapter?.setOnItemClickListener(object : MultiItemTypeAdapter.OnItemClickListener{ - override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { - mContext?.let { - - val bundle = Bundle() - bundle.putString("hospitalId", mHospitalList[position].id) - bundle.putString("hospitalName", mHospitalList[position].name) - bundle.putString("departId", "") - bundle.putString("departName", "") - bundle.putString("sickId", "") - bundle.putString("sickName", "") - startFilterSearchDoctorActivity(it,"",bundle) - } - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - mDiseaseAdapter?.setOnItemClickListener(object : MultiItemTypeAdapter.OnItemClickListener{ - override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { - mContext?.let { - - val bundle = Bundle() - bundle.putString("hospitalId", "") - bundle.putString("hospitalName", "") - bundle.putString("departId", "") - bundle.putString("departName", "") - bundle.putString("sickId", mDiseaseList[position].id) - bundle.putString("sickName", mDiseaseList[position].name) - startFilterSearchDoctorActivity(it,"",bundle) - } - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - mSeekDoctorDepartmentAdapter?.setOnItemClickListener(object : MultiItemTypeAdapter.OnItemClickListener{ - override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { - mContext?.let { - - val bundle = Bundle() - bundle.putString("hospitalId", "") - bundle.putString("hospitalName", "") - bundle.putString("departId", mDepartmentList[position].departmentId) - bundle.putString("departName", mDepartmentList[position].departmentName) - bundle.putString("sickId", "") - bundle.putString("sickName", "") - startFilterSearchDoctorActivity(it,"",bundle) - - } - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - } - - override fun processClick(paramView: View?) { - when (paramView?.id) { - R.id.tv_doctor_more -> { - mBinding.seekDoctorSearchTab.getTabAt(1)?.select() - } - R.id.tv_hospital_more -> { - mBinding.seekDoctorSearchTab.getTabAt(2)?.select() - } - R.id.tv_disease_more -> { - mBinding.seekDoctorSearchTab.getTabAt(3)?.select() - } - R.id.tv_department_more -> { - mBinding.seekDoctorSearchTab.getTabAt(4)?.select() - } - else -> {} - } - } - -// override fun onClick(view: View) { -// when(view?.id){ -// -// } -// } - -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/SelectAppointmentTimeActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/SelectAppointmentTimeActivity.kt index f378c8a..56aa5cf 100644 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/SelectAppointmentTimeActivity.kt +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/SelectAppointmentTimeActivity.kt @@ -82,7 +82,7 @@ class SelectAppointmentTimeActivity : lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.CREATED) { mViewModel.followStatus.collectLatest { - headerBinding.viewDoctorBaseInfo.getFollowView().isSelected = it +// headerBinding.viewDoctorBaseInfo.getFollowView().isSelected = it } } } @@ -101,7 +101,7 @@ class SelectAppointmentTimeActivity : } override fun bindEvent() { - addClickViews(headerBinding.viewDoctorBaseInfo.getFollowView()) +// addClickViews(headerBinding.viewDoctorBaseInfo.getFollowView()) } override fun processClick(paramView: View?) { diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/ViewLocationActivity.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/ViewLocationActivity.kt new file mode 100644 index 0000000..cc5e1ec --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/ViewLocationActivity.kt @@ -0,0 +1,126 @@ +package com.sw.healthyclients.ui.guidance + +import android.Manifest +import android.graphics.BitmapFactory +import android.os.Bundle +import android.provider.SyncStateContract +import android.view.View +import com.amap.api.location.AMapLocationClient +import com.amap.api.maps.AMap +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.MyLocationStyle +import com.permissionx.guolindev.PermissionX +import com.tencent.qcloud.tuicore.util.ToastUtil +import com.xjjk.healthyclients.R +import com.xjjk.healthyclients.base.BaseVMBActivity +import com.xjjk.healthyclients.base.viewmodel.TestViewModel +import com.xjjk.healthyclients.databinding.ActivityViewLocationBinding + + +/** + * @author nanfeifei + * @time 2023/7/4 10:38 + * @description 查看位置(IM查看位置使用) + */ +class ViewLocationActivity : BaseVMBActivity( + R.layout.activity_view_location) { + //初始化地图控制器对象 + var aMap: AMap? = null + var mCurrentLat: Double = 0.0 + var mCurrentLon: Double = 0.0 + var mPermissionList= arrayListOf( + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.QUERY_ALL_PACKAGES) + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + mBinding.mapView.onSaveInstanceState(outState) + + } + + override fun onCreate(savedInstanceState: Bundle?) { + AMapLocationClient.updatePrivacyShow(this@ViewLocationActivity, true, true) + AMapLocationClient.updatePrivacyAgree(this@ViewLocationActivity, true) + super.onCreate(savedInstanceState) + } + override fun initView(savedInstanceState: Bundle?) { + intent.extras?.let { + mCurrentLat = it.getDouble("latitude") + mCurrentLon = it.getDouble("longitude") + } + mBinding.apply { + mapView.onCreate(savedInstanceState) + if (aMap == null) { + aMap = mapView.map + } + PermissionX.init(this@ViewLocationActivity) + .permissions(mPermissionList) + .request { allGranted, grantedList, deniedList -> + setUpMap(allGranted) + } + } + } + + override fun initData() { + + } + private fun setUpMap(allGranted: Boolean) { + + mBinding.apply { + if (allGranted){ + // 自定义系统定位小蓝点 + val myLocationStyle = MyLocationStyle() + // 设置小蓝点的图 + myLocationStyle.myLocationIcon( + BitmapDescriptorFactory + .fromResource(R.mipmap.ic_my_location) + ) + myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW) + aMap?.myLocationStyle = myLocationStyle + aMap?.uiSettings?.isMyLocationButtonEnabled = true // 设置默认定位按钮是否显示 + aMap?.uiSettings?.isRotateGesturesEnabled = false + aMap?.uiSettings?.isTiltGesturesEnabled = false + aMap?.isMyLocationEnabled = true // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false + } + aMap?.moveCamera(CameraUpdateFactory.zoomTo(13F)) + val markerOption = MarkerOptions() + markerOption.position(LatLng(mCurrentLat, mCurrentLon)) + aMap?.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mCurrentLat, mCurrentLon))) + markerOption.icon( + BitmapDescriptorFactory.fromBitmap( + BitmapFactory + .decodeResource(resources, R.drawable.ic_select_location) + ) + ) + markerOption.isFlat = true + aMap?.addMarker(markerOption) + } + + } + override fun onResume() { + super.onResume() + mBinding.mapView.onResume() + } + + override fun onPause() { + super.onPause() + mBinding.mapView.onPause() + } + + override fun onDestroy() { + super.onDestroy() + mBinding.mapView.onDestroy() + } + 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/guidance/adapter/GuidanceFragmentDoctorAdapter.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/GuidanceFragmentDoctorAdapter.kt index aa90098..e2f377b 100644 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/GuidanceFragmentDoctorAdapter.kt +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/GuidanceFragmentDoctorAdapter.kt @@ -2,6 +2,7 @@ package com.xjjk.healthyclients.ui.activity.guidance.adapter import android.content.Context import android.graphics.Color +import android.net.Uri import android.view.View import android.widget.ImageView import android.widget.TextView diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/IMSelectArchivesAdapter.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/IMSelectArchivesAdapter.kt new file mode 100644 index 0000000..3258168 --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/IMSelectArchivesAdapter.kt @@ -0,0 +1,24 @@ +package com.xjjk.healthyclients.ui.activity.guidance.adapter + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.module.LoadMoreModule +import com.chad.library.adapter.base.viewholder.BaseDataBindingHolder +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.sw.healthyclients.utils.DateUtil +import com.xjjk.healthyclients.R +import com.xjjk.healthyclients.bean.guidance.ArchivesBean + +class IMSelectArchivesAdapter() : + BaseQuickAdapter( + R.layout.item_recycle_im_select_archives + ), LoadMoreModule { + override fun bindViewClickListener(viewHolder: BaseViewHolder, viewType: Int) { + addChildClickViewIds(R.id.btn_send) + super.bindViewClickListener(viewHolder, viewType) + } + override fun convert(holder: BaseViewHolder, item: ArchivesBean) { + holder.setText(R.id.tv_archives_name, item.recordsName) + holder.setText(R.id.tv_archives_intro, item.medicalDescribe) + holder.setText(R.id.tv_archives_time, context.getString(R.string.im_select_archives_update_time, item.updateTime)) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDepartment3Adapter.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDepartment3Adapter.kt deleted file mode 100644 index 9c95054..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDepartment3Adapter.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.xjjk.healthyclients.ui.activity.guidance.adapter - -import android.content.Context -import android.widget.TextView -import com.xjjk.healthyclients.R -import com.xjjk.healthyclients.adapter.common.CommonAdapter -import com.xjjk.healthyclients.adapter.common.ViewHolder -import com.xjjk.healthyclients.bean.guidance.DepartListBean - - -class SeekDoctorDepartment3Adapter(var mContext: Context, var layoutId: Int, var datas: ArrayList?) : CommonAdapter(mContext,layoutId,datas){ - override fun convert(holder: ViewHolder?, bean: DepartListBean?, position: Int) { - holder?.getView(R.id.item_key)?.let{ - //医院名称 - it.text=bean?.departmentName - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDepartmentAdapter.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDepartmentAdapter.kt deleted file mode 100644 index 0f19881..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDepartmentAdapter.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.xjjk.healthyclients.ui.activity.guidance.adapter - -import android.content.Context -import android.widget.TextView -import com.allen.library.CircleImageView -import com.sw.healthyclients.utils.StringUtils -import com.xjjk.healthyclients.R -import com.xjjk.healthyclients.adapter.common.CommonAdapter -import com.xjjk.healthyclients.adapter.common.ViewHolder -import com.xjjk.healthyclients.bean.guidance.DepartmentchildBean -import com.xjjk.healthyclients.superfuntion.load - - -class SeekDoctorDepartmentAdapter(var mContext: Context, var layoutId: Int, var datas: ArrayList?) : CommonAdapter(mContext,layoutId,datas){ - override fun convert(holder: ViewHolder?, bean: DepartmentchildBean?, position: Int) { - holder?.getView(R.id.item_recycler_seek_doctor_department_img)?.let{ - //加载医院icon -// ImageLoader.loadImage( -// mContext, -// it, -// bean?.departmentImg, -// R.drawable.ic_default -// ) - it.load(bean?.departmentImg,true, R.drawable.ic_department_default) - } - holder?.getView(R.id.item_recycler_seek_doctor_department_name)?.let{ - //医院名称 - it.text=bean?.departmentName - } - holder?.getView(R.id.item_recycler_seek_doctor_number)?.let{ - var doctorNumber=bean?.doctorNum - var value="有${doctorNumber}名专家" - StringUtils.setSizeSpan(mContext, - it,value,1,1+(doctorNumber.toString().length),10,mContext.resources.getColor(R.color.text_green_BD),true) - } - holder?.getView(R.id.item_recycler_seek_doctor_department_hint)?.let{ - //医院重点科室 - it.text=bean?.hint - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDoctorAdapter.kt b/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDoctorAdapter.kt deleted file mode 100644 index 2b8f799..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/ui/activity/guidance/adapter/SeekDoctorDoctorAdapter.kt +++ /dev/null @@ -1,150 +0,0 @@ -package com.xjjk.healthyclients.ui.activity.guidance.adapter - -import android.content.Context -import android.view.View -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import com.allen.library.CircleImageView -import com.sw.healthyclients.utils.TextViewSpanUtil -import com.xjjk.healthyclients.R -import com.xjjk.healthyclients.adapter.common.CommonAdapter -import com.xjjk.healthyclients.adapter.common.ViewHolder -import com.xjjk.healthyclients.bean.guidance.DoctorChildBean -import com.xjjk.healthyclients.superfuntion.load -import com.xjjk.healthyclients.superfuntion.startSelectAppointmentTimeActivity -import com.xjjk.healthyclients.superfuntion.startSelectConsultantActivity -import com.xjjk.healthyclients.utils.ConstantUtils - - -class SeekDoctorDoctorAdapter(var mContext: Context, var layoutId: Int, var datas: ArrayList?) : CommonAdapter(mContext,layoutId,datas){ - override fun convert(holder: ViewHolder?, bean: DoctorChildBean?, position: Int) { - holder?.getView(R.id.item_recycle_seek_doctor_doctor_icon)?.let{ - //医生icon -// ImageLoader.loadImage( -// mContext, -// it, -// bean?.icon, -// R.drawable.ic_default -// ) - it.load(bean?.icon,defaultResId= R.drawable.ic_default_doctor_head_img) - } - holder?.getView(R.id.item_recycle_seek_doctor_doctor_name)?.let{ - //医生姓名 - it.text=bean?.name - } - holder?.getView(R.id.item_recycle_seek_doctor_guidance_root)?.let{ - if (bean?.doctorStatus=="3") { - holder?.getView(R.id.item_recycle_seek_doctor_video)?.let { view-> - view.setTextColor(mContext.resources.getColor(R.color.text_color_black_99)) - it.setOnClickListener {} - } - holder?.getView(R.id.item_recycle_seek_doctor_image_text)?.let { view-> - view.setTextColor(mContext.resources.getColor(R.color.text_color_black_99)) - it.setOnClickListener {} - } - }else{ -// it.visibility=View.VISIBLE - holder?.getView(R.id.item_recycle_seek_doctor_video)?.let { view-> - view.setTextColor(mContext.resources.getColor(R.color.text_green_BD)) - } - holder?.getView(R.id.item_recycle_seek_doctor_image_text)?.let { view-> - view.setTextColor(mContext.resources.getColor(R.color.text_green_BD)) - } - } - } - holder?.getView(R.id.item_recycle_seek_doctor_doctor_title)?.let{ - //医生名称 - it.text=bean?.title - } - holder?.getView(R.id.item_recycle_seek_doctor_doctor_hot)?.let{ - //医生名称 - if (!bean?.tfShowFire.isNullOrEmpty()){ - it.visibility=View.VISIBLE - }else{ - it.visibility=View.INVISIBLE - } - } - holder?.getView(R.id.item_recycle_seek_doctor_doctor_history)?.let{ - //医生历史咨询 - if (bean?.history.isNullOrEmpty()) { - it.visibility=View.INVISIBLE - }else{ - it.visibility=View.VISIBLE - } - } - holder?.getView(R.id.item_recycle_seek_doctor_doctor_tag)?.let{ - //医生所属医院tag - if (bean?.tag.isNullOrEmpty()) { - it.visibility=View.INVISIBLE - }else{ - it.visibility=View.VISIBLE - } - it.text=bean?.tag - } - holder?.getView(R.id.item_recycle_seek_doctor_doctor_hospital_name)?.let{ - //医生所属医院名字 - it.text=bean?.hospitalName - } - holder?.getView(R.id.item_recycle_seek_doctor_doctor_hint)?.let{ - //医生擅长描述 - it.text=bean?.hint - TextViewSpanUtil.toggleEllipsize(mContext,it,3,bean?.hint,"", R.color.red,false) - } - holder?.getView(R.id.item_recycle_seek_doctor_doctor_rate)?.let{ - //医生擅长描述 - var evaluate="0" - if (!bean?.evaluate.isNullOrEmpty()) { - evaluate= bean?.evaluate.toString() - } - if (evaluate == "null"){ - evaluate="0" - } - var guidanceNumber="0" - if (!bean?.guidanceNumber.isNullOrEmpty()) { - guidanceNumber= bean?.guidanceNumber.toString() - } - if (guidanceNumber=="null"){ - guidanceNumber="0" - } - var reply="0" - if (!bean?.reply.isNullOrEmpty()) { - reply= bean?.reply.toString() - } - if (reply=="null"){ - reply="0" - } - it.text="/综合评价:${evaluate} / 回复率:${reply} / 咨询量:${guidanceNumber}" - } - - holder?.getView(R.id.item_recycle_seek_doctor_image_text)?.let{ - if (bean?.doctorStatus!="3") { - it.setOnClickListener { - bean?.id?.let { it1 -> - startSelectConsultantActivity( - mContext, - ConstantUtils.ConsultType.IMAGE_TEXT_CONSULT, - it1 - ) - } - } - }else{ - it.setOnClickListener {} - } - } - - holder?.getView(R.id.item_recycle_seek_doctor_video)?.let{ - if (bean?.doctorStatus!="3") { - if (bean?.audioStatus == "1") { - it.setTextColor(mContext.resources.getColor(R.color.text_green_BD)) - it.setOnClickListener { - bean?.id?.let { it1 -> startSelectAppointmentTimeActivity(mContext, it1) } - } - } else { - it.setTextColor(mContext.resources.getColor(R.color.text_color_black_99)) - it.setOnClickListener {} - } - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/ConsultantManagerViewModel.kt b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/ConsultantManagerViewModel.kt index cd027bb..cc7d017 100644 --- a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/ConsultantManagerViewModel.kt +++ b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/ConsultantManagerViewModel.kt @@ -15,7 +15,7 @@ class ConsultantManagerViewModel: BaseViewModel() { var isRefreshing = MutableStateFlow(false) //如果需要下拉刷新监听此Flow更改刷新组件状态 var isLoadMoreEnd = MutableSharedFlow() var darkStyle = MutableStateFlow(false) - private val pageSize = Int.MAX_VALUE + private val pageSize = 1000 var pageIndex = 1 override fun init() { } @@ -23,7 +23,6 @@ class ConsultantManagerViewModel: BaseViewModel() { launch(tryBlock = { if (isRefresh) { isRefreshing.emit(true) - isLoadMoreEnd.emit(false) pageIndex = 1 } handleRequest(ConsultantManagerRepository.getConsultantManagerData(pageIndex, pageSize), successBlock = { diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/EmergencyViewModel.kt b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/EmergencyViewModel.kt index 720905e..69addea 100644 --- a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/EmergencyViewModel.kt +++ b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/EmergencyViewModel.kt @@ -1,6 +1,5 @@ package com.xjjk.healthyclients.ui.viewmodel -import InterventionRepository import com.xjjk.healthyclients.base.viewmodel.BaseViewModel import com.xjjk.healthyclients.bean.emergency.EmergencyGroupInfo import com.xjjk.healthyclients.bean.emergency.LocationResourceBean @@ -100,99 +99,99 @@ class EmergencyViewModel : BaseViewModel() { }) }) } - - /** - * 附近医疗点 - */ - fun nearbyResource(latitude: Double, longitude: Double, resourceNum: Int) { - launch( - { - handleRequest( - InterventionRepository.nearbyResource( - "", - longitude, - latitude, resourceNum - ), - successBlock = { - val mutableListOf = mutableListOf() - it.result?.forEach { - mutableListOf.add( - LocationResourceBean( - address = it.address, - mobile = it.mobile, - latitude = it.latitude, - longitude = it.longitude, - name = it.name, - type = "3", - ) - ) - } - markList.emit(mutableListOf) - }) - } - ) - } - - /** - * 附近救护车 - */ - fun nearbyAmbulance(latitude: Double, longitude: Double) { - launch( - { - handleRequest( - InterventionRepository.nearbyAmbulance(longitude, latitude), - successBlock = { - val mutableListOf = mutableListOf() - it.result?.forEach { - mutableListOf.add( - LocationResourceBean( - mobile = it.phone, - latitude = it.latitude, - longitude = it.longitude, - address = it.propagateArea.orEmptyDefault(), - name = it.belongName.orEmptyDefault(), - type = "5", - ) - ) - } - markList.emit(mutableListOf) - }) - } - ) - } - - /** - * 心血管-aed组网 - */ - fun getAedNetworkingData( - longitude: Double, - latitude: Double, - radiusRange: Int = 100000, - aedNum: String = "" - ) { - - launch( - { - handleRequest( - InterventionRepository.getAedNetworkingData( - longitude, latitude, radiusRange, aedNum - ), successBlock = { - val mutableListOf = mutableListOf() - it.result?.forEach { - mutableListOf.add( - LocationResourceBean( - address = it.installAddress.orEmptyDefault(), - mobile = it.chargeFirstMobile.orEmptyDefault(), - latitude = it.latitude, - longitude = it.longitude, - name = it.name.orEmptyDefault(), - type = "4", - ) - ) - } - markList.emit(mutableListOf) - }) - } - ) - } +// +// /** +// * 附近医疗点 +// */ +// fun nearbyResource(latitude: Double, longitude: Double, resourceNum: Int) { +// launch( +// { +// handleRequest( +// InterventionRepository.nearbyResource( +// "", +// longitude, +// latitude, resourceNum +// ), +// successBlock = { +// val mutableListOf = mutableListOf() +// it.result?.forEach { +// mutableListOf.add( +// LocationResourceBean( +// address = it.address, +// mobile = it.mobile, +// latitude = it.latitude, +// longitude = it.longitude, +// name = it.name, +// type = "3", +// ) +// ) +// } +// markList.emit(mutableListOf) +// }) +// } +// ) +// } +// +// /** +// * 附近救护车 +// */ +// fun nearbyAmbulance(latitude: Double, longitude: Double) { +// launch( +// { +// handleRequest( +// InterventionRepository.nearbyAmbulance(longitude, latitude), +// successBlock = { +// val mutableListOf = mutableListOf() +// it.result?.forEach { +// mutableListOf.add( +// LocationResourceBean( +// mobile = it.phone, +// latitude = it.latitude, +// longitude = it.longitude, +// address = it.propagateArea.orEmptyDefault(), +// name = it.belongName.orEmptyDefault(), +// type = "5", +// ) +// ) +// } +// markList.emit(mutableListOf) +// }) +// } +// ) +// } +// +// /** +// * 心血管-aed组网 +// */ +// fun getAedNetworkingData( +// longitude: Double, +// latitude: Double, +// radiusRange: Int = 100000, +// aedNum: String = "" +// ) { +// +// launch( +// { +// handleRequest( +// InterventionRepository.getAedNetworkingData( +// longitude, latitude, radiusRange, aedNum +// ), successBlock = { +// val mutableListOf = mutableListOf() +// it.result?.forEach { +// mutableListOf.add( +// LocationResourceBean( +// address = it.installAddress.orEmptyDefault(), +// mobile = it.chargeFirstMobile.orEmptyDefault(), +// latitude = it.latitude, +// longitude = it.longitude, +// name = it.name.orEmptyDefault(), +// type = "4", +// ) +// ) +// } +// markList.emit(mutableListOf) +// }) +// } +// ) +// } } \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/IMSelectArchivesViewModel.kt b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/IMSelectArchivesViewModel.kt new file mode 100644 index 0000000..2653350 --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/IMSelectArchivesViewModel.kt @@ -0,0 +1,31 @@ +package com.xjjk.healthyclients.ui.viewmodel + +import com.xjjk.healthyclients.base.viewmodel.BaseViewModel +import com.xjjk.healthyclients.bean.guidance.ArchivesBean +import com.xjjk.healthyclients.data.repository.GuidanceRepository +import com.xjjk.healthyclients.superfuntion.handleRequest +import com.xjjk.healthyclients.superfuntion.launch +import kotlinx.coroutines.flow.MutableStateFlow + +/** + * @author nanfeifei + * @time 2023/7/5 10:32 + * @description + */ +class IMSelectArchivesViewModel: BaseViewModel() { + var archivesBeanList = MutableStateFlow?>(null) + override fun init() { + + } + fun getArchivesList(memberId: String?){ + launch({ + handleRequest(GuidanceRepository.getArchivesList(memberId), successBlock = { + if (it.result.isNullOrEmpty()){ + archivesBeanList.emit(mutableListOf()) + }else{ + archivesBeanList.emit(it.result!!) + } + }) + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/MainViewModel.kt b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/MainViewModel.kt new file mode 100644 index 0000000..1295ddd --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/MainViewModel.kt @@ -0,0 +1,195 @@ +package com.xjjk.healthyclients.ui.viewmodel + +import android.app.ProgressDialog +import android.view.Window +import com.sw.healthyclients.data.local.DataStoreManager +import com.sw.healthyclients.utils.CustomActivityManager +import com.sw.healthyclients.view.LoadingDialog +import com.xjjk.healthyclients.base.viewmodel.BaseViewModel +import com.xjjk.healthyclients.bean.user.IMDoctorInfoBean +import com.xjjk.healthyclients.data.repository.CommonRepository +import com.xjjk.healthyclients.event.UserNoticeBean +import com.xjjk.healthyclients.retrofit.UrlConfig +import com.xjjk.healthyclients.superfuntion.handleRequest +import com.xjjk.healthyclients.superfuntion.launch +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.MutableStateFlow + +/** + * @author nanfeifei + * @time 2023/9/4 13:10 + * @description + */ +class MainViewModel : BaseViewModel() { + var noticeBean = MutableStateFlow(UserNoticeBean()) + var doctorInfo = MutableStateFlow(IMDoctorInfoBean()) + var tokenOverdue = MutableSharedFlow() + var timePrescription = MutableSharedFlow() + var selectTfHelper = MutableSharedFlow() + var submitNoticeChooseResult = MutableSharedFlow() + var imDialog: LoadingDialog? = null + override fun init() { +// getNoticeData() + checkTokenIsEffective() + } + + fun initIMDialog(){ + imDialog = LoadingDialog( + CustomActivityManager.getInstance().TopActivity(), + ProgressDialog.STYLE_SPINNER, "数据加载中" + ) + imDialog?.requestWindowFeature(Window.FEATURE_NO_TITLE) + imDialog?.setCanceledOnTouchOutside(false) + imDialog?.setCancelable(false) + imDialog?.setMessage("请稍后...") + } + + /** + * 首页用户弹窗 + */ + fun getNoticeData() { + launch( + { + handleRequest( + CommonRepository.selectUserNotice("2"), + successBlock = { + it.result?.let { result -> + noticeBean.emit(result) + } + }) + } + ) + } + + /** + * 监测token是否有效 + */ + fun checkTokenIsEffective() { + launch( + { + handleRequest( + CommonRepository.selectTokenExpire(DataStoreManager.getToken()), + successBlock = { + it.result?.let { result -> + tokenOverdue.emit(result) + } + }) + } + ) + } + + /** + * 首页弹窗用户选择内容提交 + */ + fun submitNoticeChooseItem(id: String, notShow: Int) { + launch( + { + handleRequest( + CommonRepository.chooseToDontShowUp(id, notShow), + successBlock = { + submitNoticeChooseResult.emit(true) + }) + } + ) + } + + /** + * 医生卡片时效校验 + */ + fun selectDoctorCardExpireTime(time: Long) { + imDialog?.show() + launch( + { + handleRequest( + CommonRepository.selectDoctorCardExpireTime(time), + successBlock = { + it.result?.let { it1 -> timePrescription.emit(it1) } + }, errorBlock = { + false + }) + }, finallyBlock = { + imDialog?.dismiss() + } + ) + } + + fun getAgreement(){ + launch({ + handleRequest(CommonRepository.getCommonSettingMenuList("qh_jump_url"), successBlock = { + it.result?.let { list -> + if (list != null) { + list?.let { + for (index in 0 until it.size){ + when(it[index].value){ + "1" -> { + //用户协议 + if (it[index].text.isNotEmpty()) { + DataStoreManager.saveUserAgreementUrl( + UrlConfig.getH5BaseUrl( + UrlConfig.baseUrlType)+ it[index].text) + } + } + "2" -> { + //隐私政策 + if (it[index].text.isNotEmpty()) { + DataStoreManager.savePrivacyAgreementUrl( + UrlConfig.getH5BaseUrl( + UrlConfig.baseUrlType)+ it[index].text) + } + } + "3" -> { + //相关法律说明 + if (it[index].text.isNotEmpty()) { + DataStoreManager.saveLawUrl( + UrlConfig.getH5BaseUrl( + UrlConfig.baseUrlType)+ it[index].text) + } + } + } + } + } + } + } + }) + },isAutoShowEmpty=true) + } + + /** + * 全科医生校验 + */ + fun selectTfHelper(id: String) { + imDialog?.show() + launch( + { + handleRequest( + CommonRepository.selectTfHelper(id), + successBlock = { + it.result?.let { it1 -> selectTfHelper.emit(it1) } + }, errorBlock = { + false + }) + }, finallyBlock = { + imDialog?.dismiss() + } + ) + } + + /** + * 获取全科医生信息 + */ + fun selectHelperInfoDesc(id: String) { + launch(showDialog=true, + { + handleRequest( + CommonRepository.selectHelperInfoDesc(id), + successBlock = { + it.result?.let { it1 -> doctorInfo.emit(it1) } + }, errorBlock = { + false + }) + }, finallyBlock = { + } + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/UserInfoSettingViewModel.kt b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/UserInfoSettingViewModel.kt index 80df3bb..be86c6a 100644 --- a/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/UserInfoSettingViewModel.kt +++ b/app/src/main/java/com/xjjk/healthyclients/ui/viewmodel/UserInfoSettingViewModel.kt @@ -1,18 +1,24 @@ package com.xjjk.healthyclients.ui.viewmodel import com.xjjk.healthyclients.base.viewmodel.BaseViewModel +import com.xjjk.healthyclients.bean.CommonSettingMenuBean import com.xjjk.healthyclients.bean.SelectUserInfoBean import com.xjjk.healthyclients.bean.user.SelectEmergencyContactListBean import com.xjjk.healthyclients.data.repository.CommonRepository +import com.xjjk.healthyclients.data.repository.ConsultantManagerRepository import com.xjjk.healthyclients.data.repository.GuidanceRepository import com.xjjk.healthyclients.superfuntion.handleRequest import com.xjjk.healthyclients.superfuntion.launch +import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow class UserInfoSettingViewModel : BaseViewModel() { var bean = MutableStateFlow(mutableListOf()) var userInfo = MutableStateFlow(SelectUserInfoBean()) + var relationList = MutableStateFlow(mutableListOf()) + var upState= MutableSharedFlow() + override fun init() { } @@ -52,4 +58,54 @@ class UserInfoSettingViewModel : BaseViewModel() { ) } + + /** + * 紧急联系人列表 + */ + fun getRelationList(){ + launch({ + handleRequest(ConsultantManagerRepository.getMemberRelationList(), successBlock = { + it.result?.let { it1 -> + relationList.emit(it1) + } + }) + }) + } + + /** + * 更新联系人 + */ + fun updateAndInsertEmergencyContact(bean: SelectEmergencyContactListBean){ + launch({ + handleRequest(CommonRepository.updateAndInsertEmergencyContact(bean), successBlock = { +// it.result?.let { it1 -> +// if (it1=="1") { +// upState.emit(true) +// }else{ +// upState.emit(false) +// } +// +// } + upState.emit(true) + }) + }) + } + /** + * 删除联系人 + */ + fun removeEmergencyContactList(id: String){ + launch({ + handleRequest(CommonRepository.removeEmergencyContactList(id), successBlock = { + it.result?.let { it1 -> + if (it1=="1") { + upState.emit(true) + }else{ + upState.emit(false) + } + + } + }) + }) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/utils/ConstantUtils.kt b/app/src/main/java/com/xjjk/healthyclients/utils/ConstantUtils.kt index 91f0e94..9b5d4d1 100644 --- a/app/src/main/java/com/xjjk/healthyclients/utils/ConstantUtils.kt +++ b/app/src/main/java/com/xjjk/healthyclients/utils/ConstantUtils.kt @@ -6,9 +6,9 @@ import kotlinx.android.parcel.Parcelize object ConstantUtils { const val mIsDebug = false const val mRSAKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmZfR/bA9X3vp86y1aEpvwzXJYKRRF1fLau2+05/ZtaITLpV8bhkmSf3neSy/Q9gAdvG75Fr73E+GWE+K5b0BpvIS1jDGo319+PpZR39SaZTKZ27XFXrosmJTZutN79t819HS1VseleunHAFgMVufE9U5jP6LGzl/wbkSy01GhzwIDAQAB" - var mCurrentLat = 34.327271 + var mCurrentLat = 43.793026 var mCheckToken = false - var mCurrentLon = 108.949845 + var mCurrentLon = 87.627704 var mNutritionMonitor = false var mIsCloseDialog = false var mPrivacy = "本平台由西安仁康信息科技有限公司开发和运维,平台深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则、目的明确原则、选择同意原则、最少够用原则、确保安全原则、主体参与原则、公开透明原则等。同时,我们承诺将采取相应的安全保护措施来保护您的个人信息。请在使用平台服务前,仔细阅读并了解本隐私权政策,我们将按照本政策收集、处理及披露您的信息。\n" + @@ -57,17 +57,17 @@ object ConstantUtils { "(14) 个人位置信息(包括精准定位信息、经纬度等);\n" + "(15) 其他平台基于为您提供服务需要而收集或汇总的您的信息。\n" + "三、我们如何收集和使用您的个人信息\n" + - "1. 您直接提供的信息:我们可能会收集您在蚁熊健康注册账号、申请或使用我们的服务时填写,通过现场交谈、电话、视频或其他联系方式与我们联系时所提供的信息,以及您在使用我们服务过程中产生的与您的交易和活动有关的信息。\n" + + "1. 您直接提供的信息:我们可能会收集您在健康油我注册账号、申请或使用我们的服务时填写,通过现场交谈、电话、视频或其他联系方式与我们联系时所提供的信息,以及您在使用我们服务过程中产生的与您的交易和活动有关的信息。\n" + "(1) 帮助您成为我们的一员\n" + "您需要向平台提供真实姓名、邮箱、有效身份证件(包括但不限于身份证)的号码,以便于我们进行实名认证。您可以修改和补充您的昵称、性别、生日、职级、职称、学历、亲属、紧急联系人、工作信息(单位部门)、婚姻状况、健康类型、兴趣爱好以及您的实名认证等一系列相关信息相关信息,这些信息均属于您的“账号信息”。您补充的账户信息将有助于我们为您提供与您信息更匹配的相关业务服务(急救协助、医院体检、健康知识推送等)。如果您不提供这些信息,可能会影响您对平台部分核心业务功能的正常使用,如咨询专家等,但不会影响您进行基本的浏览、搜索。如果您不提供这些信息,将会影响您使用平台的部分功能,如咨询专家,但不会影响您使用平台服务的基本浏览、搜索功能。在您主动注销账号时,我们将根据相关法律法规的要求尽快使其匿名或删除您的个人信息。\n" + "(2) 咨询专家\n" + "为便于您能够咨询专家,您需提供真实姓名、手机号、身份证号码、性别、出生日期、身高体重等信息。为更好地向您提供咨询服务解决您的问题,更加精准、快速地向您推荐医生,我们可能需要您在健康咨询时提供个人健康信息,例如:病症、患病时长、检验报告、体检报告、医院就诊信息、诊治情况、用药记录、以往病史、过敏信息、家族史、患病史等。如您不提供上述信息,将会影响您使用部分健康咨询等功能,但不影响您使用平台产品或服务的基本浏览、搜索功能。应急救援\n" + - "(1) 您实名成为蚁熊健康的用户后,若您或您的朋友发生了意外事件,你可以通过查看系统内的相关医疗资源,并向平台发起帮助请求。在此过程中,我们可能会通过您的基本信息和聊天功能获取您的手机号、您的紧急联系人姓名和联系 电话,位置、姓名、性别、年龄、健康状况、事故详情介绍的图文、音视频沟通的信息。搜索\n" + + "(1) 您实名成为健康油我的用户后,若您或您的朋友发生了意外事件,你可以通过查看系统内的相关医疗资源,并向平台发起帮助请求。在此过程中,我们可能会通过您的基本信息和聊天功能获取您的手机号、您的紧急联系人姓名和联系 电话,位置、姓名、性别、年龄、健康状况、事故详情介绍的图文、音视频沟通的信息。搜索\n" + "(3) 搜索\n" + "为了让您快速地找到您所需要的专家、知识文章、软件功能、医院等,我们可能会收集您使用我们的产品记录为您提供这些信息展示的最优方式。我们也会为了不断改进和优化上述的功能来使用您的上述个人信息。\n" + "您也可以通过搜索来精准地找到您所需要的专家、医院、系统功能。我们会保留您的搜索内容以方便您重复输入或为您展示与您搜索内容相关联的产品或服务。\n" + "(4) 应急救援\n" + - "您实名成为蚁熊健康的用户后,若您或您的朋友发生了意外事件,你可以通过查看系统内的相关医疗资源,并向平台发起帮助请求。在此过程中,我们可能会通过您的基本信息和聊天功能获取您的手机号、您的紧急联系人姓名和联系 电话,位置、姓名、性别、年龄、健康状况、事故详情介绍的图文、音视频沟通的信息。\n" + + "您实名成为健康油我的用户后,若您或您的朋友发生了意外事件,你可以通过查看系统内的相关医疗资源,并向平台发起帮助请求。在此过程中,我们可能会通过您的基本信息和聊天功能获取您的手机号、您的紧急联系人姓名和联系 电话,位置、姓名、性别、年龄、健康状况、事故详情介绍的图文、音视频沟通的信息。\n" + "(5) 大病就医(挂号)\n" + "为了帮您预约医院的专家,我们需要您在预约时提供个人基本信息:姓名、性别、年龄、预约医院、挂号类型、预约时间等基本信息;你可补充病况、就诊卡号、预约科室、医师来进一步享受更为准确的服务。\n" + "(6) 体检预约、体检报告查看、体检指标分析\n" + @@ -247,7 +247,7 @@ object ConstantUtils { "(5) 响应您的请求将导致您或其他个人、组织的合法权益受到严重损害的;\n" + "(6) 涉及商业秘密的。\n" + "九、我们如何处理未成年人的个人信息\n" + - "1.蚁熊健康非常重视对未成年人个人信息的保护。若您是18周岁以下的未成年人,在使用我们的产品与/或服务前,应事先取得您监护人的同意。蚁熊健康根据国家相关法律法规的规定保护未成年人的个人信息。\n" + + "1.健康油我非常重视对未成年人个人信息的保护。若您是18周岁以下的未成年人,在使用我们的产品与/或服务前,应事先取得您监护人的同意。健康油我根据国家相关法律法规的规定保护未成年人的个人信息。\n" + "2.我们不会主动直接向未成年人收集其个人信息。对于经监护人同意而收集未成年人个人信息的情况,我们只会在受到法律允许、监护人同意或者保护未成年人所必要的情况下使用、共享、转让或披露此信息。\n" + "3.如果有事实证明未成年人在未取得监护人同意的情况下注册使用了我们的产品与/或服务,我们会与相关监护人协商,并设法尽快删除相关个人信息。\n" + "十、本声明和政策如何更新\n" + diff --git a/app/src/main/java/com/xjjk/healthyclients/utils/IMInputActionSettingUtils.kt b/app/src/main/java/com/xjjk/healthyclients/utils/IMInputActionSettingUtils.kt index ab8f2b1..45207c4 100644 --- a/app/src/main/java/com/xjjk/healthyclients/utils/IMInputActionSettingUtils.kt +++ b/app/src/main/java/com/xjjk/healthyclients/utils/IMInputActionSettingUtils.kt @@ -2,6 +2,7 @@ package com.xjjk.healthyclients.utils import com.xjjk.healthyclients.retrofit.UrlConfig import com.tencent.qcloud.tuikit.tuichat.classicui.setting.InputActionSetting +import com.xjjk.healthyclients.BuildConfig object IMInputActionSettingUtils { /** @@ -9,9 +10,10 @@ object IMInputActionSettingUtils { */ fun createEmergencySetting(){ var inputActionSetting = InputActionSetting.createInstance() + inputActionSetting.packageName = BuildConfig.APPLICATION_ID inputActionSetting.CurrentResourceHost = UrlConfig.IMAGE_BASE_URL inputActionSetting.isDisableAudioCall = false - inputActionSetting.isDisableVideoCall = false + inputActionSetting.isDisableVideoCall = true inputActionSetting.isDisableArchives = true inputActionSetting.disableFinishName = true inputActionSetting.disableEvaluate = false @@ -24,9 +26,10 @@ object IMInputActionSettingUtils { */ fun createImageTextConsultSetting(isSelf: Boolean = false, disableSendMessage: Boolean = false, disableEvaluate: Boolean = false){ var inputActionSetting = InputActionSetting.createInstance() + inputActionSetting.packageName = BuildConfig.APPLICATION_ID inputActionSetting.CurrentResourceHost = UrlConfig.IMAGE_BASE_URL - inputActionSetting.isDisableAudioCall = true - inputActionSetting.isDisableVideoCall = true + inputActionSetting.isDisableAudioCall = false + inputActionSetting.isDisableVideoCall = false inputActionSetting.isDisableArchives = false inputActionSetting.disableFinishName = false inputActionSetting.disableEvaluate = disableEvaluate @@ -39,6 +42,7 @@ object IMInputActionSettingUtils { */ fun createAssistantSetting(){ var inputActionSetting = InputActionSetting.createInstance() + inputActionSetting.packageName = BuildConfig.APPLICATION_ID inputActionSetting.CurrentResourceHost = UrlConfig.IMAGE_BASE_URL inputActionSetting.isDisableAudioCall = false inputActionSetting.isDisableVideoCall = false @@ -54,6 +58,7 @@ object IMInputActionSettingUtils { */ fun createEmergencyLinkageSetting(){ var inputActionSetting = InputActionSetting.createInstance() + inputActionSetting.packageName = BuildConfig.APPLICATION_ID inputActionSetting.CurrentResourceHost = UrlConfig.IMAGE_BASE_URL inputActionSetting.isDisableAudioCall = false inputActionSetting.isDisableVideoCall = false diff --git a/app/src/main/java/com/xjjk/healthyclients/utils/MapUtils.java b/app/src/main/java/com/xjjk/healthyclients/utils/MapUtils.java index 9099cf2..f53dee2 100644 --- a/app/src/main/java/com/xjjk/healthyclients/utils/MapUtils.java +++ b/app/src/main/java/com/xjjk/healthyclients/utils/MapUtils.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.text.TextUtils; import androidx.annotation.DrawableRes; @@ -102,6 +103,9 @@ public class MapUtils { } public static @DrawableRes int getMarkerIcon(String type){ + if (TextUtils.isEmpty(type)) { + return R.drawable.ic_oil_hospital; + } switch (type){ case "1": { return R.drawable.ic_oil_hospital; @@ -187,7 +191,7 @@ public class MapUtils { double Hyp = Math.sqrt(X * X + Y * Y); double Lat = Math.atan2(Z, Hyp); Lon=Math.abs(Lon); - LatLng latLng=new LatLng(34.190432,108.873027); + LatLng latLng=new LatLng(43.793026,87.627704); DecimalFormat decimalFormat = new DecimalFormat("#0.#####"); String strLat = decimalFormat.format(Lat * 180 / Math.PI); String strLon = decimalFormat.format(Lon * 180 / Math.PI); diff --git a/app/src/main/java/com/xjjk/healthyclients/view/AppointmentInformationView.kt b/app/src/main/java/com/xjjk/healthyclients/view/AppointmentInformationView.kt index 4033035..81e92e6 100644 --- a/app/src/main/java/com/xjjk/healthyclients/view/AppointmentInformationView.kt +++ b/app/src/main/java/com/xjjk/healthyclients/view/AppointmentInformationView.kt @@ -336,7 +336,7 @@ class AppointmentInformationView : LinearLayout { } } - fun getFollowView(): ImageButton { - return mBinding.btnFollow - } +// fun getFollowView(): ImageButton { +// return mBinding.btnFollow +// } } \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/view/CustomFilterSearchView.kt b/app/src/main/java/com/xjjk/healthyclients/view/CustomFilterSearchView.kt deleted file mode 100644 index a0ae023..0000000 --- a/app/src/main/java/com/xjjk/healthyclients/view/CustomFilterSearchView.kt +++ /dev/null @@ -1,596 +0,0 @@ -package com.xjjk.healthyclients.view - -import android.content.Context -import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.View -import android.widget.RelativeLayout -import androidx.databinding.DataBindingUtil -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.xjjk.healthyclients.R -import com.xjjk.healthyclients.adapter.common.MultiItemTypeAdapter -import com.xjjk.healthyclients.bean.guidance.DepartListBean -import com.xjjk.healthyclients.bean.guidance.FilterSearchBean -import com.xjjk.healthyclients.bean.guidance.SickListBean -import com.xjjk.healthyclients.bean.guidance.selectDictListByNHDSRequestBean -import com.xjjk.healthyclients.databinding.CustomFilterSearchViewBinding -import com.xjjk.healthyclients.ui.activity.guidance.adapter.CustomFilterAdapter -import com.xjjk.healthyclients.ui.activity.guidance.adapter.FilterSearchDepartment2Adapter -import com.xjjk.healthyclients.ui.activity.guidance.adapter.SeekDoctorDepartment3Adapter -import com.xjjk.healthyclients.ui.activity.guidance.adapter.SeekDoctorSick3Adapter - -/** - * 切换医院时,科室和疾病的筛选条件,切换科室时,清空疾病的筛选条件 - */ -class CustomFilterSearchView : RelativeLayout { - - var mContext:Context?=null - var mBinding: CustomFilterSearchViewBinding - var mCustomFilterAdapter: CustomFilterAdapter?=null - var mHospitalList= arrayListOf() - var mDepartList= arrayListOf() - var mSickList= arrayListOf() - private var mSeekDoctorDepartmentAdapter2: FilterSearchDepartment2Adapter?=null - private var mSeekDoctorSick3Adapter: SeekDoctorSick3Adapter?=null - private var mSeekDoctorDepartmentAdapter3: SeekDoctorDepartment3Adapter?=null - private var mDepartmentListLeft=arrayListOf() //左侧列表 - private var mSickListLeft=arrayListOf() //左侧列表 - private var mDepartmentListRight=arrayListOf() //科室右侧列表 - private var mSickListRight=arrayListOf() //疾病右侧列表 - private var mSickAndDepartIndex=0 - - var mType=0 - var mType2=1 //1 好评 2 热度 3回复 - var bean= - selectDictListByNHDSRequestBean() - - var mClickListener:((type:Int,id:String) -> Unit?)? =null - - var mMethod: ((selectDictListByNHDSRequestBean) -> Unit?)? =null - constructor(context: Context?,attrs : AttributeSet?): super(context, attrs,0){ - mContext=context - mBinding = DataBindingUtil.inflate( - LayoutInflater.from(context), - R.layout.custom_filter_search_view, this,true) - initView() - } - - private fun initView() { - mType2=1 - bean.tfSort=mType.toString() - mMethod?.let { it(bean) } - refreshState() - mCustomFilterAdapter= CustomFilterAdapter(mContext, - R.layout.item_custom_filter,mType,mHospitalList){} - var manager=LinearLayoutManager(mContext,LinearLayoutManager.VERTICAL,false) - mBinding.customFilterSelectRv.layoutManager=manager - mBinding.customFilterSelectRv.adapter=mCustomFilterAdapter - mBinding.customFilterSelectRvRoot.setOnClickListener { } - //科室 - mSeekDoctorDepartmentAdapter2= FilterSearchDepartment2Adapter(mContext!!, - R.layout.item_recycle_seek_doctor_department_child2,mDepartmentListLeft) - val linearLayoutManager = LinearLayoutManager(mContext,LinearLayoutManager.VERTICAL,false) - mBinding.seekDoctorDepartmentListLeft.layoutManager = linearLayoutManager - mBinding.seekDoctorDepartmentListLeft.adapter = mSeekDoctorDepartmentAdapter2 - - mSeekDoctorSick3Adapter= SeekDoctorSick3Adapter(mContext!!, - R.layout.item_recycle_seek_doctor_department_child3,mSickListRight) - val linearLayoutManager2 = LinearLayoutManager(mContext,LinearLayoutManager.VERTICAL,false) - mBinding.seekDoctorDepartmentListRight.layoutManager = linearLayoutManager2 - mBinding.seekDoctorDepartmentListRight.adapter = mSeekDoctorSick3Adapter - - mSeekDoctorDepartmentAdapter3= SeekDoctorDepartment3Adapter(mContext!!, - R.layout.item_recycle_seek_doctor_department_child3,mDepartmentListRight) - val linearLayoutManager3 = LinearLayoutManager(mContext,LinearLayoutManager.VERTICAL,false) - mBinding.seekDoctorDepartmentListRight.layoutManager = linearLayoutManager3 - mBinding.seekDoctorDepartmentListRight.adapter = mSeekDoctorDepartmentAdapter3 - - - //筛选头点击 - mBinding.customFilterSelectHospital.setOnClickListener { - if (mType==0) { - if (mBinding.customFilterSelectRvRoot.visibility==View.VISIBLE){ - mBinding.customFilterSelectRvRoot.visibility=View.GONE -// val drawableLeft = resources.getDrawable(R.drawable.common_filter_arrow_down) -// mBinding.customFilterSelectHospital.setCompoundDrawablesWithIntrinsicBounds(null, -// null, drawableLeft, null) -// mBinding.customFilterSelectHospital.setCompoundDrawablePadding(4) - setfilterTitleIcon(0,1) - }else{ - mBinding.customFilterSelectRvRoot.visibility=View.VISIBLE - mBinding.customFilterSelectRv.visibility=View.VISIBLE - mBinding.customFilterSelectDepart.visibility=View.GONE -// val drawableLeft = resources.getDrawable(R.drawable.common_filter_arrow_up) -// mBinding.customFilterSelectHospital.setCompoundDrawablesWithIntrinsicBounds(null, -// null, drawableLeft, null) -// mBinding.customFilterSelectHospital.setCompoundDrawablePadding(4) - setfilterTitleIcon(0,0) - } - }else{ -// if (mBinding.customFilterSelectRvRoot.visibility==View.GONE){ - mBinding.customFilterSelectRvRoot.visibility=View.VISIBLE - mBinding.customFilterSelectRv.visibility=View.VISIBLE - mBinding.customFilterSelectDepart.visibility=View.GONE -// } - setfilterTitleIcon(0,0) - } - mType=0 - mCustomFilterAdapter?.setDataType(0) - mCustomFilterAdapter?.setmDatas(mHospitalList) - mCustomFilterAdapter?.notifyDataSetChanged() - } - mBinding.customFilterSelectDepartment.setOnClickListener { - if(mDepartmentListLeft.size==0){ - return@setOnClickListener - } - if (mType==1) { - if (mBinding.customFilterSelectRvRoot.visibility==View.VISIBLE){ - mBinding.customFilterSelectRvRoot.visibility=View.GONE -// val drawableLeft = resources.getDrawable(R.drawable.common_filter_arrow_down) -// mBinding.customFilterSelectDepartment.setCompoundDrawablesWithIntrinsicBounds(null, -// null, drawableLeft, null) -// mBinding.customFilterSelectDepartment.setCompoundDrawablePadding(4) - setfilterTitleIcon(1,1) - }else{ - mBinding.customFilterSelectRvRoot.visibility=View.VISIBLE - mBinding.customFilterSelectRv.visibility=View.GONE - mBinding.customFilterSelectDepart.visibility=View.VISIBLE -// val drawableLeft = resources.getDrawable(R.drawable.common_filter_arrow_up) -// mBinding.customFilterSelectDepartment.setCompoundDrawablesWithIntrinsicBounds(null, -// null, drawableLeft, null) -// mBinding.customFilterSelectDepartment.setCompoundDrawablePadding(4) - setfilterTitleIcon(1,0) - } - }else{ -// if (mBinding.customFilterSelectRvRoot.visibility==View.GONE){ - mBinding.customFilterSelectRvRoot.visibility=View.VISIBLE - mBinding.customFilterSelectRv.visibility=View.GONE - mBinding.customFilterSelectDepart.visibility=View.VISIBLE -// val drawableLeft = resources.getDrawable(R.drawable.common_filter_arrow_up) -// mBinding.customFilterSelectDepartment.setCompoundDrawablesWithIntrinsicBounds(null, -// null, drawableLeft, null) -// mBinding.customFilterSelectDepartment.setCompoundDrawablePadding(4) - setfilterTitleIcon(1,0) -// } - } - mBinding.customFilterSelectRv.visibility=View.GONE - - mType=1 - mCustomFilterAdapter?.setDataType(1) - mSeekDoctorDepartmentAdapter2?.setmDatas(mDepartmentListLeft) - mSeekDoctorDepartmentAdapter3?.setmDatas(mDepartmentListRight) - mBinding.seekDoctorDepartmentListRight.adapter = mSeekDoctorDepartmentAdapter3 - if (mDepartmentListRight.size==0) { - if(mDepartmentListLeft.size>0){ - mClickListener?.let { - if(mSickAndDepartIndex0&&mSickAndDepartIndex { - var name=mHospitalList[position].hospitalName - mBinding.customFilterSelectHospital.text=name - if (name=="全部医院") { - bean.hospitalId="" - bean.isSelectHospital=true - }else{ - bean.hospitalId=mHospitalList[position].hospitalId - bean.isSelectHospital=false - } - mMethod?.let { it(bean) } - } - 1 -> { - mBinding.customFilterSelectDepartment.text=mDepartList[position].departmentName - bean.departmentId=mDepartList[position].departmentid - mMethod?.let { it(bean) } - } - 2 -> { - mBinding.customFilterSelectSick.text=mSickList[position].sicksName - bean.sickId=mSickList[position].sickId - mMethod?.let { it(bean) } - } - } - mBinding.customFilterSelectRvRoot.visibility=View.GONE - setfilterTitleIcon(0,1) - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - mSeekDoctorDepartmentAdapter3?.setOnItemClickListener(object : - MultiItemTypeAdapter.OnItemClickListener { - override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { - var id=mDepartmentListLeft[mSickAndDepartIndex].id - if (position==0&&id=="1") { - bean.departmentId="" - mBinding.customFilterSelectDepartment.text=mDepartmentListLeft[mSickAndDepartIndex].departmentName - }else{ - var name=mDepartmentListRight[position].departmentName - if (name.contains("全部")){ - name=mDepartmentListLeft[mSickAndDepartIndex].departmentName - } - mBinding.customFilterSelectDepartment.text=name - bean.departmentId=mDepartmentListRight[position].id - } - - mMethod?.let { it(bean) } - mBinding.customFilterSelectRvRoot.visibility=View.GONE - setfilterTitleIcon(1,1) - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - mSeekDoctorSick3Adapter?.setOnItemClickListener(object : - MultiItemTypeAdapter.OnItemClickListener { - override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { - var id=mSickListLeft[mSickAndDepartIndex].id - if (position==0&&id=="0") { - bean.sickId="" - mBinding.customFilterSelectSick.text=mSickListLeft[mSickAndDepartIndex].departmentName - }else{ - bean.sickId=mSickListRight[position].id - mBinding.customFilterSelectSick.text=mSickListRight[position].sicksName - } - - mMethod?.let { it(bean) } - mBinding.customFilterSelectRvRoot.visibility=View.GONE - setfilterTitleIcon(2,1) - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - mSeekDoctorDepartmentAdapter2?.setOnItemClickListener(object : - MultiItemTypeAdapter.OnItemClickListener { - override fun onItemClick(view: View?, holder: RecyclerView.ViewHolder?, position: Int) { - mSickAndDepartIndex=position - when(mType){ - 1 -> { - //科室 -// mBinding.customFilterSelectDepartment.text=mDepartList[position].departmentName -// bean.departmentId=mDepartList[position].departmentid -// mMethod?.let { it(bean) } - for (index in 0 until mDepartmentListLeft.size){ - if (index==position) { - mDepartmentListLeft[index].isSelect=true - }else{ - mDepartmentListLeft[index].isSelect=false - } - } - mSeekDoctorDepartmentAdapter2?.notifyDataSetChanged() - mClickListener?.let{ - it(0,mDepartmentListLeft[position].id) - } - } - 2 -> { - //疾病 -// mBinding.customFilterSelectSick.text=mSickList[position].sicksName -// bean.sickId=mSickList[position].sickId -// mMethod?.let { it(bean) } - for (index in 0 until mSickListLeft.size){ - if (index==position) { - mSickListLeft[index].isSelect=true - }else{ - mSickListLeft[index].isSelect=false - } - } - mSeekDoctorDepartmentAdapter2?.notifyDataSetChanged() - mClickListener?.let{ - it(1,mSickListLeft[position].id) - } - } - } -// mBinding.customFilterSelectRvRoot.visibility=View.GONE - } - - override fun onItemLongClick( - view: View?, - holder: RecyclerView.ViewHolder?, - position: Int - ): Boolean { - return false - } - }) - } - - /** - * type 0 医院 1科室 2疾病 - * type2 0 上 1下 - */ - fun setfilterTitleIcon(type:Int,tyep2:Int){ - val down = resources.getDrawable(R.drawable.common_filter_arrow_down) - val up = resources.getDrawable(R.drawable.common_filter_arrow_up) - when(type){ - 0 -> { - if(tyep2==0){ - mBinding.customFilterSelectHospital.setCompoundDrawablesWithIntrinsicBounds(null, - null, up, null) - }else{ - mBinding.customFilterSelectHospital.setCompoundDrawablesWithIntrinsicBounds(null, - null, down, null) - } - mContext?.let{ - if (mBinding.customFilterSelectHospital.text.toString()!="全部医院") { - mBinding.customFilterSelectHospital.setTextColor(it.resources.getColor(R.color.text_green_BD)) - }else{ - mBinding.customFilterSelectHospital.setTextColor(it.resources.getColor(R.color.text_black_33)) - } - } - - mBinding.customFilterSelectHospital.setCompoundDrawablePadding(4) - mBinding.customFilterSelectDepartment.setCompoundDrawablesWithIntrinsicBounds(null, - null, down, null) - mBinding.customFilterSelectDepartment.setCompoundDrawablePadding(4) - mBinding.customFilterSelectSick.setCompoundDrawablesWithIntrinsicBounds(null, - null, down, null) - mBinding.customFilterSelectSick.setCompoundDrawablePadding(4) - - } - 1 -> { - if(tyep2==0){ - mBinding.customFilterSelectDepartment.setCompoundDrawablesWithIntrinsicBounds(null, - null, up, null) - }else{ - mBinding.customFilterSelectDepartment.setCompoundDrawablesWithIntrinsicBounds(null, - null, down, null) - } - mContext?.let{ - if (mBinding.customFilterSelectDepartment.text.toString()!="全部科室") { - mBinding.customFilterSelectDepartment.setTextColor(it.resources.getColor(R.color.text_green_BD)) - }else{ - mBinding.customFilterSelectDepartment.setTextColor(it.resources.getColor(R.color.text_black_33)) - } - } - mBinding.customFilterSelectDepartment.setCompoundDrawablePadding(4) - - mBinding.customFilterSelectHospital.setCompoundDrawablePadding(4) - mBinding.customFilterSelectHospital.setCompoundDrawablesWithIntrinsicBounds(null, - null, down, null) - - mBinding.customFilterSelectSick.setCompoundDrawablesWithIntrinsicBounds(null, - null, down, null) - mBinding.customFilterSelectSick.setCompoundDrawablePadding(4) - } - 2 -> { - if(tyep2==0){ - mBinding.customFilterSelectSick.setCompoundDrawablesWithIntrinsicBounds(null, - null, up, null) - }else{ - mBinding.customFilterSelectSick.setCompoundDrawablesWithIntrinsicBounds(null, - null, down, null) - } - mContext?.let{ - if (mBinding.customFilterSelectSick.text.toString()!="全部疾病") { - mBinding.customFilterSelectSick.setTextColor(it.resources.getColor(R.color.text_green_BD)) - }else{ - mBinding.customFilterSelectSick.setTextColor(it.resources.getColor(R.color.text_black_33)) - } - } - mBinding.customFilterSelectSick.setCompoundDrawablePadding(4) - - mBinding.customFilterSelectHospital.setCompoundDrawablePadding(4) - mBinding.customFilterSelectHospital.setCompoundDrawablesWithIntrinsicBounds(null, - null, down, null) - - - mBinding.customFilterSelectDepartment.setCompoundDrawablesWithIntrinsicBounds(null, - null, down, null) - mBinding.customFilterSelectDepartment.setCompoundDrawablePadding(4) - - } - } - } - - fun setLeftData(list:ArrayList){ - mDepartmentListLeft.clear() - mDepartmentListLeft.addAll(list) - } - - fun setSickLeftData(list:ArrayList){ - mSickListLeft.clear() - mSickListLeft.addAll(list) - } - - fun setSickRightData(list:ArrayList){ - mSickListRight.clear() - mSickListRight.addAll(list) - mSeekDoctorSick3Adapter?.notifyDataSetChanged() - } - - fun setDepartRightData(list:ArrayList){ - mDepartmentListRight.clear() - mDepartmentListRight.addAll(list) - mSeekDoctorDepartmentAdapter3?.notifyDataSetChanged() - } - - fun setHospitalData(list:ArrayList){ - mHospitalList.clear() - mHospitalList.addAll(list) - } - - fun setDepartData(list:ArrayList){ - mDepartList.clear() - mDepartList.addAll(list) - } - - fun setSickData(list:ArrayList){ - mSickList.clear() - mSickList.addAll(list) - } - - fun hideHospitalFilter(){ - mBinding.customFilterSelectHospital.visibility=View.GONE - } - - fun refreshState(){ - when (mType2) { - 1 -> { - mContext?.let{ - mBinding.customFilterSelectMark.setTextColor(it.resources.getColor(R.color.text_green_BD)) - mBinding.customFilterSelectHot.setTextColor(it.resources.getColor(R.color.text_black_33)) - mBinding.customFilterSelectReply.setTextColor(it.resources.getColor(R.color.text_black_33)) - } - } - 2 -> { - mContext?.let{ - mBinding.customFilterSelectMark.setTextColor(it.resources.getColor(R.color.text_black_33)) - mBinding.customFilterSelectHot.setTextColor(it.resources.getColor(R.color.text_green_BD)) - mBinding.customFilterSelectReply.setTextColor(it.resources.getColor(R.color.text_black_33)) - } - } - 3 -> { - mContext?.let{ - mBinding.customFilterSelectMark.setTextColor(it.resources.getColor(R.color.text_black_33)) - mBinding.customFilterSelectHot.setTextColor(it.resources.getColor(R.color.text_black_33)) - mBinding.customFilterSelectReply.setTextColor(it.resources.getColor(R.color.text_green_BD)) - } - } - else -> {} - } - } - - fun setFilterListener( method: (bean: selectDictListByNHDSRequestBean) -> Unit){ - mMethod=method - } - fun setDoubleListListener( method: ((type:Int,id:String) -> Unit?)){ - mClickListener=method - } - - fun setDataBean(beans: selectDictListByNHDSRequestBean){ - bean=beans - } - - fun setDepartText(text:String,id:String=""){ - mBinding.customFilterSelectDepartment.text=text - mContext?.let { - mBinding.customFilterSelectDepartment.setTextColor(it.resources.getColor(R.color.text_green_BD)) - } - } - fun setDepartResettingText(text:String){ - mBinding.customFilterSelectDepartment.text=text - mContext?.let { - mBinding.customFilterSelectDepartment.setTextColor(it.resources.getColor(R.color.text_black_33)) - } - } - - fun setSickResettingText(text:String){ - mBinding.customFilterSelectSick.text=text - mContext?.let { - mBinding.customFilterSelectSick.setTextColor(it.resources.getColor(R.color.text_black_33)) - } - } - - fun setSickText(text:String,id:String){ - mBinding.customFilterSelectSick.text=text - mContext?.let { - mBinding.customFilterSelectSick.setTextColor(it.resources.getColor(R.color.text_green_BD)) - } - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/view/DoctorBaseInfoView.kt b/app/src/main/java/com/xjjk/healthyclients/view/DoctorBaseInfoView.kt index 43a2d1e..46660bb 100644 --- a/app/src/main/java/com/xjjk/healthyclients/view/DoctorBaseInfoView.kt +++ b/app/src/main/java/com/xjjk/healthyclients/view/DoctorBaseInfoView.kt @@ -54,7 +54,7 @@ class DoctorBaseInfoView: LinearLayout { } } - fun getFollowView(): ImageButton { - return mBinding.btnFollow - } +// fun getFollowView(): ImageButton { +// return mBinding.btnFollow +// } } \ No newline at end of file diff --git a/app/src/main/java/com/xjjk/healthyclients/view/FuntionBlurbDialog.kt b/app/src/main/java/com/xjjk/healthyclients/view/FuntionBlurbDialog.kt new file mode 100644 index 0000000..7b6db90 --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/view/FuntionBlurbDialog.kt @@ -0,0 +1,101 @@ +package com.xjjk.healthyclients.view + +import android.app.AlertDialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Build +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.widget.LinearLayout +import androidx.databinding.DataBindingUtil +import com.xjjk.healthyclients.R +import com.xjjk.healthyclients.databinding.DialogFuntionBlurbViewBinding +import com.xjjk.healthyclients.superfuntion.toHtml + +/** + * 首页 功能简介弹窗 + */ +open class FuntionBlurbDialog constructor(context: Context +) : AlertDialog(context) { + lateinit var mOnAffirmClickListener: OnAffirmClickListener + protected lateinit var binding: DialogFuntionBlurbViewBinding + init { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + create() + } else { + onCreate(null) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = DataBindingUtil.inflate(LayoutInflater.from(context), + R.layout.dialog_funtion_blurb_view, null, false) + setContentView(binding.root) + window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))//设置dialog背景透明 + window?.setLayout(context.resources.displayMetrics.widthPixels * 28/30, LinearLayout.LayoutParams.WRAP_CONTENT);//设置对话框大小 + binding.dialogConfirm7DayNoRemindLl.setOnClickListener{ + binding.dialogConfirm7DayNoRemindIv.setImageResource(R.drawable.ic_marital_state_select) + mOnAffirmClickListener?.onAffirmClick(0,this@FuntionBlurbDialog) +// this.cancel() + } + binding.dialogConfirm1MonthNoRemindLl.setOnClickListener{ + binding.dialogConfirm1MonthNoRemindIv.setImageResource(R.drawable.ic_marital_state_select) + mOnAffirmClickListener?.onAffirmClick(1,this@FuntionBlurbDialog) +// this.cancel() + } + binding.dialogConfirm6MonthNoRemindLl.setOnClickListener{ + mOnAffirmClickListener?.onAffirmClick(2,this@FuntionBlurbDialog) + binding.dialogConfirm6MonthNoRemindIv.setImageResource(R.drawable.ic_marital_state_select) +// this.cancel() + } + binding.dialogConfirmNoRemindLl.setOnClickListener{ + mOnAffirmClickListener?.onAffirmClick(3,this@FuntionBlurbDialog) + binding.dialogConfirmNoRemindIv.setImageResource(R.drawable.ic_marital_state_select) +// this.cancel() + } + binding.dialogConfirmClose.setOnClickListener{ +// mOnAffirmClickListener?.onAffirmClick(this@FuntionBlurbDialog) + this.cancel() + } +// binding.dialogConfirmCloseRoot.setOnClickListener{ +// mOnAffirmClickListener?.onCancelClick(this@FuntionBlurbDialog) +// this.cancel() +// } +// +// binding.dialogConfirmLlUnmarried.setOnClickListener { +// setMaritalState(0) +// } +// +// binding.dialogConfirmLlMarried.setOnClickListener { +// setMaritalState(1) +// } + setCancelable(false) + + } + + fun setOnAffirmClickListener(onAffirmClickListener: OnAffirmClickListener): FuntionBlurbDialog{ + this.mOnAffirmClickListener = onAffirmClickListener + return this + } + interface OnAffirmClickListener{ + fun onAffirmClick(type:Int,viewDialog: FuntionBlurbDialog) + } + + fun setContent(string: String){ + if (binding!=null) { + binding.dialogContent.text=string.toHtml() + } + } + + fun setTitle(string: String){ + if (binding!=null) { + binding.dialogTitle.text=string + } + } + + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/ic_select_location.png b/app/src/main/res/drawable-xxhdpi/ic_select_location.png new file mode 100644 index 0000000000000000000000000000000000000000..3ebaf34b23dc3df2259a8477aff9940ba61f09b6 GIT binary patch literal 1161 zcmV;41a|w0P)p@#aPJrXUb6Dv!hmf-lrW7D?7@)R&nb6_!9Sz)p0BXkK;pJT7amm z^kR3ap&`u-tioI9DNs~adQuIm8g*!7;9g->xKP+4XgZI22IgR=a{u$S^az^f)Ly7H zFdpw~?@AL(ub^$z5?gEFY0T@Cq6p?;&B%t424>)ej>?JSc_Vi0kp|YgFh4rA^kPHx zMb*F*JXXNq1H#(9T*yc#3VX<$v~73VCohi*nuiT6$E2Kt_F*oT3M@$M8TJGnixEWrPfKDsIa$(0U;O%gQDprG7PX-ual3 z;4X3bJbWZhe3gwtt`$QCixMo19AH4$H}bMZ{EfXJ5zeqN?8foP*pVE^2a&O}6U>YZ z?u(2oa;#YirbPzti;Szs{>Zp#2_{Dd{~8%rk6$9=CdX7Is!YfcTNDF{uv5k`y+9$c zW1UX$TV(Lfk#Y4{5E=J(qP6Y69%EJvGO#!@?r0(;S}`oe)se9yxhfqihQo*5!L1Bp;29*P`b3D!l%N@JHq#tz}r>P>twhlp3inOK*`#&QrRtNXxvIR@%+ zE~{)MEt#42-6&t_W*1b_FF2+MCGNbZvH>A6+auKePo(Wv3i*)}0pDdV2#7dE|Z%{sMmr0f$89GzU9z830LW7bex zJrf@lo`cvRY~$_XES|&d_@(ajm#GNOq4|}Y|wZfwYKW81JQqbcz(}c%u77AZx+})txC-_!41@0AJP#C5t1GO}I zM`Eks4XF$b#hxbXGwJh3Xky^(o$nMnU!Ka`1wq$9*>nw*P1iu#bPbeE*Ff2H4U|pS zK-qK+lug$_*>nw*P1iu#bPbeEyA1r*Vq0$7Wnf30wzu0cQJ&vYHe;Po$X$`X-XZ*O bp>X~OkNv!USOB>|00000NkvXXu0mjf%dZ{+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_user_contacts.png b/app/src/main/res/drawable-xxhdpi/ic_user_contacts.png new file mode 100644 index 0000000000000000000000000000000000000000..94b019ad6e7416461020c29e8bb8426abd8100bd GIT binary patch literal 2434 zcmV-|34Qj7P)Px;JV``BRA@uRSq*Sh)fGPH-nW|&{+e_`Rn*q8AmdP4i)ayH*4_8A*^+>$iydn_ z)uOFBwa)ZU%TGa|!Z_oM{c#k5YHg>*9S0<7HhJ%Dl9p1S76+~UaV)WprG=qDsFFzb zy?eT6^WM6N$?n?#a%VEhBJbiHL70 zrH&!uULiy}91b6xGiT1p)vH&lGccJK#jz-e#bO^t#HEOMFA>d@Qi4*0Scqs)F%GKc z-`?Jz5pg>rZZ=Kx?XlSPWhw?8jYgx0xFu)&VgS&Jjr&0T|M?G4bcUboC?Y;$S=QrY z1zr(o!!W)grTm%WIK}qZwS54<-un*#{LkAQ4**jE;8Fk>2LQqs^4`o^P1Dw=)9KTd zf)5PZFpP%*V5RRpAq2Rt`xYWTrSoC5&YBjT5&l+#?- z%^&gPx4W*pw7a`|h!@H|L?F=dc>FG<)TUv8e>yNQux8h;UH@e&mobEiL}H@jIBSXM z{sK1<`3^i`+xC6sfDWNyxx=woY<@T#{#`bkWnlb}SwviCSr&V~;uVX< zVUH^JSeErNGaEPoa2NMw{3fGC7{ZkjYJ|BheDy3`E7dH zw8OHj#&U9{KyML3-09T~N5kRpthTnc!{roKvd{PC`0?X!BH~3JJ^o;t=Dcz`N^!bH zO4;OrK3rQ{J1vz;y<1LUCHu)_Qug-t9^j&jK@-tywrzi^oQ_hSeqIQXJeQuHJ9qB5 znwpx|a|PHX9z8OaW$9xE9gRkx&@}BH5A<f9+Cr-Qp02g={ zajR|HUoEF&R8Jd*kwnDjJkib6s8C*Hfv~V3~FnmSGrc0ALk|RS$GSCX?ZZD7i)jJ#XH;iPhEBHX>f* zX*i{6+RXO$_J5XB8f3qrp<%pIY7YST7q9!&sZ*cdvu96#Ir);cM=Tawg^278zkT|Z zWm(({p7GLkeYp@~T~V91Jd?@%Fo@!kprg^~R3XGZuLH@y!W{lJrfKF=?^u_v>x(r_ z+u=A)zT73EV?qesvaAC^be3%b;_>*GbKN%A9R+=exZJX=KwcRRLf7@10bmmV)cJef zCI3Yb!1=cxd%|xJk{wlAfL(5e|p7s;a8- zQc4{WHwqyxRZ96C5Fcv|g+jMf+S~>L&Dy=}^|TP;i^FFdN~uGL*uxz;5gigjkWz|g zBV5*AA%wVsW%$P*GZ4{_`}_Ns4{wHpcsnp?R_1v;1^}F7c$ze1dG&+eg8&@qOkmKFNTgayIhQLxBD#I720gh=nx;K>^5n_=LE`cUoD;;jVHit@=sqC? zd$}+ICzAtEk@761Sj_cJ^S70eRR zdx+Q>3WdIwPN)AB1pKJ+Sk|DF_w!n68PD(XNT(R>pzptW;bwHlv3W2Yqbg$9xYn*F;K)2 z=94^#%Ey1g{ZKbKHUuuCwYDOK|TGo0D8fK z1($_Fp`N0Q)t{^I5|(BC_DlebMV4;7@p5q7mjIw}Sqq?vdJ3R*U1uKO;L`#TH<+gR z&{&L~4H;V4WPuR+5PBe&#wwi$t?POO0NQwB@5RwS*|yEY@bk84(V~k$K^Gu!+UT4G=%#(W4JQ-hiz;{)mQQe3uJ!FU<7{A?BN=`P#V#O$!%a z2dJI`qDugg$@(fMFl=o-L`_Ss2XJ2ipech~768im3AX;`8+i&FhQUcA>UsL#f zso!TZnfd1ot*4lpn>T=v--DuNxnPsC9)JC1x^glhdIdCjGw#??NO0_F6A=v-%9V)^ zT9&o(Ljb)M0Ph$QgNGYsO1N|YP&F}Sinp<$q2XGk)CxpAVp-O*a}7A}oP~>4g2adO z9vykP0GI|hdkc>6MK^G}bv7S{l8Jig3w1+CURj_BdzJ&3a!mmIIkxWP&l)4H^8z~W z?Ila5fa81z2pWK3G6<0ZMQu=1wHH&VlJmU(1I}Uc4Dfe)(EtDd07*qoM6N<$f|cQ< A#Q*>R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/main_home_tab_emergency_normal.jpg b/app/src/main/res/drawable-xxhdpi/main_home_tab_emergency_normal.jpg index 1d5bf7b7a6e82a1024e509806b48a6d655abd114..9b2681fb358be316f85b2d571a79a8c6cbc67481 100644 GIT binary patch literal 1528 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 diff --git a/app/src/main/res/drawable-xxhdpi/main_home_tab_emergency_selected.jpg b/app/src/main/res/drawable-xxhdpi/main_home_tab_emergency_selected.jpg index bad3f73e45b890c71c5213fe24aa8e31ee8b3df0..7f822ce7317dfc078e4ad825973a096943b0268d 100644 GIT binary patch literal 1546 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 literal 2246 zcmbtU2~?BE7M>(PNI*g`2qMr3K>}Kk(1(hkgcM>T7)U@1ih_ioECE757Avc?xBvoS zi6~JK3Mf`1o02FmqGhQpmWWtH(m&F7>^tw+bKdElGc(`Z`^}v@b7w~J zL?Hv(bXS@yfWZKOK?NvAU{7ci$^j21!|~Ae_tRF{#e@Z+v|5NZIlX zr7a*ZI#StxMj*d$2bJCd==<_BoWD||*g?^O5aBgc2|Q?VC|DeXaly-&sKf`Cv4avH z;Yaczj)xNSyqFXSvms0j{u4g_m z8~|o309fGzz)CRy=)E6pQ1hAC@Q}$6iYo#t!5|C-0X(1qE(iox5F&w%zy{bUq<{jY z^Y4k$$=~w;%~o^(tUB-lUI-W#z_Bm{7N)ojjG^O305}}+pUnb*R7a_*!QcoLG-S8a z1~3Ey0YjkF5wMROr3I*B)sQ-C)mPf+n`|O`dPfTya9;)R^XmHsbV*UR&^(;-ZvVF^ zwb=jFN`NNh8IDC@!FKRr(SwLXtHM*9M9Uy;Ae3^5m1RM6*73Stm44X*VMh1t09s{v zWag2iYYw4I_Ted=S@u(2`DH(;&-6vZ0NRQ2?)7mxPLUfTP4R3GCn5D{6O#5!Qk>Yb z-@5TPw8pU&qhS*$mIhuxA)WK}#Rq3P$1P+Kt(Q(b7AE;g*EA0WT?moonHcn+Sx4$# zy|X$v$FN?f%3lG7^No6!Lo*B-k%!fG92<)*x=-}XsW6KFIXzj2rp5<$rZr7rf{z^7_bshP$ke7E z$mHyIerm3&cG)#@C>}VsLnus_^XR56zsKNxDl}ge>!1SDe7y;-N5FrpE}Gujy*W zN{@dTzBfikd+QS`qFD<8cDMVVp7M;N%t+paQ)9qfnFDff%y4_%)Q59>Li@^ezgwwg zY2R)$`VQVlsoCfkX7P0Z%wMSaZopo;Z)UfMD@A3ZPrO+4mzc=kZ(WhgEM!;3m;JiM zcQ9_OgOe(mviecN-x=;VlgXL5lAm8`$%J3(Ai$ZoywC5#%rPHOt4%w^-y{Ql1mJ@> z*rdoK()XnM&~^8^_wLgxZB4cvCtSXr+SpHqbrxpr@TI*}-)36lqL#$v^n^Gzmc*!) z#Co;aGW3cH_18}ojOgVfd!O8;yOL@*%VH+T)|2yxIMejg<#RuzRFGq>nTe|Bf z5&2V|sQ?y#Lqkf>*1y=-F7O(obL`6+pjW&Cz-h|ldUpM-enI@lqWMX zZ+6v+y)8&%)1Bj1F*gjPyeUTw3Qg6eXtGSD`W6W(OeraWA5A!z#)7hlsV3p}rtf*~ z9?)XLZY)0^)PKBjWEI*=VCIx15~ANnPu^^NY{Bipgse|WxOmCnnVsZ5Th}m08sYPD z1BSD2``fhaSx;$pLg*L8J_;Zb#S^Ex+W(P#zY5xkheLksi(z5c=SzD-=8CujZ}FW^H`O#w)8pbvBT7AqgOVU2!u1ah`_5g PsnkDy<3GM-jAH0_iU%JR diff --git a/app/src/main/res/drawable-xxhdpi/main_home_tab_index_selected.jpg b/app/src/main/res/drawable-xxhdpi/main_home_tab_index_selected.jpg index a55aaed8a91546f45806a32060e9486698359453..a3e2b5723a2a59529b2b01a1a498d97f25af947e 100644 GIT binary patch literal 1866 zcmV-Q2etT#P)Px+1W80eRA@u(S!r~PR~UZo$SNWzky;b^z8Qi>VP`shLn-Y{2o!{n07~J@z7v8%N^zS~s*%aa zMM0p)f&8;Novy^$72wnia9r0gLSz#F3 zVnWc*(Td6qczR$`%nS?|Hpp6RyS^vx*oQR>m!srKRbnazgeYqyED{I~4&!99dS?JM zV`%)EG{)i$aZq#)u?w87#@8;X5j}1?3LfN1F82h%5MgOKnI+JwRd;W1@3OPfnrGlw zZdr%cL2YftjVw$ZF~OKbx?bWM-L}QP z^S>V0;&iHXlt6YyCdLjJQFTsGO2bUA9nTQpIMsSWFphQFXW+Ytj$7zx|1R-cG%W_l z6OL5w1-enAN&V6|a5Vz#R!KOwoV?+}*EjFq75 z)@oA**GPcpm1=-=U?11*{R6=reFy@t5&nr8X0|QDf)HlDfM5X)uwov zBk%}-H~W}y@gzLGJZlZKamV%$$N8RPfgyiz4S!m{xxp;rbz&bGl zHg96NTs4QO4GeYfeo>gaO8i;t&E_;(sq>s;h?%0WGwE=h*vKpAEyaPYyTySlKbhz2 zbg2t!+{CPQ;CWRJfR@Z)>Bd!1_I%6Y43r82_GMj1en|PuFEm>P_ccfcn>!4~~kK{IaPNEi$TY5iL-XeySG zaugvXp8aMLVf>Ll#n~{|lJDKc=4)4xQ(R<~NSg+}_(Bnau1!Uy#$uZ_dJ@w9VWl~1 zHkOpkG$bU%L$CK?;-%Qj>}9d&JE*_K&e+Pn{NO&$+`SETejfgN@)(7BJ$&8W(bUTu z9UC=<%D*|fG-+y6jp0;L&ye!GDyCeO5bH^%1^srI$)Yc&naV1Z(m0(iRZJ|V&1|_P zmn)+wC5xB?D=S%f`661*^-N41Inh|yO4I9oBJ35m*mz2iQK3-w5Cn3HMPW6;jxz@>Zemx=3@aJeE?$AslG4g>qzEv)Q_yv~F*jV7g<=5F&I;CYpX?PKP!Xnh>IMfPwx0d?9X?2g~&`Uj4{KvjUd zJ8mQjWvnYgadP81_@gR|H%zh)#w09|0NEPg(2i&j0`b07*qoM6N<$ Ef=F(FR{#J2 literal 5215 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 diff --git a/app/src/main/res/drawable-xxhdpi/main_home_tab_monitor_normal.jpg b/app/src/main/res/drawable-xxhdpi/main_home_tab_monitor_normal.jpg index 977307179c42dd1ff7fddb431d10055f3365ab5b..f03acc6e1eff3d0ba9731949bd8579fae88730af 100644 GIT binary patch literal 1859 zcmV-J2fX-+P)Px*{YgYYRA@uhT5C)cR}}s(>!6~7Vp^-Hp}MwQ<$1Fz9x4DB zm;TY9p$3l$q07t5uO3l2U#SUA*XVTjb^`dm zso*|+KEaeJ;}IEYfL8k{0t36FzP=uh9#!DMgGVr#uEJ<6#QpmZ-_~~z&j%*~$L&gh zc)0_j^2Y#t;}XUcPfcBdNt4Dwqw#4~2fN*Y{QPrBPtV4~hmV@l{?7BkGn9bv3V>D{ zv6B$G)FnA4W)!w<+kmcJyLh#DH8r(JNm-2x7fRgom^ZUp&2HXu8OjEr*BfS13b(z^ zojVh0Y02>MX?@jOQpDkKVAH1U$jv?KCLsg~<>ltaKV+bg1%P=Qj^pkC_?YpGiyMdS z+ke5ET<9GUB_$^0<^7Gcv=jscbZb=wN-2_)SHoyL=c20+1R=y5?<5O=ULUcJQo5E& z>D{{*jK-tr(#6lCa*GzFps45)3JOl5U%w#9HDu;Ad2)jLOb{;TD&+Fb#-;9s;Wj};xx>eGeb(g`+afo70jRi zqxhQ;Tmo>AQZiSn@RtOj(-|sU_Fr6l2EBTDPI;=UpCcybE38_Tf)gkH#IRvQuyW-x zG5W^Ejg*p85=Nq^hnt4cAP$KgvD|PTegUyMI3ErLVCU7BBf#(*z6F$32x06 zl%*6~x2{8c{6ri*dJ5~;r(^o`cszajOmvU8ZryH1&p_R|)7TR7bch`e%#*6vWSjxd zZj_k|$8k=jC;|ff#U1F;qdU%?J&&ZMmE!Y~CG$mhdik;$lrk6Tz?n1WL=!Wa3f!RD z%#C^z$Xwc7ylBFL1i@{TBNbZ0$ zm0(qf*gcR+B^b^1>o+lP-cm7{%gZ|~o{`o@o2C*>aMNUt6);BQ5%~FePUaZ>-MjZN zbLM;u8We)u+}*7zUt3#?xVSb<=9qME(rHHj^5rWWIB*z4hlXLy7`JbK2Z)Ds`iUS2 z`u{wgZrFwQQP9vtZ;O1%GthL|v|7V1La@a3U%M(P8 zp)+DcICQ!J=-IP}NM2c41(qkVwhHtAAGod3Xi(0^R;H^?mh#sg-d7Mpmw9XRZ}ai$ z47@$Lp|!{*Q!1Vdxn1T;LXd5<3ERE#HZ3iXDgZ8~jm=%hc!0Q?yA3u3R5dhrsTuGo z;J8->a_e0=yQ&y~^NLjiAcx~>PFO6KS8@b~gpBOwaJ)`r6)NCUCslDt@l*kz*#$=} zKucKroDgDS7aW~CzpS#^Y=q+i0tJDD03?zSu+of0w*SQiN4vjbYTuW9T5UVOW^MNu x-R=HUgLeP12lLNrKDVJ17o`ezsTjcC{|mLcDPD;xP(}a%002ovPDHLkV1m6aaa#ZY literal 3290 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 diff --git a/app/src/main/res/drawable-xxhdpi/main_home_tab_monitor_selected.jpg b/app/src/main/res/drawable-xxhdpi/main_home_tab_monitor_selected.jpg index 4d2973026e8cf3dfbe91189ad8a73631c8dbc678..fb37ddc734f6ce8eb5911a92d6b47a6800e3bfd4 100644 GIT binary patch literal 1854 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 Q|J6b7|9$lP_F?{i0jm>FWdHyG diff --git a/app/src/main/res/drawable-xxhdpi/main_home_tab_my_normal.jpg b/app/src/main/res/drawable-xxhdpi/main_home_tab_my_normal.jpg index 5aafd3b2a2a17a8a03d7e988510f0b84b48c9eb5..ac4e7dcc708dfc3e4a7a35b2888706698d0d0328 100644 GIT binary patch literal 1726 zcmV;v20{6WP)Px*cu7P-RA@u(S!+yGM-={MS6&5+*oQ^2p|HCqSc|Z`AZo1!wNi|VDT0u~536nZ zh^5skjevkr6123@wh~{d_&_lQjRdu*wWdXv<)xL#?#1#0rKVLxL6paxW-faXx4Z0v zr9jj3@7_5xbH14~XU=?wV1x@9;r8Qy0Bi>X0s@>nI^4q~5;BKU`WgTQ0B-;uh8=DN z&;&q72)V-Z^t`ikTUl*wZO1@8U_d({lc|CTA@2it8^Bmwj3ETgl%jxAx|8FyRkrl) zt7{hkg(4)7Qfvlj1TbJXq?F>6L_(5vI!%qOKx_iw>pR=k+4QL5wsry7(b?&q+|cmT zBWr_gcg*fAW0y^#0t*EC6<3ot)ar zM4ul!)(eLY<-*U;*IIk*(z|h^0daBf;qKjLv43@Er+b*WgKZXoLJ{&Mr8J3+;_B*x zyu9xQZRL%TvYkjs_yFzgJ;8`l`X$F{KQpx=CIR%sdCE?e5Gpe>lMxdWW!H+@+v&)W zLZqZ@5xaLuBobv^-Q_FBcA-T8 zhV-C<-LO)r6emv}7A~ft5O(n`T(}(F-Q5OHqDtem;~zVqP^flON>;EQix)>AJ3D9p_mHRve-GMUVU5U<++Jeg8{{w@Ru2M#F!t+pC*ajQfd zS}1KE$8p?a@yAmDvWopCIQG~szO4@64tnNYX%lAT43!Q zgQ~~Q06PnYlU&4c+TNIM>_XSr1B)pZ73CoyVA7x(X6@j$wRKpsiZ>sL}igmir6`VYyLA$UM=MJ9>Tj^X34s)9uU}uU-2EPEJn4!G3ghc4G468KNy6 zdVRUee-^;7bfK1(`%tUrTIE6``w)-#FxvMbTfTfL($j~>MV6M9g~NxfxX4CADnTh` zb6mNQ?l5skGRK~OIXOGw;o*)|s}kVlHO6fCZEn7Y9XoalxlMBNC-C)sx!+LD=$F{o zm7>mlN}FFao6IpSd(!D`+rB|=?)SnZqepunDk>85=FNs&?k8M^EQ-|CaVRalfWpFJ zJb1vUQXn#NK5}w4^$Q>=X#vxSGkU%DP2&z`-o$D~AF`gpqkhw-FR*Nxkfio2 zEO*yvDslSsd4W1?YPv1BkEiFe@b(@Dr7{q6=Dd#S)74Xc0DS*et4a5kgd^ z$X}~y6*o6m?BDAajS1*s5u79~IWvSk`V6 z0H$n;THLeeYfPCUJQ*A=SFhG$#fsIAp%$MUXh!Zz&H`{}{}{Q;Sn25K#SR5fP;eZX znOpJbQSW=b4dBBEMD7}aVD!51*kKYDrbbH2ngP@6ENU@&{YkVDhIbsjE*k9T7b=%Z z`J=`Kj);i4NJxmWxxi6Xbp?5O1ttp|QYneKeqE!pW{Yj&Obm=QBP>5MS7K7Bf&?aS z{P>rI)PhNCYa4Fe`a`%QwA!knDKYh34MzU*Jl#SFSdnkQLMclAl_H<9rH(1H^0^#W zQEBfg*yKXyCNWXyo_>c0wwJFf%0@(lC{K+HxDTy%mMQ*5=h1Lsnui zvWhKo+ft~p=w>pm>0(uzrWDm0^`_b1k9R-yPwzkboXi z#gQI72LuNqm=XL1_WuG0L`0(cDTvOR(2#xTS}36rPYnv&>W<7rq%VLd;DIyPqxmD> z2!$5_SpNxt6MyFU{{&Ez1Tg2`XP&7HU`8T9b=zm&=RJw=i}agtr-O{xUAq9@6a!52 z0-z`X^aK+!WcW&KG(@xji7Omw!4LvLKm!hhK>#d6kOi!OZ@^O92M)+_{xd?I{4)=T zwYC9BMDPF)9EJo~5(Y=YXcb5T7{KBX@!!b;5QrGvDR><{L~5xI7#t3V#o-A!{DcMu zi_-x-NtZx2{)V{FjzXQY)o)9DT6%`6bEbX%EE7{G$CIE zp(AhP_iISzvY8Z%*rBcn!ajN{-ZXY~taScp%7|4-C|PjqT;ab;Z8@RMal(?)#n!y; zA!?P4T+`UN))C*^ey_TzG&JNvsk2q|) z-Tlt@=Bv8)UpcKFZXYjfF_BsaQcHX_8_${Q7+uIFE)E*yJczz{cIB1>macm|ZgP1d zjdN7%US3<)x9Ob+Zgh&jeVCxR$9kH2eQs9usqNM-E8-Fl&6>Y4i`~GCSe)I~$z3Gs z7M{uFIF#ipNC`UL%;g*%jC?i;YSCTI+MZTfj<6RlVV|-h>B+!p*A!GkxE9|CrHqC!9u( zC1-$b+&)=3T0)|%c`n~ozm_^L`klC!e_N3BZ=kpGxKo}gQ_RM*)0V(H=W!Vx=q@@W5W-swZ~9lj-U$tr4P(QG}t7b&D1l18~Vm)tA7!Ynz>H=gnE zaY@~?pEua*nb_vU52>E3?R%6+(Y7p$20$cFbM4?D(#jZEjR)fjgbvF%y87 zDJfJtx$ZoZpdJdlEIQAsoPT_J;iIgeS`DLdeXSx>DK2o&8TN6c^BeDAWD*8-4ljY{ zQ9za^6ftrDT1|7~FdgYVZc)t&&#U3v)ci|fxBAm{Zw>S?gB?vf6Q?h<=vJSR^f1|f4ivcPKC)7T^*H%$ZoYhF zWkXK#yko{owixxb{?;yz#SD$Pd5$-Y7#!*hxg6A9Zdkcqy7qYL8)j{*-k@8;Lu-0K zv3@S!TGl(t4ESTMg=IzOh^NZj%)-3-y~%j@={D94aZ;e1&Nt)MDKt3cvN7atX+Z8V zU&4A@^;Gm=@Pr=@tG;(}ndTP${a`ooiJ|eRq{`A&!>Yo{83(D^de09JpO-(gu3380 zEHkdc^7i<8GrQox6qA ztL+9gq$O)Fe@J;J+*Ws=o!+Pz6_}S&tDTj(l@#<5L&+Cx00zMzNq09|q6rrF*LJB^ zhh+I{Uc0hSw{F^yoM`@(C2HC%u9EA}ckV2%e^0C#xM&wsp@sJ(EgX&?@seHjI`Z+T z7V6iJl`4If)_>Y?5@BHuAUJ1zc|266Y-6G?7vnjubx{j6rdGU&bqL{n;nimDn^xm$I?)N7Kr- zOWQLRQ590N9c&`Owvu$>TI&5675`IF@F#5iaAA!Rt7~0}mlon=F^r+++bd6~J&*J= zjPzCu-?{{R$jBShBYa_z;I9-MDjrpLjh}PPx*c1c7*RA@u(S$j~FRTTf-Z($KvBOj@V8jsy|!VG~0Bb~ItN`+FG%twWPnCTRa z;$xJ__Y0iJM`}@O&1jiQqhO+DF={UamZ!17?joS3Vi}=4goW=mcij({W!K$>WrdmU zpZ7cW-19rH@7!|;diWweTz>oyfLYMr-(TF+Bnjg<@&cvw831wso&fq7EL;oV1^_i7 zq=@I~IkC7dQ>9Whb=CtqWdW&F5l9GG2;emU{p}Hk5L8o&6iR8bR;$dn=d3YphXBas zp#hX)3qYp;opwV?Db8>liC3$$3+)AB7XWYXiM_<)`Yn{w_W`&VU*()u-6dumh{$>)YsLc>d%|FQdW-Na|@C4^F`decHLCgW&pc&I!Sy*#rb=-0rM%kN*9z z<4`h&`+9eY@B-7Tmn*P%&O+4uQ!Q*2=yZ}WOMz_>fLtEBjZzxNxVZIlL(;)dyG-+@ z8ex`L7V|C|8}26~O6fMOR=L!i=F9@PpXVuyDt)Sq+Zd0CnbW&e^QO$xkECMz>I7lC znd7+N($cIVQ#!K%WU|n7fKFw^!Q(=)^~+sO6<)Y(dCYr8*@>oWG|EV;01V|pF8jlZ zL?Y}xc?cu?y4LS4Y3E8=1?ET2K}$=E!INmPY1z@v0&=-xAEjg-J27e66s-Jkomu`_ zx2kaZY9+4J-i5o13jzlWM6{0-{oUNGTFaiZ3Cq?Z_Uq+E=1NTIJ<-`yOI3HYvj3-M6nr5cZzEq%1((oCN~E8cM4N zYqi=&VWSNInJnaa02kQDA;X5^V8$^J($+}7R^32iK`vYfhc~_aF~(yMYIKb_a-#&Q zySL#bkzmibi4d8bV>~-@mX#fEg-09LP7^emoS)1Bkjq2YQA*dckCC&Yuz17DcA7j< zS&p>IazqaGL4>Do>-VOX7A!5i05_2cD*}SxB@vzi4_I{c?2a{wIC=QE!HvjzwK}`i zuT5M?ahwpM&zJE@>kjH0sRYusMwy|HxjM9gRinS2$Bni+Al@yA|JkbIkgW%$8EZ*@#R_2}&_h ztIg4uJ8X5Rm~$qG;=DpEn)Qxw1 zAVN6yph0(d(9DaN-P-u#c}`JQmZg`?tP2U7GMVCgfaw3-tX-J+#mCN4c$<5c&y7WX zW{zQxp4DiSFPjQt;Y}RE+K23<{!zbVQ#_`=?%YTHsiUdbw(7y7o)Dri*Zj4ut>WGb zNe4c8WNj5f$ab|ldx<$Wun1t-urPOb_h#0W(>HS;VPmVXp}{5W+O^CEy8tj^bFIaM z{W~ynwEoH9@Kt(Ah4^`k9n)HT5YVi-%VhwNuszn?WnJm1Gp0Edz^Rlp?AiDc8t=8f z*Xsa2yi?6x6A-Muu7B*X6&MzR*wsrr-Ck$CpIxlI-kNRn>>bx$7X>63Lw#)>Ze3?1rV6k=&m$Qz83SR>U!JE4gn$kCI=v{xX{QYNOeJ;9n3exbtIf^p zs21#UAxoE-8FY^%1fG=MA9NFfT1xeU?$T~G=}|sl+cSn07;}55s)rLh0p?_NEPYQLhoXsC{-Zz4oYaDiGk2X1wjz$ zprKc#iioI4xxx2->wVX{_q%_-A9v3>d!93U&og_^dN5E-Yr*azc87H)< z-bv#11OVi}0{}Sr?=t&r03bvI00;5!GFTA+K%xMkaq#c5zsJPe&e!e_9XUypIXeTu zZW#cawEzI-ApoGY`eP%he-j%Y$;3^H%Zrp;01vgBSraMi7`0bkarY00ENRSXKvcAp6l5f; z3zsRc$bBX9-yvY3Vy)a}#aSeHmSJUa#e zEn|@PfnCIo@FX@^8^EXmObB^^-VqZ5P#K%nj>#`5!rXQ~*&N!UPd#AIhss9d!J?~tk66K-${@+{6Tl*OG`UF; zX}FQAYSZemziOi%uWdAyHI!$%NVeXgbOO-vCIQ|e#_ovEzZIERjOJ^>IomXLBTp1l zXNz{fLyneYH6(b7m9)@T33t`o++uziEhIgiZdE@Ezq(T<pesUoK#8AlVaxSm1&P+Ea`7-<|dZKrS}G1T!4rC zU?CJPY}6*K7ffXE9{kE|U)DT(;C5NGvHb33>eb-ny#|3tJl8MACFcrmA*Q!@QzIGM zP}oOMx-<_V zFAt~V-PNcgiw*#*quJ7@b6LVQu@d^os9lt`8tQ6RjgaGWc(P88w?Ds)PhVqzgL~k= z7Fd<-?K#uTFxjVDji0W~hMt?VAoigp?S0l4>PlpM-$f(+gN&ciF{*|kR8@Tq=3M=4 zRw@@RavK(xdl#!Md}_I`&LM;}{&Jj_*(hSZ2I>#Muh7e5 zQoA0_z~G$VVFk*fD_3pK%zPO;0k%sw+BYq^ZL&Q!mqRG_am{Dv#On3Bn_|)omL|)o&HuyvevAqL&!r|V`+)>=$4S3eoItSG4)wCK-t>}tWMka~S5xe- z6fs2bvGTjY)k^%p@|8X9Dj9pw&r?o_2V`;urjG_bhutk3ZAn2Fbx%1tym8xPZf!_EzW8bHp;@0Czi!pFQbHPFafkPO zse5RWyZSY5X(j%A2WTh3z~6LC)pk!O6JQz-jkz_mA-b`S_cu{8?gyS9vtu zQJKs2^A)q3$b`tK@+hZ?Jdm;)15#uitiOH+jq9|Ry#V!Ze&hUXznM!oC6Y2?9i9#n z=<)p#*z`;4JkBI*`&#&iFEH$cwXr)nV>B!|^r!F22J6&sSt9GfxL4cMjP6j45l1#> zSF%P03y@Bfk5lW8f@KU=bj_|W(S==_G(dHbBg5x$yw-bfqhKRbzHD!27p!_tO z#K?Th1Rv6EN@Fg zzjj$W-z#RV`L?=}*Z->g@rEcS*gW$q@#=7W0kx|9@#1@%M`@pfP(39#Ty6<+Dvylb zxp{0Ys9L#TFejfY=@u475R-d&`TQzDH}Aggw^iW=sN@;>h{D#gM<%p=eN`pWb!Vy| zd==agkar9rlsHZf81!jM&3Xh2*@Ip_1}zQhUV)!+1ENII{w#t&s#MSwMdw&?%EU~e9p#}QhLx^$NLD6O07YTUuh+tu!y5%tXkqUT_9Hm6<3B*#bbSaK?D@7aWe zwnMG*5?^Is$Y9P}bl(WB`Wf)}!h$?&g0DzejLTevsNM;Hygeve6!3Z*_He~5*v&C- z0pT_?Q2>#jr`d=bq(|tq#l~vmgv*_E-rZ1(%xv+eyKL~{P@;W(xJv^ptns~F>`0Abj-ftwH=tKawMj>dLh=CHqUSZipvQiBB0iD$2BiLlwpOW`-!O9Jm zz-z8R9(=UmN1jhOm#zbwU^?Plk(n(gtjX>eMR>wcZ{AcUC|LO`KH)^bKa z4J-N;7R#hu-_pbFHVAwC(uh&r+1Xyr)RY{f4Up-Ff?$9&0sxJr_Ch*dh+10dWHgZT z(}KH_x-6oAqag%RSc=z7mkPGtwb$r0f9a;E&X>0*LM2#e(9lEwF}Lacl6%ZK zN&WVf#%h`M#Y_RH%=^|3JbsaZxnM`SB#JL#8JBTKLh?y_L9TNkyY{>^V^v5SHZP=V zkk<5gGJmt0?J=$@6Nnvh_df!{pw&R@u?TF@x!4 zf3v$X4}Y1~)Ny*>ABgKaFZD10O&6+%^eCr3Q&I>s3q#tLto@Gk$uM0+x1alnTB0*2tzfGQN4~?oQ>{WR`#z$eIFxqAf=J%c zePDdxDbOR6<6^QjJ~hfD&8vQN?NB`|v#>js8 zm)$HFcl|0>^uc4xICQD=fgqE6K_+BiFIP<8InKfyJ8yGa$jSNL3w? zPQkK^UvT3^zk_d!wmEZ7Wc+Fg4CPWwg_m#|=KFzTJ&KFU81g<18x5fKKHHc$DBO(m$lZBWKS@6{FeR9AIfbQE6(etFuXzl)dt0C5auY1!Ij!* zZGtM1i<4Gl?ol~xx==?al{NQHX~y$}sIM&_v<1s5ahespuFlOf{i6Ad_z&@0JP-Q7 zEz2>r&CJzR|{t&NrcIDqD+gW;!gRIxhTp<+PDfyw=iVVcFd zmb$)__yH$O@G&fsN@y5>MB=dW+SfUstmgzHsG>)AeB( z+JuG7X+_>Ds7TtGnwpwWn1W2z0Feis0EBc=27<|oq3!M!eB}4j?lUC=z%76h0C$3V zY5)2%pI)D8X=?WeHPH{*tSMVYgWEM9r&yo2C3ed+zMqF!PPm|UbmYku8JFqRYg;J# zJfF=Ua!T}gJHQ)QqCxX@)U?ng%f_ljt-Y8Ll>2th#W{$J zDgtvIqF9~Sxo_YJ4P3QKgj77YRB>|g^YnXvlVfJ8DW+X3HiPeu*j=*P1z0bN^+dlioOfiB;pXtXGMIILzo(mT(Y?6F?ONdowpjxZ~F=!xtQ0KEqsWN^!(4pw)!N=Sz z-w#^~$4>{l7>~b?MN6wDzPk6uUCA}&X@iq;I;~Yi$j^z);7Rt47L!rTodSj4?WZdp zutJJ*Zk(#Z?-tYSsk{ALNCM=tDo^f8e7!u2;7uLpAcLn_zLyMOSPVpF9wY4=GWOoo z#4x6^vgprr?f~HX053pAhCgn1>jjv|P-Lh-S8{)VUJU|>%GCa~_3NOXd@*Xb@_eK> zyl}(%Xe}Hw7z^)Nlp5+**&x1}%_DeR$bgxnkZTyE%9}<{6)ZY5xqaDYgv$ZcbJIwN zEKQn0ie^!u;NoE={jB&2Fw7+s?-rnysgoT*XRRCFP@)9)z}K+z8v1ya$fPg8t!=bf zS;Du%uN+A>@h0~i?>8pN2FB3!+<)Kn;$ngHD(6wmF}85+Tx#J;aMnS zdJl_gY_kzeoT5u^-4I(Q;z5xhv;yNjHzyleVfN>TMLK(E{2H@cXg&wxGOdk%Qv2wd znE7Er`ipLdT{^Ez+3r%*NuBq07-FRB)JT>~72l1ZijLh5}KI-@UyL5?to|BAS zlw|i^SCI@*SWaZnqvzX^vvaBJIP3P;>8`qouk-CP$zXN;l}lE1*1w$w8f36`*MwaK z`MAf-e_Y=i{f^!{E*-wt)9^fGV(f0e%TL$B+H%RyM<4Iuxzc~l=9~ZwWi6LW3voeZ z-{si8qp)_i{$nsAv{I}}zqm03w(JQvdr$3yIhtM}Z zg}NVV6nvh|xm!J3I7XEGxnB^_z+3rPx>=1D|BRCr$PTzjk>RT=-jGc$YlarZH2_Lc%M^?_K56ce$6w1hUw!$^Jb&=@K5 zh=oX@JW^WXqY1Gf&ss1k2*^vL0-_~|NU+2fD7Ak`v86UZA_=AT?#$V{kK229XXZ2C zb@pbv-Q7F8cW--3oMf`Ocg~#io!>d%^L*bROyNaD0s#7Rxm*GOju%3lB7~SrM8^Yw zNkkb$G?@e0pUJY# zq<|=uN;9j~>Ix#dG8T))_V3>hhG75`x_|%v?L_n<5p5!(zYh!y?CECpc$YDIA>sl= z{8B6yo6A5~t5t}_Vm!`%L|kte#_j$6{d>C^V~jPseNicOF%hjrL|NOui9`ZQrP3=z zbRz)lv@EO8ZU4>Qvu!&C0CN!W&i?-X)63=ZIO`CRgNVyb(|o*}F*^ogaBwgwgjj7D z#`QH8AR>>5c4?Y+O(v81Yd3^+`c6KdU&O3|h_ew<dt61dIM_*0B{lU zeA6^H9L~vgI<``3F%dlt06H6ABO@bsnWo7$&OujGAlO*aH0?3A69Vn9N=kWKr-V$0 z_DZSc@p$|mHon--@H}rxGo$MuAolIsH&fU39RMKNTy|aeIny**03ETHZQD;pB9Zgi z&R{n`5{b-dG{+ABf*q)QK7S_>T^H!$cQj3#mrkdhBNhb!$mjDM``C(z#|0klS}ElX z^^V#BK;&|{V}%g!06-rAR1tBhX_~)0l0m4^u9Uizi0%(;j8WhBKatI5->*GC00^bj zFZ%lWt{5F1WmWm6lyYt-AlSD35k&m9@B6#5*(?iI>g4^fZHXu{I5;Q=1_ttoI1=_f z$8okJ;z@mdeeAV9Y+2Uj2LVwomyZE}_ZbBCBFp9S0x9L@u!FF=RZ6`OkH^1IsZ?0D zOo@OEqF+xS;uitnRVn2;VQF+6XMQ4)*u;X9!2p0`6N$uFcwl@-D5W0JH0=`BxvuNJ zY?|i6umft^(W^`*!{bb7 z9oP4%l-j84`k73l=XsBsrup4*AXu3AzP}p)vaBvkrP8U{Z1(j|CO|}(&*xVIz>jzk zW{YGpiN#{ECtwg!N-6cErfFv}2m#Q(lv3-2PTRImO(YVpv2z9hIU&UHnM_8Fp=sOp zHxcnML}ZhcEyvTOlpGuE_{!ySx0PIxAfNSwvn znnB>upYQu$w=C<`PWp8mCrw0Kgb=gYWgwy@mSz1GSFc_zmMvR$4+mAaL(lVAwOo&g zT?@KgE_bzQn)eP3{SV7v^;UM{tv0elAb_j9y~DcL^+55?bsXnzP1Bb1|9#)T*EG%L z$Pp(^)Bc2r^NEP#f8XkbDeXAU8bn-G3%I6IDV8H0u?epp0Q|0j9oX^f3WORUf$9Al zM2r#9X3z7!jDaP|wnLnG#`CkP!DDn?e}jm!y!f8yeVl<< zkjZ5J#=PhIJ_lS+?1bkgYMaaDmYJrxu7OS3?hGP|DWzVoX@?p+5YfU;WkM_ZY}?); zgqXvoLO!2AgZbtA@p$~cK=(f&rCd7E31Awy{_v^ zBasM)9Ir;(w(pNdqu=9)BO@bMSeErrrxOj+-f^6tq|@n}S(~uH;?u51ZPJPzG)?@0xvsljN_o{}Ko0xv0YKDPgY{{#SWNf& z;IT}$ns#GeMo2L12x2xUmy)eE5Ym-bSvnrp@_soTFV@DilP&Js?QzEEZxzf$- zgce3uS1x?Jg=sLcmmT1A5z$U5Wlx>1Zd~bHF1JS0v_==cr(hi9bg>(*Y1+H&o3k6< z*Vi{Ukx29;TP+Mbw6j11qpPKF(k%-&b;GABFw+S;w3?7oYFR3k>d1u;15VSx44-Z( zrPc}|mT@PZ=iL*W0(Bj#YY}Me%6Dk=O(q)nG77AiP3Kc}Ey_sI_Su&gVw;2Rzkkm2;jKbus`S!#R%g zYhBmRuXm+;8Bb_r6Vo)2uTJP}d%(jTP4>vIR4N@+sZ@3$B4^xpeeN*Pq#Vb&HI+)O zykXj#?+ z6M@O=(o&Ffx!i0aL~l}%>vS(Cr9Z3dI%n0?lG49pn&uy-k3z%(==_#;Z8^$8XA(G=RFdS$Iq)3 zu6UmJ0U};FQF%gbilKHyo#)17i1)=}u`}yRncnt&f6d{tKm&{MX2UR!t1D%CIVfe~ zRO(PyM?i3ojm2$&1j~zRY9jx;~Gqf&qXFU{7u+fE^*C^}g@l-t8DXr%3_9 z9n_UXuhez@njmwxRY^2g1#_|c4vv%;i$!O~j2We%pTx+>h*d6^xonDM5l^10f18#> z^DcB0H@L1ly^7?U@gt`J z8HRCAyU!-nz6?-H38;NJfQ2vL%|4qTgxEMTGVmITXY5W&K_A0d-{T0*z0000 + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_big_add_disease.xml b/app/src/main/res/layout/activity_big_add_disease.xml deleted file mode 100644 index 6b15239..0000000 --- a/app/src/main/res/layout/activity_big_add_disease.xml +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_big_add_disease_details.xml b/app/src/main/res/layout/activity_big_add_disease_details.xml deleted file mode 100644 index a0e89e4..0000000 --- a/app/src/main/res/layout/activity_big_add_disease_details.xml +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_big_disease.xml b/app/src/main/res/layout/activity_big_disease.xml deleted file mode 100644 index 534dd3e..0000000 --- a/app/src/main/res/layout/activity_big_disease.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_filter_search_doctor.xml b/app/src/main/res/layout/activity_filter_search_doctor.xml deleted file mode 100644 index 8026353..0000000 --- a/app/src/main/res/layout/activity_filter_search_doctor.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_intervention_web.xml b/app/src/main/res/layout/activity_intervention_web.xml index ebc13a2..5370908 100644 --- a/app/src/main/res/layout/activity_intervention_web.xml +++ b/app/src/main/res/layout/activity_intervention_web.xml @@ -14,8 +14,7 @@ + app:darkStyle="@{true}"/> diff --git a/app/src/main/res/layout/activity_search_department.xml b/app/src/main/res/layout/activity_search_department.xml deleted file mode 100644 index bbb0536..0000000 --- a/app/src/main/res/layout/activity_search_department.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_search_disease.xml b/app/src/main/res/layout/activity_search_disease.xml deleted file mode 100644 index 6aeee77..0000000 --- a/app/src/main/res/layout/activity_search_disease.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_seek_doctor.xml b/app/src/main/res/layout/activity_seek_doctor.xml deleted file mode 100644 index d767554..0000000 --- a/app/src/main/res/layout/activity_seek_doctor.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_seek_doctor_department.xml b/app/src/main/res/layout/activity_seek_doctor_department.xml deleted file mode 100644 index 2eafa0b..0000000 --- a/app/src/main/res/layout/activity_seek_doctor_department.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_seek_doctor_disease.xml b/app/src/main/res/layout/activity_seek_doctor_disease.xml deleted file mode 100644 index 7fd2cfb..0000000 --- a/app/src/main/res/layout/activity_seek_doctor_disease.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_seek_doctor_hospital.xml b/app/src/main/res/layout/activity_seek_doctor_hospital.xml deleted file mode 100644 index a412a5f..0000000 --- a/app/src/main/res/layout/activity_seek_doctor_hospital.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_seek_doctor_search.xml b/app/src/main/res/layout/activity_seek_doctor_search.xml deleted file mode 100644 index 80b1023..0000000 --- a/app/src/main/res/layout/activity_seek_doctor_search.xml +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_user_emergency_contact.xml b/app/src/main/res/layout/activity_user_emergency_contact.xml new file mode 100644 index 0000000..b793cc5 --- /dev/null +++ b/app/src/main/res/layout/activity_user_emergency_contact.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_doctors_guidance.xml b/app/src/main/res/layout/activity_user_sos_contacts.xml similarity index 62% rename from app/src/main/res/layout/activity_doctors_guidance.xml rename to app/src/main/res/layout/activity_user_sos_contacts.xml index f8d691f..38b3b3c 100644 --- a/app/src/main/res/layout/activity_doctors_guidance.xml +++ b/app/src/main/res/layout/activity_user_sos_contacts.xml @@ -10,26 +10,24 @@ android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> - + app:rightText="@{@string/title_user_add_contact}" + app:title="@{@string/title_user_info_contact}" /> + android:layout_height="wrap_content"> - + android:layout_height="wrap_content"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_tab_item_layout.xml b/app/src/main/res/layout/bottom_tab_item_layout.xml index db96da3..46abbf6 100644 --- a/app/src/main/res/layout/bottom_tab_item_layout.xml +++ b/app/src/main/res/layout/bottom_tab_item_layout.xml @@ -8,10 +8,10 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_emergency.xml b/app/src/main/res/layout/fragment_emergency.xml index 80fa039..f3568e8 100644 --- a/app/src/main/res/layout/fragment_emergency.xml +++ b/app/src/main/res/layout/fragment_emergency.xml @@ -1,6 +1,7 @@ + xmlns:tools="http://schemas.android.com/tools" + xmlns:app="http://schemas.android.com/apk/res-auto"> @@ -76,93 +77,113 @@ android:src="@drawable/ic_emergency_seek_doctor" /> - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_monitor.xml b/app/src/main/res/layout/fragment_monitor.xml index 317bdcc..6617e62 100644 --- a/app/src/main/res/layout/fragment_monitor.xml +++ b/app/src/main/res/layout/fragment_monitor.xml @@ -26,6 +26,10 @@ android:textSize="@dimen/txt18" android:textStyle="bold" android:background="#14BEBE" /> + - + \ No newline at end of file diff --git a/app/src/main/res/layout/item_recycle_seek_doctor_doctor_child.xml b/app/src/main/res/layout/item_recycle_seek_doctor_doctor_child.xml deleted file mode 100644 index 54e9749..0000000 --- a/app/src/main/res/layout/item_recycle_seek_doctor_doctor_child.xml +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_user_contacts.xml b/app/src/main/res/layout/item_user_contacts.xml new file mode 100644 index 0000000..6ddd57f --- /dev/null +++ b/app/src/main/res/layout/item_user_contacts.xml @@ -0,0 +1,43 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/view_appointment_information.xml b/app/src/main/res/layout/view_appointment_information.xml index d092848..4d3e131 100644 --- a/app/src/main/res/layout/view_appointment_information.xml +++ b/app/src/main/res/layout/view_appointment_information.xml @@ -62,6 +62,7 @@ /> + ~ + ~ The software is licensed under the Mulan PSL v2. + ~ You can use this software according to the terms and conditions of the Mulan PSL v2. + ~ You may obtain a copy of Mulan PSL v2 at: + ~ http://license.coscl.org.cn/MulanPSL2 + ~ THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR + ~ IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR + ~ PURPOSE. + ~ See the Mulan PSL v2 for more details. + --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1609f7b..ae2b2ac 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - 健康长庆 + 健康油我 找专家 @@ -54,7 +54,7 @@ 用户评价 基本健康信息 图文咨询 - 小助手 + 全科医生 选择位置 位置 选择档案 @@ -112,7 +112,8 @@ 体检项目分析 历史记录 预警历史 - 健康干预 + 健康监测 + 全科医生主页 @@ -408,7 +409,7 @@ 预计开始时间 开始时间 约定时间:%s    %s~%s - 音频通话:%s    时长:%s + 视频通话:%s    时长:%s %s    %s~%s 请打开APP并保证网络流畅 预约人信息 @@ -464,7 +465,7 @@ %scm / %skg 快速咨询 下一步 - 请选择咨询人档案 + 请选择或新增咨询人档案 咨询人信息