diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 44777c3..70db441 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -291,6 +291,10 @@
android:launchMode="singleTop"
android:screenOrientation="portrait" />
+
+
() {
// CommonToastUtils.showToast("敬请期待")
}
"health_dic" ->{
- CommonToastUtils.showToast("敬请期待")
+ RouteManager.goAct(ARouterUrl.HEALTH_CODE_MAIN_ACT)
+ // CommonToastUtils.showToast("敬请期待")
}
else ->{
@@ -608,7 +609,25 @@ HealthHomeFrag : BaseVmFrag() {
mViewModel.videoDoctorLive.observe(this){
if (it.data.type == 2){
- CallKit.startCallKitLogic(requireActivity(),it.data.data)
+ CallKit.startCallKitLogic(requireActivity(),it.data.url)
+ }else{
+ val appId = "wx032bacb749c0dcb0" // 填移动应用(App)的 AppId,非小程序的 AppID
+
+ val api = WXAPIFactory.createWXAPI(requireContext(), appId)
+
+ val req = WXLaunchMiniProgram.Req()
+ req.userName = it.data.wxid // 填小程序原始id
+
+ req.path = it.data.url ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
+ if(it.data.wxtype== 1){
+ req.miniprogramType =
+ WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
+ }else{
+ req.miniprogramType =
+ WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW // 可选打开 开发版,体验版和正式版
+ }
+
+ api.sendReq(req)
}
}
}
diff --git a/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt
index 12e1069..a07da62 100644
--- a/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt
+++ b/base/src/main/java/com/xty/base/h5/CloudJSBridge.kt
@@ -59,7 +59,8 @@ open class CloudJSBridge(val context: Context, val listener: IJsBridge) {
@JavascriptInterface
fun gotoElectronicFence(str: String?){
LogUtils.e("CloudJSBridge","gotoElectronicFence str")
- ToastUtils(context).showToast("敬请期待")
+ //ToastUtils(context).showToast("敬请期待")
+ RouteManager.goAct(ARouterUrl.ELECTRONIC_FENCE_SET_ACT)
}
diff --git a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
index d1b3fa9..8674b58 100644
--- a/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
+++ b/common/src/main/java/com/xty/common/arouter/ARouterUrl.kt
@@ -135,6 +135,11 @@ class ARouterUrl {
const val FAMILY_REPORT_UPLOAD_ACT = "/health/com/zj365/health/act/healthrecord/UploadHealthRecordAct"
const val FAMILY_REPORT_LIST_ACT = "/health/com/zj365/health/act/healthrecord/HealthRecordsListAct"
+ //健康医典
+ const val HEALTH_CODE_MAIN_ACT = "/health/com/zj365/health/act/healthcode/HealthCodeMainAct"
+ const val HEALTH_BODY_INQUIRY_ACT = "/health/com/zj365/health/act/healthcode/HealthBodyInquiryAct"
+ const val HEALTH_BODY_PART_ACT = "/health/com/zj365/health/act/healthcode/HealthBodyPartAct"
+
//心理测试
const val PSYCHOLOGICAL_TEST_LIST_ACT = "/health/com/zj365/health/act/psychological/PsychologicalTestMainAct"
@@ -214,6 +219,10 @@ class ARouterUrl {
const val MY_ORGAN= "/mine/com/zj365/dc/mime/act/MyOrganAct"
const val SPORT_DETAIL = "/mine/com/zj365/dc/mime/act/SportDetailAct"
+ //地理围栏
+ const val ELECTRONIC_FENCE_SET_ACT = "/mine/com/zj365/dc/mime/act/electronicfence/ElectronicFenceSettingAct"
+
+
const val CHANGE_PHONE = "/mine/com/zj365/dc/mime/act/ChangePhoneAct"
const val VERSION_LIST = "/mine/com/zj365/dc/mime/act/VersionList"
@@ -250,5 +259,6 @@ class ARouterUrl {
//调试模式
const val DEBUG = "/mine/com/zj365/dc/mime/act/DebugAct"
+
}
}
\ No newline at end of file
diff --git a/common/src/main/java/com/xty/common/weight/AdapterStick.java b/common/src/main/java/com/xty/common/weight/AdapterStick.java
new file mode 100644
index 0000000..ac708ca
--- /dev/null
+++ b/common/src/main/java/com/xty/common/weight/AdapterStick.java
@@ -0,0 +1,14 @@
+package com.xty.common.weight;
+
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+public interface AdapterStick extends Stick{
+ void onBindViewHolder(T holder, int position);
+ RecyclerView.ViewHolder createViewHolder(ViewGroup parent, int viewType);
+ int getItemViewType(int position);
+ int getItemCount();
+ void bindViewHolder(T holder, int position);
+ int getHeaderCount();
+}
\ No newline at end of file
diff --git a/common/src/main/java/com/xty/common/weight/PinnedHeaderItemDecoration.java b/common/src/main/java/com/xty/common/weight/PinnedHeaderItemDecoration.java
new file mode 100644
index 0000000..1c540e9
--- /dev/null
+++ b/common/src/main/java/com/xty/common/weight/PinnedHeaderItemDecoration.java
@@ -0,0 +1,246 @@
+package com.xty.common.weight;
+
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.Region;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class PinnedHeaderItemDecoration extends RecyclerView.ItemDecoration {
+
+ private final static String TAG = PinnedHeaderItemDecoration.class.getSimpleName();
+
+ /**
+ * 当前绘制的pinnedheaderview
+ */
+ View mPinnedHeaderView = null;
+
+ /**
+ * pinnedheaderview的位置
+ */
+ int mHeaderPosition = -1;
+
+ /**
+ * 装载所有的viewtype
+ */
+ Map mPinnedViewTypes = new HashMap();
+
+ /**
+ * pinnedheaderview的上边距
+ */
+ private int mPinnedHeaderTop;
+
+ /**
+ * pinnedheaderview的裁剪区域
+ */
+ private Rect mClipBounds;
+ private Builder mBuilder;
+ private int mFirstVisiblePosition;
+
+ private PinnedHeaderItemDecoration(Builder builder) {
+
+ mBuilder = builder;
+ }
+
+ /**
+ * @param c
+ * @param parent
+ * @param state
+ */
+ @Override
+ public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
+ createPinnedHeader(parent);
+
+ if (mPinnedHeaderView != null) {
+ // check overlap section view.
+ //TODO support only vertical header currently.
+ final int headerEndAt = mPinnedHeaderView.getTop() + mPinnedHeaderView.getHeight() + 1;
+ final View v = parent.findChildViewUnder(c.getWidth() / 2, headerEndAt);
+ if (isPinnedView(parent, v)) {
+ mPinnedHeaderTop = v.getTop() - mPinnedHeaderView.getHeight();
+ } else {
+ mPinnedHeaderTop = 0;
+ }
+
+ if (isHeaderView(mFirstVisiblePosition)) {
+ return;
+ }
+ mClipBounds = c.getClipBounds();
+ mClipBounds.top = mPinnedHeaderTop + mPinnedHeaderView.getHeight();
+ c.clipRect(mClipBounds);
+ }
+ }
+
+
+ /**
+ * @param c
+ * @param parent
+ * @param state
+ */
+ @Override
+ public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
+ if (mPinnedHeaderView != null && !isHeaderView(mFirstVisiblePosition)) {
+ c.save();
+
+ mClipBounds.top = 0;
+ c.clipRect(mClipBounds, Region.Op.UNION);
+ c.translate(0, mPinnedHeaderTop);
+ mPinnedHeaderView.draw(c);
+
+ c.restore();
+ }
+ }
+
+ private void createPinnedHeader(RecyclerView parent) {
+ checkCache(parent);
+
+ // get LinearLayoutManager.
+ //final LinearLayoutManager linearLayoutManager = getLayoutManager(parent);
+ final RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
+ if (layoutManager instanceof LinearLayoutManager) {
+ mFirstVisiblePosition = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
+ } else if (layoutManager instanceof GridLayoutManager) {
+ mFirstVisiblePosition = ((GridLayoutManager) layoutManager).findFirstVisibleItemPosition();
+ } else {
+ return;
+ }
+
+ // mFirstVisiblePosition = gridLayoutManager.findFirstVisibleItemPosition();
+
+ final int headerPosition = findPinnedHeaderPosition(mFirstVisiblePosition);
+
+ if (isHeaderView(mFirstVisiblePosition)) {
+ return;
+ }
+
+ if (headerPosition >= 0 && mHeaderPosition != headerPosition) {
+ mHeaderPosition = headerPosition;
+ final int viewType = mBuilder.mStickProvider.getItemViewType(headerPosition);
+
+ final RecyclerView.ViewHolder pinnedViewHolder = mBuilder.mStickProvider.createViewHolder(parent, viewType);
+ mBuilder.mStickProvider.bindViewHolder(pinnedViewHolder, headerPosition);
+ mPinnedHeaderView = pinnedViewHolder.itemView;
+
+ // read layout parameters
+ ViewGroup.LayoutParams layoutParams = mPinnedHeaderView.getLayoutParams();
+ if (layoutParams == null) {
+ layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ mPinnedHeaderView
+ .setLayoutParams(layoutParams);
+ }
+
+
+ int heightMode = View.MeasureSpec.getMode(layoutParams.height);
+ int heightSize = View.MeasureSpec.getSize(layoutParams.height);
+
+ if (heightMode == View.MeasureSpec.UNSPECIFIED) {
+ heightMode = View.MeasureSpec.EXACTLY;
+ }
+
+ final int maxHeight = parent.getHeight() - parent.getPaddingTop() - parent.getPaddingBottom();
+ if (heightSize > maxHeight) {
+ heightSize = maxHeight;
+ }
+
+ // measure & layout
+ final int ws = View.MeasureSpec.makeMeasureSpec(parent.getWidth() - parent.getPaddingLeft() - parent.getPaddingRight(), View.MeasureSpec.EXACTLY);
+ final int hs = View.MeasureSpec.makeMeasureSpec(heightSize, heightMode);
+ mPinnedHeaderView.measure(ws, hs);
+
+ mPinnedHeaderView.layout(0, 0, mPinnedHeaderView.getMeasuredWidth(), mPinnedHeaderView.getMeasuredHeight());
+ }
+ }
+
+
+ /**
+ * return the first visible view position is headerview
+ *
+ * @param firstVisiblePosition first visible view position
+ */
+ private boolean isHeaderView(int firstVisiblePosition) {
+ final int position = firstVisiblePosition - mBuilder.mStickProvider.getHeaderCount();
+ if (position < 0) {
+ return true;
+ }
+ return false;
+ }
+
+
+ private int findPinnedHeaderPosition(int fromPosition) {
+ if (fromPosition > mBuilder.mStickProvider.getItemCount()) {
+ return -1;
+ }
+
+ for (int position = fromPosition; position >= 0; position--) {
+ final int viewType = mBuilder.mStickProvider.getItemViewType(position);
+ if (isPinnedViewType(viewType)) {
+ return position;
+ }
+ }
+
+ return -1;
+ }
+
+ private boolean isPinnedViewType(int viewType) {
+ if (!mPinnedViewTypes.containsKey(viewType)) {
+ mPinnedViewTypes.put(viewType, mBuilder.mStickProvider.isPinnedViewType(viewType));
+ }
+ return mPinnedViewTypes.get(viewType);
+ }
+
+ private boolean isPinnedView(RecyclerView parent, View v) {
+ final int position = parent.getChildAdapterPosition(v) /*- mBuilder.mStickProvider.getHeaderCount()*/;
+ if (position == RecyclerView.NO_POSITION) {
+ return false;
+ }
+ final int viewType = mBuilder.mStickProvider.getItemViewType(position);
+
+ return isPinnedViewType(viewType);
+ }
+
+ private void checkCache(RecyclerView parent) {
+ RecyclerView.Adapter adapter = parent.getAdapter();
+ if (mBuilder.mStickProvider != adapter) {
+ disableCache();
+ }
+ }
+
+
+ private void disableCache() {
+ mPinnedHeaderView = null;
+ mHeaderPosition = -1;
+ mPinnedViewTypes.clear();
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+
+ public static class Builder {
+
+ private AdapterStick mStickProvider;
+ private PinnedHeaderItemDecoration mPinnedHeaderItemDecoration;
+
+
+ public Builder adapterProvider(AdapterStick stickProvider) {
+ mStickProvider = stickProvider;
+ return this;
+ }
+
+ public PinnedHeaderItemDecoration build() {
+ if (mPinnedHeaderItemDecoration == null) {
+ mPinnedHeaderItemDecoration = new PinnedHeaderItemDecoration(this);
+ }
+ return mPinnedHeaderItemDecoration;
+ }
+ }
+
+}
diff --git a/common/src/main/java/com/xty/common/weight/SideBar.java b/common/src/main/java/com/xty/common/weight/SideBar.java
new file mode 100644
index 0000000..585491f
--- /dev/null
+++ b/common/src/main/java/com/xty/common/weight/SideBar.java
@@ -0,0 +1,157 @@
+package com.xty.common.weight;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.drawable.ColorDrawable;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.TextView;
+
+import com.xty.common.R;
+
+public class SideBar extends View {
+ // 触摸事件
+ private OnTouchingLetterChangedListener onTouchingLetterChangedListener;
+ // 26个字母
+ public static String[] b = {"A", "B", "C", "D", "E", "F", "G", "H", "I",
+ "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
+ "W", "X", "Y", "Z", "#"};
+
+ /**
+ * 过滤
+ *
+ * @param filterData
+ */
+ public void setFilterData(String[] filterData) {
+ b = filterData;
+ invalidate();
+ }
+
+
+ private int choose = -1;// 选中
+ private Paint paint = new Paint();
+
+ private TextView mTextDialog;
+
+ public void setTextView(TextView mTextDialog) {
+ this.mTextDialog = mTextDialog;
+ }
+
+
+ public SideBar(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public SideBar(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public SideBar(Context context) {
+ super(context);
+ }
+
+ /**
+ * 重写这个方法
+ */
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ // 获取焦点改变背景颜色.
+ int height = getHeight();// 获取对应高度
+ int width = getWidth(); // 获取对应宽度
+ if (b.length > 0) {
+ int singleHeight = height / b.length;// 获取每一个字母的高度
+ for (int i = 0; i < b.length; i++) {
+ paint.setColor(Color.rgb(85, 100, 129));
+ paint.setTextSize(15);
+ paint.setAntiAlias(true);
+ // 选中的状态
+ if (i == choose) {
+ paint.setColor(Color.parseColor("#8200FF"));
+ paint.setFakeBoldText(true);
+ }
+ // x坐标等于中间-字符串宽度的一半.
+ float xPos = width / 2 - paint.measureText(b[i]) / 2;
+ float yPos = singleHeight * i + singleHeight / 2;
+ canvas.drawText(b[i], xPos, yPos, paint);
+ paint.reset();// 重置画笔
+ }
+ }
+ }
+
+ /**
+ * 更新当前选中的字体颜色
+ * @param text 当前字体文本
+ */
+ public void changeCurrentTextColor(String text){
+ for(int i=0;i= 0 && c < b.length) {
+ if (listener != null) {
+ listener.onTouchingLetterChanged(b[c]);
+ }
+ if (mTextDialog != null) {
+ mTextDialog.setText(b[c]);
+ mTextDialog.setVisibility(View.VISIBLE);
+ }
+
+ choose = c;
+ invalidate();
+ }
+ }
+ break;
+ default:
+ //noinspection deprecation
+ setBackgroundDrawable(new ColorDrawable(0x00000000));
+ choose = -1;//
+ if (mTextDialog != null) {
+ mTextDialog.setVisibility(View.GONE);
+ }
+ invalidate();
+ break;
+ }
+ return true;
+ }
+
+ /**
+ * 向外公开的方法
+ *
+ * @param onTouchingLetterChangedListener 触摸事件
+ */
+ public void setOnTouchingLetterChangedListener(
+ OnTouchingLetterChangedListener onTouchingLetterChangedListener) {
+ this.onTouchingLetterChangedListener = onTouchingLetterChangedListener;
+ }
+
+ /**
+ * 接口
+ *
+ * @author coder
+ */
+ public interface OnTouchingLetterChangedListener {
+ void onTouchingLetterChanged(String s);
+ }
+
+
+
+}
diff --git a/common/src/main/java/com/xty/common/weight/Stick.java b/common/src/main/java/com/xty/common/weight/Stick.java
new file mode 100644
index 0000000..acfde1c
--- /dev/null
+++ b/common/src/main/java/com/xty/common/weight/Stick.java
@@ -0,0 +1,5 @@
+package com.xty.common.weight;
+
+public interface Stick {
+ boolean isPinnedViewType(int viewType);
+}
diff --git a/common/src/main/res/drawable/shape_oval_02c.xml b/common/src/main/res/drawable/shape_oval_02c.xml
new file mode 100644
index 0000000..8a9d7e0
--- /dev/null
+++ b/common/src/main/res/drawable/shape_oval_02c.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_arrow_rigth_black.png b/common/src/main/res/mipmap-xxhdpi/icon_arrow_rigth_black.png
new file mode 100644
index 0000000..e48516c
Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_arrow_rigth_black.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_forbid_enter.png b/common/src/main/res/mipmap-xxhdpi/icon_forbid_enter.png
new file mode 100644
index 0000000..17c2d41
Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_forbid_enter.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_forbid_leave.png b/common/src/main/res/mipmap-xxhdpi/icon_forbid_leave.png
new file mode 100644
index 0000000..17c2d41
Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_forbid_leave.png differ
diff --git a/common/src/main/res/mipmap-xxhdpi/icon_radius.png b/common/src/main/res/mipmap-xxhdpi/icon_radius.png
new file mode 100644
index 0000000..fc50494
Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/icon_radius.png differ
diff --git a/common/src/main/res/values/attrs.xml b/common/src/main/res/values/attrs.xml
index 0b590a1..c394155 100644
--- a/common/src/main/res/values/attrs.xml
+++ b/common/src/main/res/values/attrs.xml
@@ -98,4 +98,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/AndroidManifest.xml b/health/src/main/AndroidManifest.xml
index 6d268be..58a213f 100644
--- a/health/src/main/AndroidManifest.xml
+++ b/health/src/main/AndroidManifest.xml
@@ -318,6 +318,15 @@
+
+
+
diff --git a/health/src/main/java/com/zj365/health/act/HealthMainAct.kt b/health/src/main/java/com/zj365/health/act/HealthMainAct.kt
index fe9b91a..0d298e5 100644
--- a/health/src/main/java/com/zj365/health/act/HealthMainAct.kt
+++ b/health/src/main/java/com/zj365/health/act/HealthMainAct.kt
@@ -219,11 +219,11 @@ class HealthMainAct : BaseVmAct() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
// binding.xTablayout.getTabAt(position)!!.select()
- onEventObject(
+ /*onEventObject(
baseContext,
UmengEventId.HealthMonitor,
"${getString(tabName[position])}监测详情页"
- )
+ )*/
changeTitle(position)
}
})
diff --git a/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyInquiryAct.kt b/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyInquiryAct.kt
index b094c4d..669a868 100644
--- a/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyInquiryAct.kt
+++ b/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyInquiryAct.kt
@@ -1,16 +1,71 @@
package com.zj365.health.act.healthcode
import android.view.View
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram
+import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.xty.base.act.BaseVmAct
import com.xty.base.vm.BaseVm
+import com.xty.common.arouter.ARouterUrl
import com.zj365.health.databinding.ActHealthBodyInquiryBinding
+import com.zj365.health.vm.HealthBodyInquiryVm
+import me.chunyu.call_kit.CallKit
-class HealthBodyInquiryAct : BaseVmAct() {
+@Route(path = ARouterUrl.HEALTH_BODY_INQUIRY_ACT)
+class HealthBodyInquiryAct : BaseVmAct() {
val binding by lazy { ActHealthBodyInquiryBinding.inflate(layoutInflater) }
+ var id:Long = 0
+
override fun liveObserver() {
+ mViewModel.inquiryDetailLiveData.observe(this){
+ binding.title.mTvTitle.text = "${it.data.ref_name}"
+ binding.tvDepartment.text = it.data.department
+ binding.tvSurvey.text = it.data.condition
+ binding.tvDefinition.text = it.data.seek
+ binding.tvPathogeny.text = it.data.etiology
+
+ }
+
+ mViewModel.videoDoctorLive.observe(this){
+ if (it.data.type == 2){
+ CallKit.startCallKitLogic(this@HealthBodyInquiryAct,it.data.url)
+ }else{
+ val appId = "wx032bacb749c0dcb0" // 填移动应用(App)的 AppId,非小程序的 AppID
+
+ val api = WXAPIFactory.createWXAPI(this@HealthBodyInquiryAct, appId)
+
+ val req = WXLaunchMiniProgram.Req()
+ req.userName = it.data.wxid // 填小程序原始id
+
+ req.path = it.data.url ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
+ if(it.data.wxtype== 1){
+ req.miniprogramType =
+ WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE // 可选打开 开发版,体验版和正式版
+ }else{
+ req.miniprogramType =
+ WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW // 可选打开 开发版,体验版和正式版
+ }
+
+ api.sendReq(req)
+ }
+ }
}
override fun setLayout() = binding.root
+
+ override fun initView() {
+ super.initView()
+ statusBar(binding.title.mView)
+ binding.title.mIvBack.setOnClickListener {
+ finish()
+ }
+ id = intent.extras!!.getLong("id")
+ mViewModel.getInquiryDetail(id)
+
+ binding.imgVideoInquiry.setOnClickListener {
+ mViewModel.getVideoDoctorType()
+ }
+ }
}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyPartAct.kt b/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyPartAct.kt
new file mode 100644
index 0000000..d16f547
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/act/healthcode/HealthBodyPartAct.kt
@@ -0,0 +1,94 @@
+package com.zj365.health.act.healthcode
+
+import android.view.View
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.xty.base.act.BaseVmAct
+import com.xty.base.vm.BaseVm
+import com.xty.common.arouter.ARouterUrl
+import com.xty.common.arouter.RouteManager
+import com.xty.common.weight.PinnedHeaderItemDecoration
+import com.xty.common.weight.SideBar
+import com.xty.network.model.HealthBodyPartBean
+import com.xty.network.model.HealthHeaderEntity
+import com.zj365.health.R
+import com.zj365.health.adapter.healthcode.HealthBodyPartAdapter
+import com.zj365.health.databinding.ActHealthCodeBodyPartBinding
+import com.zj365.health.vm.HealthBodyPartVm
+import retrofit2.http.Path
+
+@Route(path = ARouterUrl.HEALTH_BODY_PART_ACT)
+class HealthBodyPartAct : BaseVmAct() {
+
+ var mTitle:String =""
+ var id:Long = 0
+ val binding by lazy { ActHealthCodeBodyPartBinding.inflate(layoutInflater) }
+
+ val adapter by lazy { HealthBodyPartAdapter() }
+
+ var mList = ArrayList>()
+
+ private var filterSlideList = ArrayList()
+
+ override fun liveObserver() {
+ mViewModel.refiningNameLiveData.observe(this){
+ if (it.data != null){
+ it.data.forEachIndexed { index, healthBodyPartBean ->
+ filterSlideList.add(healthBodyPartBean.first)
+ mList.add(HealthHeaderEntity(healthBodyPartBean.first,HealthBodyPartAdapter.TYPE_HEADER,HealthBodyPartBean.HealthBodyPartChildBean(0L,"",0)))
+ healthBodyPartBean.list.forEachIndexed { index, healthBodyPartChildBean ->
+ mList.add(HealthHeaderEntity(healthBodyPartBean.first,HealthBodyPartAdapter.TYPE_DATA,healthBodyPartChildBean))
+
+ }
+ }
+ // binding.sideBar.setFilterData(filterSlideList.toArray(arrayOf()))
+ adapter.setNewInstance(mList)
+ }
+ }
+ }
+
+ override fun initView() {
+ super.initView()
+ statusBar(binding.title.mView)
+
+ mTitle = intent.extras!!.getString("title","")
+ id = intent.extras!!.getLong("id",0)
+ binding.title.mTvTitle.text = "${mTitle}"
+ binding.title.mIvBack.setOnClickListener {
+ finish()
+ }
+
+ mViewModel.getBodyPart(id)
+
+ /* val phid = PinnedHeaderItemDecoration.Builder(HealthBodyPartAdapter.TYPE_HEADER)
+ .enableDivider(false)
+ .create()
+ phid.setOnScrollToHeaderListener {
+ binding.sideBar.changeCurrentTextColor(it)
+ }
+ binding.recycler!!!!.addItemDecoration(
+ phid)*/
+ binding.sideBar.setOnTouchingLetterChangedListener(SideBar.OnTouchingLetterChangedListener { s: String ->
+ val position: Int = adapter!!.getPositionForSection(s.get(0))
+ if (position != -1) {
+ binding.recycler!!.layoutManager!!.scrollToPosition(position)
+ }
+ })
+
+ binding.recycler.adapter = adapter
+ binding.recycler.layoutManager = LinearLayoutManager(this)
+
+ adapter.setOnItemChildClickListener { adapter, view, position ->
+ when(view.id){
+ R.id.rx_child ->{
+ bundle.clear()
+ bundle.putLong("id",mList[position].data.ref_id)
+ RouteManager.goAct(ARouterUrl.HEALTH_BODY_INQUIRY_ACT,bundle)
+ }
+ }
+ }
+
+ }
+
+ override fun setLayout() = binding.root
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/act/healthcode/HealthCodeMainAct.kt b/health/src/main/java/com/zj365/health/act/healthcode/HealthCodeMainAct.kt
index 9e305a7..0e757e1 100644
--- a/health/src/main/java/com/zj365/health/act/healthcode/HealthCodeMainAct.kt
+++ b/health/src/main/java/com/zj365/health/act/healthcode/HealthCodeMainAct.kt
@@ -1,13 +1,91 @@
package com.zj365.health.act.healthcode
+import android.text.TextUtils
+import android.view.KeyEvent
import android.view.View
+import android.view.inputmethod.EditorInfo
+import android.widget.TextView
+import android.widget.TextView.OnEditorActionListener
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.tamsiree.rxkit.RxKeyboardTool
import com.xty.base.act.BaseVmAct
import com.xty.base.vm.BaseVm
+import com.xty.common.arouter.ARouterUrl
+import com.xty.common.arouter.RouteManager
+import com.xty.common.util.CommonToastUtils
+import com.xty.network.model.HealthBodyBean
+import com.zj365.health.adapter.healthcode.HealthCodeMainAdapter
import com.zj365.health.databinding.ActHealthCodeMainBinding
+import com.zj365.health.vm.HealthCodeMainVm
-class HealthCodeMainAct : BaseVmAct() {
+@Route(path = ARouterUrl.HEALTH_CODE_MAIN_ACT)
+class HealthCodeMainAct : BaseVmAct() {
val binding by lazy { ActHealthCodeMainBinding.inflate(layoutInflater) }
+
+ var searchStr:String? = null
+
+ val leftAdapter by lazy { HealthCodeMainAdapter() }
+
+ val rightAdapter by lazy { HealthCodeMainAdapter() }
+
override fun liveObserver() {
+ mViewModel.allBodyLiveData.observe(this){
+ leftAdapter.setNewInstance(it.data.subList(0,6))
+ rightAdapter.setNewInstance(it.data.subList(6,it.data.size))
+ }
+ }
+
+ override fun initView() {
+ super.initView()
+ statusBar(binding.title.mView)
+ binding.title.mTvTitle.text = "健康医典"
+ binding.title.mIvBack.setOnClickListener {
+ finish()
+ }
+
+ binding.etSearch.setOnEditorActionListener(object : OnEditorActionListener{
+ override fun onEditorAction(p0: TextView?, p1: Int, p2: KeyEvent?): Boolean {
+ if(p1 == EditorInfo.IME_ACTION_SEARCH){
+ searchStr = binding.etSearch.text.toString().trim()
+ if(TextUtils.isEmpty(searchStr)){
+ CommonToastUtils.showToast("请输入搜索内容")
+ return true
+ }
+
+
+ RxKeyboardTool.hideSoftInput(this@HealthCodeMainAct)
+ return true
+
+ }
+ return false
+ }
+
+ })
+
+ mViewModel.getAllBody()
+
+ binding.leftRecycler.adapter = leftAdapter
+ binding.leftRecycler.layoutManager = GridLayoutManager(this,6,LinearLayoutManager.HORIZONTAL,false)
+
+ leftAdapter.setOnItemClickListener { adapter, view, position ->
+ var healthBodyBean = adapter.data[position] as HealthBodyBean
+ bundle.clear()
+ bundle.putLong("id",healthBodyBean.id)
+ bundle.putString("title",healthBodyBean.med_name)
+ RouteManager.goAct(ARouterUrl.HEALTH_BODY_PART_ACT,bundle)
+ }
+
+ binding.rightRecycler.adapter = rightAdapter
+ binding.rightRecycler.layoutManager = GridLayoutManager(this,6,LinearLayoutManager.HORIZONTAL,false)
+ rightAdapter.setOnItemClickListener { adapter, view, position ->
+ var healthBodyBean = adapter.data[position] as HealthBodyBean
+ bundle.clear()
+ bundle.putLong("id",healthBodyBean.id)
+ bundle.putString("title",healthBodyBean.med_name)
+ RouteManager.goAct(ARouterUrl.HEALTH_BODY_PART_ACT,bundle)
+ }
}
override fun setLayout() = binding.root
diff --git a/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordsListAct.kt b/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordsListAct.kt
index c0e9465..a3f4137 100644
--- a/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordsListAct.kt
+++ b/health/src/main/java/com/zj365/health/act/healthrecord/HealthRecordsListAct.kt
@@ -1,12 +1,21 @@
package com.zj365.health.act.healthrecord
+import android.graphics.Rect
+import android.text.TextUtils
+import android.view.KeyEvent
import android.view.View
+import android.view.inputmethod.EditorInfo
+import android.widget.TextView
+import android.widget.TextView.OnEditorActionListener
import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
import com.alibaba.android.arouter.facade.annotation.Route
+import com.tamsiree.rxkit.RxKeyboardTool
import com.xty.base.act.BaseListAct
import com.xty.base.vm.BaseVm
import com.xty.common.arouter.ARouterUrl
import com.xty.common.arouter.RouteManager
+import com.xty.common.util.CommonToastUtils
import com.zj365.health.adapter.healthrecord.HealthRecordsAdapter
import com.zj365.health.databinding.ActHealthRecordBinding
import com.zj365.health.databinding.ActHealthRecordsListBinding
@@ -19,14 +28,23 @@ class HealthRecordsListAct : BaseListAct() {
val mAdapter by lazy { HealthRecordsAdapter()}
+ var searchTitle:String ? = null
+
override fun initAdapter() {
binding.recyclerView.adapter = mAdapter
binding.recyclerView.layoutManager = LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)
+ binding.recyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() {
+ override fun getItemOffsets(outRect: Rect, itemPosition: Int, parent: RecyclerView) {
+ super.getItemOffsets(outRect, itemPosition, parent)
+ outRect.bottom = 12
+ }
+ })
+ setRecycleRefresh(binding.recyclerView,binding.mRefresh,true)
}
override fun loadData() {
- mViewModel.getHealthRecordList()
+ mViewModel.getHealthRecordList(searchTitle,page.toString())
}
override fun initView() {
@@ -39,11 +57,42 @@ class HealthRecordsListAct : BaseListAct() {
binding.tvUploadReport.setOnClickListener {
RouteManager.goAct(ARouterUrl.FAMILY_REPORT_UPLOAD_ACT)
}
+ binding.etSearch.setOnEditorActionListener(object :OnEditorActionListener{
+ override fun onEditorAction(p0: TextView?, p1: Int, p2: KeyEvent?): Boolean {
+ if(p1 == EditorInfo.IME_ACTION_SEARCH){
+ searchTitle = binding.etSearch.text.toString().trim()
+ if(TextUtils.isEmpty(searchTitle)){
+ CommonToastUtils.showToast("请输入搜索内容")
+ return true
+ }
+
+ page = 1
+ loadData()
+ RxKeyboardTool.hideSoftInput(this@HealthRecordsListAct)
+ return true
+
+ }
+ return false
+ }
+ })
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ page = 1
+ loadData()
}
override fun liveObserver() {
mViewModel.healthReportListLiveData.observe(this){
- mAdapter.setNewInstance(it.data.records)
+ if (page > 1){
+ mAdapter.addData(it.data.records)
+
+ }else{
+ mAdapter.setNewInstance(it.data.records)
+
+ }
}
}
diff --git a/health/src/main/java/com/zj365/health/act/healthrecord/UploadHealthRecordAct.kt b/health/src/main/java/com/zj365/health/act/healthrecord/UploadHealthRecordAct.kt
index d072831..0133c5b 100644
--- a/health/src/main/java/com/zj365/health/act/healthrecord/UploadHealthRecordAct.kt
+++ b/health/src/main/java/com/zj365/health/act/healthrecord/UploadHealthRecordAct.kt
@@ -75,6 +75,9 @@ class UploadHealthRecordAct : BaseVmAct() {
}
mViewModel.submitReport(reportTitle,reportType,reportTime,strBuilder.toString(),reportExplain)
}
+ mViewModel.submitLiveData.observe(this){
+ finish()
+ }
}
@@ -88,7 +91,7 @@ class UploadHealthRecordAct : BaseVmAct() {
binding.tvUploadTime.setOnClickListener {
RxKeyboardTool.hideSoftInput(this)
- timSelect.selectTime(it, "yyyy-MM-dd HH:mm")
+ timSelect.selectTime(it, "yyyy-MM-dd HH:mm:ss")
}
binding.tvUploadType.setOnClickListener {
diff --git a/health/src/main/java/com/zj365/health/act/psychological/PsychologicalTestMainAct.kt b/health/src/main/java/com/zj365/health/act/psychological/PsychologicalTestMainAct.kt
index 6e4c790..8f452c5 100644
--- a/health/src/main/java/com/zj365/health/act/psychological/PsychologicalTestMainAct.kt
+++ b/health/src/main/java/com/zj365/health/act/psychological/PsychologicalTestMainAct.kt
@@ -45,7 +45,7 @@ class PsychologicalTestMainAct : BaseListAct() {
override fun liveObserver() {
mViewModel.psychologicalListData.observe(this){
if (page > 1){
- mAdapter.setList(it.data.records)
+ mAdapter.addData(it.data.records)
}else{
mAdapter.setNewInstance(it.data.records)
diff --git a/health/src/main/java/com/zj365/health/adapter/healthcode/HealthBodyPartAdapter.kt b/health/src/main/java/com/zj365/health/adapter/healthcode/HealthBodyPartAdapter.kt
new file mode 100644
index 0000000..7ea9fb1
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/adapter/healthcode/HealthBodyPartAdapter.kt
@@ -0,0 +1,45 @@
+package com.zj365.health.adapter.healthcode
+
+import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
+import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.xty.network.model.HealthBodyPartBean
+import com.xty.network.model.HealthHeaderEntity
+import com.zj365.health.R
+
+class HealthBodyPartAdapter: BaseMultiItemQuickAdapter, BaseViewHolder>() {
+ companion object{
+ const val TYPE_HEADER = 1
+ const val TYPE_DATA = 2
+ }
+
+ init {
+ addItemType(TYPE_HEADER, R.layout.item_health_code_body_part_header)
+ addItemType(TYPE_DATA,R.layout.item_health_code_body_part_child)
+ addChildClickViewIds(R.id.rx_child)
+ }
+ override fun convert(holder: BaseViewHolder, item: HealthHeaderEntity) {
+
+ when(item.itemType){
+ TYPE_HEADER ->{
+ holder.setText(R.id.tv_letter,item.first)
+ }
+ TYPE_DATA ->{
+ holder.setText(R.id.tv_name,item.data.ref_name)
+ holder.setText(R.id.tv_num,"查看:${item.data.view_num}")
+ }
+ }
+
+ }
+
+ fun getPositionForSection(section: Char): Int {
+ for (i in 0 until itemCount) {
+ val sortStr: String = data.get(i).first
+ val firstChar = sortStr.toUpperCase()[0]
+ if (firstChar == section) {
+ return i
+ }
+ }
+ return -1
+ }
+
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/adapter/healthcode/HealthCodeMainAdapter.kt b/health/src/main/java/com/zj365/health/adapter/healthcode/HealthCodeMainAdapter.kt
new file mode 100644
index 0000000..01c90f6
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/adapter/healthcode/HealthCodeMainAdapter.kt
@@ -0,0 +1,14 @@
+package com.zj365.health.adapter.healthcode
+
+import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.xty.base.adapter.BaseAdapter
+import com.xty.network.model.HealthBodyBean
+import com.zj365.health.R
+
+class HealthCodeMainAdapter : BaseAdapter(R.layout.item_health_code_main) {
+ override fun convert(holder: BaseViewHolder, item: HealthBodyBean) {
+ holder.setText(R.id.tv_body_sort,"${item.med_code}")
+ holder.setText(R.id.tv_body_name,item.med_name)
+ holder.setText(R.id.tv_body_num,"查看:${item.view_num}人")
+ }
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/adapter/healthrecord/HealthRecordsAdapter.kt b/health/src/main/java/com/zj365/health/adapter/healthrecord/HealthRecordsAdapter.kt
index d82859d..a853c1a 100644
--- a/health/src/main/java/com/zj365/health/adapter/healthrecord/HealthRecordsAdapter.kt
+++ b/health/src/main/java/com/zj365/health/adapter/healthrecord/HealthRecordsAdapter.kt
@@ -1,5 +1,7 @@
package com.zj365.health.adapter.healthrecord
+import android.graphics.Rect
+import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.viewholder.BaseViewHolder
@@ -16,10 +18,10 @@ class HealthRecordsAdapter : BaseAdapter(
holder.setText(R.id.tv_report_time,item.reportTime)
when(item.reportType){
1->{
- holder.setText(R.id.tv_report_type,"体检")
+ holder.setText(R.id.tv_report_type,"体检报告")
}
2->{
- holder.setText(R.id.tv_report_type,"病例")
+ holder.setText(R.id.tv_report_type,"病例报告")
}
else->{
holder.setText(R.id.tv_report_type,"CT或其他影像")
@@ -27,11 +29,22 @@ class HealthRecordsAdapter : BaseAdapter(
}
}
+ var imgs = item.pic.split(",") as MutableList
var imgAdapter = HealthRecordsChildAdapter()
var recycler = holder.getView(R.id.recycler)
+ recycler.addItemDecoration(object : RecyclerView.ItemDecoration() {
+ override fun getItemOffsets(outRect: Rect, itemPosition: Int, parent: RecyclerView) {
+ super.getItemOffsets(outRect, itemPosition, parent)
+ outRect.bottom = 12
+ outRect.right = 12
+ }
+ })
recycler.adapter = imgAdapter
- recycler.layoutManager = LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false)
+ recycler.layoutManager = GridLayoutManager(context,4)
+ if (imgs.size > 0){
+ imgAdapter.setNewInstance(imgs)
+ }
}
}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/adapter/healthrecord/HealthRecordsChildAdapter.kt b/health/src/main/java/com/zj365/health/adapter/healthrecord/HealthRecordsChildAdapter.kt
index 4d9f12e..f0ae09f 100644
--- a/health/src/main/java/com/zj365/health/adapter/healthrecord/HealthRecordsChildAdapter.kt
+++ b/health/src/main/java/com/zj365/health/adapter/healthrecord/HealthRecordsChildAdapter.kt
@@ -1,10 +1,13 @@
package com.zj365.health.adapter.healthrecord
import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.ruffian.library.widget.RImageView
import com.xty.base.adapter.BaseAdapter
+import com.xty.common.setImage
import com.zj365.health.R
-class HealthRecordsChildAdapter : BaseAdapter(R.layout.item_health_report_record_child) {
- override fun convert(holder: BaseViewHolder, item: Any) {
+class HealthRecordsChildAdapter : BaseAdapter(R.layout.item_health_report_record_child) {
+ override fun convert(holder: BaseViewHolder, item: String) {
+ holder.getView(R.id.img_pic).setImage(context,item)
}
}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/vm/HealthBodyInquiryVm.kt b/health/src/main/java/com/zj365/health/vm/HealthBodyInquiryVm.kt
new file mode 100644
index 0000000..d60c02c
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/vm/HealthBodyInquiryVm.kt
@@ -0,0 +1,27 @@
+package com.zj365.health.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.xty.base.vm.BaseVm
+import com.xty.network.model.InquiryInfoDetailBean
+import com.xty.network.model.RespBody
+import com.xty.network.model.VideoDoctorBean
+
+class HealthBodyInquiryVm: BaseVm() {
+
+ val inquiryDetailLiveData by lazy { MutableLiveData>() }
+
+ val videoDoctorLive by lazy { MutableLiveData>() }
+ fun getInquiryDetail(id:Long){
+ startHttp {
+ val body = apiInterface().getInquiryInfo(id)
+ body.getCodeStatus(inquiryDetailLiveData, nowData)
+ }
+ }
+
+ fun getVideoDoctorType(){
+ startHttp {
+ var body= apiInterface().getVideoDoctorType()
+ body.getCodeStatus(videoDoctorLive,nowData)
+ }
+ }
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/vm/HealthBodyPartVm.kt b/health/src/main/java/com/zj365/health/vm/HealthBodyPartVm.kt
new file mode 100644
index 0000000..1057767
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/vm/HealthBodyPartVm.kt
@@ -0,0 +1,17 @@
+package com.zj365.health.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.xty.base.vm.BaseVm
+import com.xty.network.model.HealthBodyPartBean
+import com.xty.network.model.RespBody
+
+class HealthBodyPartVm : BaseVm() {
+
+ val refiningNameLiveData by lazy { MutableLiveData>>() }
+ fun getBodyPart(id:Long){
+ startHttp {
+ val body = apiInterface().getRefiningName(id)
+ body.getCodeStatus(refiningNameLiveData, nowData)
+ }
+ }
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/vm/HealthCodeMainVm.kt b/health/src/main/java/com/zj365/health/vm/HealthCodeMainVm.kt
new file mode 100644
index 0000000..749e5c2
--- /dev/null
+++ b/health/src/main/java/com/zj365/health/vm/HealthCodeMainVm.kt
@@ -0,0 +1,18 @@
+package com.zj365.health.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.xty.base.vm.BaseVm
+import com.xty.network.model.HealthBodyBean
+import com.xty.network.model.RespBody
+
+class HealthCodeMainVm : BaseVm() {
+
+ val allBodyLiveData by lazy { MutableLiveData>>() }
+ fun getAllBody(){
+
+ startHttp {
+ val body = apiInterface().getAllBody()
+ body.getCodeStatus(allBodyLiveData, nowData)
+ }
+ }
+}
\ No newline at end of file
diff --git a/health/src/main/java/com/zj365/health/vm/HealthRecordsListVm.kt b/health/src/main/java/com/zj365/health/vm/HealthRecordsListVm.kt
index 934fff4..5099c10 100644
--- a/health/src/main/java/com/zj365/health/vm/HealthRecordsListVm.kt
+++ b/health/src/main/java/com/zj365/health/vm/HealthRecordsListVm.kt
@@ -1,6 +1,7 @@
package com.zj365.health.vm
import androidx.lifecycle.MutableLiveData
+import com.alibaba.fastjson.JSONObject
import com.xty.base.vm.BaseVm
import com.xty.network.model.HealthReportListBean
import com.xty.network.model.RespBody
@@ -9,9 +10,16 @@ class HealthRecordsListVm : BaseVm() {
val healthReportListLiveData by lazy { MutableLiveData>() }
- fun getHealthRecordList(){
+ fun getHealthRecordList(title:String?,pageNum:String){
startHttp {
- var response = apiInterface().getHealthReportList()
+ var json = JSONObject()
+ title?.let {
+ json.put("title",title)
+
+ }
+ json.put("pageNum",pageNum)
+ json.put("pageSize",10)
+ var response = apiInterface().getHealthReportList(retrofits.getRequestBody(json.toString()))
response.getCodeStatus(healthReportListLiveData, nowData)
}
}
diff --git a/health/src/main/res/layout/act_health_body_inquiry.xml b/health/src/main/res/layout/act_health_body_inquiry.xml
index 654cdf8..130946f 100644
--- a/health/src/main/res/layout/act_health_body_inquiry.xml
+++ b/health/src/main/res/layout/act_health_body_inquiry.xml
@@ -27,7 +27,6 @@
android:background="@drawable/shape_round_white"
android:layout_marginLeft="@dimen/dp_14"
android:layout_marginRight="@dimen/dp_14"
- android:layout_marginTop="@dimen/dp_14"
android:paddingTop="22dp"
android:paddingLeft="@dimen/dp_16"
android:paddingRight="@dimen/dp_16"
diff --git a/health/src/main/res/layout/act_health_code_body_part.xml b/health/src/main/res/layout/act_health_code_body_part.xml
new file mode 100644
index 0000000..c2f5e80
--- /dev/null
+++ b/health/src/main/res/layout/act_health_code_body_part.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/act_health_code_main.xml b/health/src/main/res/layout/act_health_code_main.xml
index d2ce8ee..d500129 100644
--- a/health/src/main/res/layout/act_health_code_main.xml
+++ b/health/src/main/res/layout/act_health_code_main.xml
@@ -17,6 +17,9 @@
android:layout_marginRight="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_3"
app:corner_radius="@dimen/dp_18"
+ android:focusable="true"
+ android:visibility="gone"
+ android:focusableInTouchMode="true"
app:background_normal="@color/col_2F2">
-
@@ -64,239 +73,11 @@
app:layout_constraintRight_toLeftOf="@+id/img_body"
android:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="match_parent"
+ android:id="@+id/left_recycler"/>
-
@@ -322,239 +103,10 @@
app:layout_constraintLeft_toRightOf="@+id/img_body"
app:layout_constraintRight_toRightOf="parent">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="match_parent"
+ android:id="@+id/right_recycler"/>
diff --git a/health/src/main/res/layout/act_health_records_list.xml b/health/src/main/res/layout/act_health_records_list.xml
index 6c1e42a..018d903 100644
--- a/health/src/main/res/layout/act_health_records_list.xml
+++ b/health/src/main/res/layout/act_health_records_list.xml
@@ -18,6 +18,8 @@
android:layout_marginTop="@dimen/dp_12"
app:corner_radius="@dimen/dp_18"
android:layout_below="@+id/title"
+ android:focusableInTouchMode="true"
+ android:focusable="true"
app:background_normal="@color/white">
-
diff --git a/health/src/main/res/layout/item_health_code_body_part_child.xml b/health/src/main/res/layout/item_health_code_body_part_child.xml
new file mode 100644
index 0000000..bae76e7
--- /dev/null
+++ b/health/src/main/res/layout/item_health_code_body_part_child.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/item_health_code_body_part_header.xml b/health/src/main/res/layout/item_health_code_body_part_header.xml
new file mode 100644
index 0000000..b288ae7
--- /dev/null
+++ b/health/src/main/res/layout/item_health_code_body_part_header.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/item_health_code_main.xml b/health/src/main/res/layout/item_health_code_main.xml
new file mode 100644
index 0000000..e6ffdc6
--- /dev/null
+++ b/health/src/main/res/layout/item_health_code_main.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health/src/main/res/layout/item_health_report_record_child.xml b/health/src/main/res/layout/item_health_report_record_child.xml
index eaee031..362783d 100644
--- a/health/src/main/res/layout/item_health_report_record_child.xml
+++ b/health/src/main/res/layout/item_health_report_record_child.xml
@@ -6,9 +6,11 @@
android:layout_height="wrap_content">
diff --git a/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicFenceSettingAct.kt b/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicFenceSettingAct.kt
index 5150bce..b34132a 100644
--- a/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicFenceSettingAct.kt
+++ b/mine/src/main/java/com/zj365/mime/act/electronicfence/ElectronicFenceSettingAct.kt
@@ -1,14 +1,41 @@
package com.zj365.mime.act.electronicfence
+import android.annotation.SuppressLint
+import android.os.Bundle
import android.view.View
+import androidx.core.view.isVisible
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.amap.api.maps.AMap
import com.xty.base.act.BaseVmAct
import com.xty.base.vm.BaseVm
+import com.xty.common.arouter.ARouterUrl
+import com.zj365.mime.adapter.ElectronicFenceAdapter
import com.zj365.mime.databinding.ActivityElectronicFenceSettingBinding
+import com.zj365.mime.vm.ElectronicFenceSettingVm
-class ElectronicFenceSettingAct : BaseVmAct() {
+@Route(path = ARouterUrl.ELECTRONIC_FENCE_SET_ACT)
+class ElectronicFenceSettingAct : BaseVmAct() {
val binding by lazy { ActivityElectronicFenceSettingBinding.inflate(layoutInflater) }
+
+ val mAdapter by lazy { ElectronicFenceAdapter() }
+
+ var type: Int = 0 //0 列表页 1 设置页
+
+ private var aMap: AMap? = null
override fun liveObserver() {
+ mViewModel.electronicFenceListLiveDate.observe(this){
+ if(it.data.count == 0){
+ binding.inEmpty.root.visibility = View.VISIBLE
+ binding.recycler.visibility = View.GONE
+
+ }else{
+ binding.recycler.visibility = View.VISIBLE
+ binding.inEmpty.root.visibility = View.VISIBLE
+ mAdapter.setNewInstance(it.data.list)
+ }
+ }
}
override fun initView() {
@@ -18,7 +45,55 @@ class ElectronicFenceSettingAct : BaseVmAct() {
binding.title.mIvBack.setOnClickListener {
finish()
}
+ aMap = binding.map.map
+ mViewModel.getElectronicFenceList()
+
+ binding.recycler.adapter = mAdapter
+ binding.recycler.layoutManager = LinearLayoutManager(this)
+
+ binding.tvCancel.visibility = View.GONE
+ binding.tvConfirm.setOnClickListener {
+ if (type == 0){
+ binding.llData.visibility = View.GONE
+ type = 1
+ }else{
+ binding.llData.visibility = View.VISIBLE
+ type = 0
+ }
+ }
+
+ binding.tvCancel.setOnClickListener {
+
+ }
}
override fun setLayout() = binding.root
+
+ override fun onDestroy() {
+ super.onDestroy()
+ binding.map.onDestroy()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ binding.map.onPause()
+ }
+
+
+ override fun onResume() {
+ super.onResume()
+ binding.map.onResume()
+ }
+
+ @SuppressLint("MissingSuperCall")
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ binding.map.onSaveInstanceState(outState)
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding.map.onCreate(savedInstanceState)
+ }
+
}
\ No newline at end of file
diff --git a/mine/src/main/java/com/zj365/mime/adapter/ElectronicFenceAdapter.kt b/mine/src/main/java/com/zj365/mime/adapter/ElectronicFenceAdapter.kt
new file mode 100644
index 0000000..b661c4e
--- /dev/null
+++ b/mine/src/main/java/com/zj365/mime/adapter/ElectronicFenceAdapter.kt
@@ -0,0 +1,31 @@
+package com.zj365.mime.adapter
+
+import android.widget.TextView
+import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.xty.base.adapter.BaseAdapter
+import com.xty.network.model.EtFenceListBean
+import com.zj365.mime.R
+
+class ElectronicFenceAdapter : BaseAdapter (R.layout.item_electron_setting){
+ override fun convert(holder: BaseViewHolder, item: EtFenceListBean.EtFenceChildBean) {
+ holder.setText(R.id.tv_address,item.title)
+ holder.setText(R.id.tv_radius,"半径:${item.radius}米")
+ var tvForbid = holder.getView(R.id.tv_forbid)
+
+ if (item.type == 1){
+ var drawableLeft = context.getDrawable(R.mipmap.icon_forbid_enter)
+ tvForbid.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,null,null,null)
+ tvForbid.compoundDrawablePadding = 5
+
+ tvForbid.text = "禁入"
+
+ }else{
+ var drawableLeft = context.getDrawable(R.mipmap.icon_forbid_leave)
+ tvForbid.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,null,null,null)
+ tvForbid.compoundDrawablePadding = 5
+ tvForbid.text = "禁出"
+
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/mine/src/main/java/com/zj365/mime/vm/ElectronicFenceSettingVm.kt b/mine/src/main/java/com/zj365/mime/vm/ElectronicFenceSettingVm.kt
new file mode 100644
index 0000000..d873806
--- /dev/null
+++ b/mine/src/main/java/com/zj365/mime/vm/ElectronicFenceSettingVm.kt
@@ -0,0 +1,17 @@
+package com.zj365.mime.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.xty.base.vm.BaseVm
+import com.xty.network.model.EtFenceListBean
+import com.xty.network.model.RespBody
+
+class ElectronicFenceSettingVm : BaseVm() {
+
+ val electronicFenceListLiveDate by lazy { MutableLiveData>() }
+ fun getElectronicFenceList(){
+ startHttp {
+ var response = apiInterface().getBtFenceList()
+ response.getCodeStatus(electronicFenceListLiveDate, nowData)
+ }
+ }
+}
\ No newline at end of file
diff --git a/mine/src/main/res/layout/activity_electronic_fence_setting.xml b/mine/src/main/res/layout/activity_electronic_fence_setting.xml
index 55e263c..7020673 100644
--- a/mine/src/main/res/layout/activity_electronic_fence_setting.xml
+++ b/mine/src/main/res/layout/activity_electronic_fence_setting.xml
@@ -24,17 +24,25 @@
android:layout_gravity="bottom"
>
-
-
-
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:id="@+id/ll_data">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/network/src/main/java/com/xty/network/ApiInterface.kt b/network/src/main/java/com/xty/network/ApiInterface.kt
index 90a6de5..a48dfdb 100644
--- a/network/src/main/java/com/xty/network/ApiInterface.kt
+++ b/network/src/main/java/com/xty/network/ApiInterface.kt
@@ -1477,7 +1477,7 @@ interface ApiInterface {
* 获取报告记录
*/
@POST("customer/reportData/list")
- suspend fun getHealthReportList():RespBody
+ suspend fun getHealthReportList(@Body rb: RequestBody):RespBody
/**
* 添加报告记录
@@ -1485,6 +1485,21 @@ interface ApiInterface {
@POST("customer/reportData/add")
suspend fun submitHealthReport(@Body rb: RequestBody):RespBody
+ /**
+ * 健康医典-获取数据
+ */
+ @GET("customer/medical/getBody")
+ suspend fun getAllBody():RespBody>
+
+ /**
+ * 健康医典-医典详情
+ */
+ @GET("customer/medical/getMedicalInfo")
+ suspend fun getInquiryInfo(@Query("refId") id:Long ):RespBody
+
+ @GET("customer/medical/getRefiningName")
+ suspend fun getRefiningName(@Query("medId") id:Long):RespBody>
+
/**
* 商品信息接口
@@ -1798,6 +1813,9 @@ interface ApiInterface {
@POST("customer/watch/realmeas")
suspend fun measureWatchData(@Body rb: RequestBody):RespBody
+ @POST("customer/watch/getBtfenceList")
+ suspend fun getBtFenceList():RespBody
+
/**
* 获取演示模式
diff --git a/network/src/main/java/com/xty/network/model/EtFenceListBean.kt b/network/src/main/java/com/xty/network/model/EtFenceListBean.kt
new file mode 100644
index 0000000..5486c89
--- /dev/null
+++ b/network/src/main/java/com/xty/network/model/EtFenceListBean.kt
@@ -0,0 +1,13 @@
+package com.xty.network.model
+
+data class EtFenceListBean(var count:Int,var list:ArrayList){
+ data class EtFenceChildBean(
+ var id:Long,
+ var user_id:Long,
+ var title:String,
+ var radius:Int,
+ var type:Int,
+ var log:String,
+ var lat:String
+ )
+}
diff --git a/network/src/main/java/com/xty/network/model/HealthBodyBean.kt b/network/src/main/java/com/xty/network/model/HealthBodyBean.kt
new file mode 100644
index 0000000..4c10227
--- /dev/null
+++ b/network/src/main/java/com/xty/network/model/HealthBodyBean.kt
@@ -0,0 +1,8 @@
+package com.xty.network.model
+
+data class HealthBodyBean(
+ var view_num:Int,
+ var med_code:Int,
+ var med_name:String,
+ var id:Long
+)
diff --git a/network/src/main/java/com/xty/network/model/HealthBodyPartBean.kt b/network/src/main/java/com/xty/network/model/HealthBodyPartBean.kt
new file mode 100644
index 0000000..6aad8f6
--- /dev/null
+++ b/network/src/main/java/com/xty/network/model/HealthBodyPartBean.kt
@@ -0,0 +1,13 @@
+package com.xty.network.model
+
+data class HealthBodyPartBean(
+
+ val list:ArrayList,
+ val first:String
+) {
+ data class HealthBodyPartChildBean(
+ var ref_id:Long ,
+ var ref_name:String ,
+ var view_num:Int
+ )
+}
diff --git a/network/src/main/java/com/xty/network/model/HealthHeaderEntity.kt b/network/src/main/java/com/xty/network/model/HealthHeaderEntity.kt
new file mode 100644
index 0000000..6c97556
--- /dev/null
+++ b/network/src/main/java/com/xty/network/model/HealthHeaderEntity.kt
@@ -0,0 +1,11 @@
+package com.xty.network.model
+
+import com.chad.library.adapter.base.entity.MultiItemEntity
+
+data class HealthHeaderEntity(
+ val first:String,
+ override val itemType: Int,
+ val data:T
+): MultiItemEntity{
+
+}
diff --git a/network/src/main/java/com/xty/network/model/InquiryInfoDetailBean.kt b/network/src/main/java/com/xty/network/model/InquiryInfoDetailBean.kt
new file mode 100644
index 0000000..ed7440e
--- /dev/null
+++ b/network/src/main/java/com/xty/network/model/InquiryInfoDetailBean.kt
@@ -0,0 +1,23 @@
+package com.xty.network.model
+
+data class InquiryInfoDetailBean(
+ val ref_name:String, //详细名称
+
+ val view_num:Int, //浏览量
+
+ val prevent:String, //预后
+
+ val condition:String, //状况
+
+ val symptom:String,//症状
+ val initial:String, //首字母
+
+ val daily:String, //日常
+ val heal:String, //治疗
+ val department:String, //问诊科室
+
+ val seek:String, //就医
+
+ val etiology:String //病因
+
+)
diff --git a/network/src/main/java/com/xty/network/model/VideoDoctorBean.kt b/network/src/main/java/com/xty/network/model/VideoDoctorBean.kt
index 4c184af..d96e45b 100644
--- a/network/src/main/java/com/xty/network/model/VideoDoctorBean.kt
+++ b/network/src/main/java/com/xty/network/model/VideoDoctorBean.kt
@@ -1,7 +1,10 @@
package com.xty.network.model
data class VideoDoctorBean (
- val data:String,
+ val url:String,
+ val wxtype:Int,// 1=正式 2=测试
+
+ val wxid:String,
val type:Int // 类型:1-和缓(跳转小程序) 2-春雨(H5打开) 3-平安(跳转小程序)
) {
}
\ No newline at end of file