Ver código fonte

<增加医生主机,移动设备,其他主机等菜单>

weizhengliang 2 anos atrás
pai
commit
424a8a8e63
55 arquivos alterados com 1332 adições e 814 exclusões
  1. 1 1
      app/src/main/AndroidManifest.xml
  2. 2 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/api/ApiManager.kt
  3. 5 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/api/DeviceApi.kt
  4. 19 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/api/MobileApi.kt
  5. 1 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt
  6. 4 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApiProvides.kt
  7. 2 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApplicationComponent.kt
  8. 4 4
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/nursehome/DoctorHostContract.kt
  9. 10 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/nursehome/NurseMoveContract.kt
  10. 9 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/nursehome/OtherHostContract.kt
  11. 23 6
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/nursehome/DoctorHostPresenter.kt
  12. 62 7
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/nursehome/NurseMovePresenter.kt
  13. 59 4
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/nursehome/OtherHostPresenter.kt
  14. 64 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/WatchUsingVO.java
  15. 15 3
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/enums/DeviceTypeEnum.java
  16. 7 3
      middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/CommonUtils.java
  17. 14 6
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/AppUpdateActivity.kt
  18. 61 32
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHomeActivity.kt
  19. 30 14
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/CallRecordsItemAdapter.kt
  20. 5 5
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/DoctorHostAdapter.kt
  21. 9 9
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/NurseMoveAdapter.kt
  22. 8 8
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/OtherHostAdapter.kt
  23. 32 73
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/DoctorHostFragment.kt
  24. 58 62
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/NurseMoveFragment.kt
  25. 67 35
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/OtherHostFragment.kt
  26. 63 6
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/SystemSettingsFragment.kt
  27. 74 1
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/AppUpdateHelper.java
  28. 126 0
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/PasswordDialogHelper.java
  29. 23 0
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/StatusBarHelper.java
  30. 1 1
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/TimeTransition.kt
  31. 1 1
      nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/UpdateTipsDialogHelper.java
  32. BIN
      nursehome/src/main/res/drawable/ic_doctor.png
  33. BIN
      nursehome/src/main/res/drawable/ic_doctor_host.png
  34. BIN
      nursehome/src/main/res/drawable/ic_nurse_default.png
  35. BIN
      nursehome/src/main/res/drawable/ic_other_host.png
  36. 5 0
      nursehome/src/main/res/drawable/ic_video_call.xml
  37. 8 0
      nursehome/src/main/res/drawable/radiobutton_background_checked.xml
  38. 8 0
      nursehome/src/main/res/drawable/radiobutton_background_unchecked.xml
  39. 4 0
      nursehome/src/main/res/drawable/responsible_bed_bg.xml
  40. 7 0
      nursehome/src/main/res/drawable/selector_button_bg_color.xml
  41. 1 1
      nursehome/src/main/res/drawable/selt_move_icon.xml
  42. 1 1
      nursehome/src/main/res/drawable/selt_other_host_icon.xml
  43. 22 22
      nursehome/src/main/res/layout/activity_nurse_home.xml
  44. 17 20
      nursehome/src/main/res/layout/adapter_doctor_host.xml
  45. 45 38
      nursehome/src/main/res/layout/adapter_hospital_frame_part.xml
  46. 26 0
      nursehome/src/main/res/layout/adapter_mobile_device.xml
  47. 26 0
      nursehome/src/main/res/layout/adapter_other_host.xml
  48. 13 12
      nursehome/src/main/res/layout/adapter_responsibility_bed.xml
  49. 3 0
      nursehome/src/main/res/layout/fragment_call_records.xml
  50. 51 125
      nursehome/src/main/res/layout/fragment_doctor_host.xml
  51. 26 135
      nursehome/src/main/res/layout/fragment_frame_part.xml
  52. 58 91
      nursehome/src/main/res/layout/fragment_nurse_move.xml
  53. 74 74
      nursehome/src/main/res/layout/fragment_other_host.xml
  54. 67 0
      nursehome/src/main/res/layout/password_dialog_lay.xml
  55. 11 10
      nursehome/src/main/res/layout/right_basic_information.xml

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -18,7 +18,7 @@
     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
     <application
         android:allowBackup="true"
-        android:icon="@mipmap/launcher"
+        android:icon="@mipmap/ic_launcher"
         android:label="@string/javashop_app_name"
         android:supportsRtl="true"
         tools:replace="android:label"

+ 2 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/ApiManager.kt

@@ -194,6 +194,8 @@ object ApiManager {
 
         val API_NurseHome:NurseHomeApi by lazy { apiFactory.createService(NurseHomeApi::class.java, urlManager.buyer) }
 
+        val API_Mobile:MobileApi by lazy { apiFactory.createService(MobileApi::class.java, urlManager.buyer) }
+
         /**
          * @author LDD
          * @From   ApiManager

+ 5 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/DeviceApi.kt

@@ -11,5 +11,10 @@ interface DeviceApi {
     @GET("/deviceNurse/getDeviceByEthMac/{ethMac}")
     fun getDeviceMessage(@Path("ethMac")ethMac:String): Observable<ResponseBody>
 
+    @GET("/deviceNurse/get_devices_by_type_and_part_id/{device_type}/{part_id}")
+    fun getDoctorDevice(@Path("device_type") device_type: Int, @Path("part_id") part_id: Int): Observable<ResponseBody>
 
+    //获取全院所有护士主机
+    @GET("/deviceNurse/get_host_device_by_parent_part_id/{partId}")
+    fun getAllHostDevice(@Path("partId") partId: Int): Observable<ResponseBody>
 }

+ 19 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/MobileApi.kt

@@ -0,0 +1,19 @@
+package com.wdkl.ncs.android.middleware.api
+
+import io.reactivex.Observable
+import okhttp3.ResponseBody
+import retrofit2.http.GET
+import retrofit2.http.Path
+import retrofit2.http.Query
+
+/**
+ * 获取病床 病房列表数据api
+ */
+interface MobileApi{
+
+    @GET("/deviceNurse/get_using/")
+    fun getMobile(@Query("part_id") part_id: Int): Observable<ResponseBody>
+
+    @GET("/deviceNurse/getFrameByNurseDeviceId/{deviceId}")
+    fun getResponsibleBed(@Path("deviceId") deviceId: Int): Observable<ResponseBody>
+}

+ 1 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt

@@ -11,6 +11,7 @@ class Constants {
         var part_name: String? = ""//科室名字
         var partDisplay: String?="" //科室显示名称
         var part_id: Int = -1//科室ID
+        var hospital_id: Int = -1 //医院id
         var mac: String? = ""//设备Mac
         var imei: String? = "" //设备标识符
         var device_serial_id: String? = "" //设备注册唯一id

+ 4 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApiProvides.kt

@@ -269,4 +269,8 @@ class ApiProvides {
         return ApiManager.API_NurseHome
     }
 
+    @Provides
+    fun provideMobileApi() : MobileApi {
+        return ApiManager.API_Mobile
+    }
 }

+ 2 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApplicationComponent.kt

@@ -206,4 +206,6 @@ interface ApplicationComponent {
     fun provideSettingApi(): SettingApi
 
     fun provideNurseHomeApi() : NurseHomeApi
+
+    fun provideMobileApi() : MobileApi
 }

+ 4 - 4
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/nursehome/DoctorHostContract.kt

@@ -2,6 +2,7 @@ package com.wdkl.ncs.android.middleware.logic.contract.nursehome
 
 import com.wdkl.ncs.android.lib.base.BaseContract
 import com.wdkl.ncs.android.middleware.model.dos.BroadcastDO
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
 
 /**
  * 获取所有医生机接口
@@ -12,15 +13,14 @@ interface DoctorHostContract  {
      * 显示所有医生机
      */
     interface View:BaseContract.BaseView{
-    fun showData()
-
-}
+        fun showDoctorDevices(devices: ArrayList<DeviceDO>)
+    }
 
     /**
      * 获取医生机
      */
     interface Presenter:BaseContract.BasePresenter{
-        fun loadData(departments:Int)
+        fun loadDoctorHost(deviceType: Int, partId: Int)
     }
 
 }

+ 10 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/nursehome/NurseMoveContract.kt

@@ -2,6 +2,8 @@ package com.wdkl.ncs.android.middleware.logic.contract.nursehome
 
 import com.wdkl.ncs.android.lib.base.BaseContract
 import com.wdkl.ncs.android.middleware.model.dos.BroadcastDO
+import com.wdkl.ncs.android.middleware.model.dos.FrameDO
+import com.wdkl.ncs.android.middleware.model.vo.WatchUsingVO
 
 /**
  * 护士移动接口
@@ -11,7 +13,10 @@ interface NurseMoveContract {
      * 显示护士信息
      */
    interface View:BaseContract.BaseView{
-       fun showData()
+
+        fun showMobileDevice(data: ArrayList<WatchUsingVO>)
+
+        fun showResponsibleBeds(beds: ArrayList<FrameDO>)
 
    }
 
@@ -19,7 +24,10 @@ interface NurseMoveContract {
      * 获取护士显示
      */
     interface Presenter:BaseContract.BasePresenter{
-        fun loadData()
+
+        fun getMobileDevice(partId: Int)
+
+        fun getResponsibleBeds(deviceId: Int)
     }
 
 }

+ 9 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/nursehome/OtherHostContract.kt

@@ -2,6 +2,7 @@ package com.wdkl.ncs.android.middleware.logic.contract.nursehome
 
 import com.wdkl.ncs.android.lib.base.BaseContract
 import com.wdkl.ncs.android.middleware.model.dos.BroadcastDO
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
 
 /**
  * 获取其他主机接口
@@ -13,14 +14,20 @@ interface OtherHostContract {
      * 显示数据
      */
     interface View:BaseContract.BaseView{
-        fun showData()
+
+        fun showDevice(devices: ArrayList<DeviceDO>)
+
+        fun showAllHostDevice(devices: ArrayList<DeviceDO>)
     }
 
     /**
      * 获取数据
      */
     interface Presenter:BaseContract.BasePresenter{
-        fun loadData()
+
+        fun loadHostDevice(deviceType: Int, partId: Int)
+
+        fun loadAllHostDevice(partId: Int)
     }
 
 }

+ 23 - 6
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/nursehome/DoctorHostPresenter.kt

@@ -3,17 +3,25 @@ package com.wdkl.ncs.android.middleware.logic.presenter.nursehome
 import android.database.Observable
 import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
 import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
+import com.enation.javashop.net.engine.utils.ThreadFromUtils
+import com.google.gson.FieldNamingPolicy
+import com.google.gson.GsonBuilder
+import com.google.gson.reflect.TypeToken
 import com.wdkl.ncs.android.lib.base.RxPresenter
 import com.wdkl.ncs.android.lib.utils.ConnectionObserver
+import com.wdkl.ncs.android.lib.utils.getJsonString
+import com.wdkl.ncs.android.middleware.api.DeviceApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.DoctorHostContract
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
 import io.reactivex.disposables.Disposable
 import javax.inject.Inject
 
 class DoctorHostPresenter@Inject constructor():RxPresenter<DoctorHostContract.View>(),DoctorHostContract.Presenter {
 
 
-
+    @Inject
+    protected lateinit var deviceApi: DeviceApi
 
 
     /**
@@ -28,12 +36,12 @@ class DoctorHostPresenter@Inject constructor():RxPresenter<DoctorHostContract.Vi
      */
     private val observable = object : ConnectionObserver<Any>(){
         override fun onStartWithConnection() {
-        providerView()
+            providerView()
         }
 
         override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
             providerView().complete()
-            providerView().showData()
+            providerView().showDoctorDevices(result as ArrayList<DeviceDO>)
         }
 
         override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
@@ -41,16 +49,25 @@ class DoctorHostPresenter@Inject constructor():RxPresenter<DoctorHostContract.Vi
         }
 
         override fun attachSubscribe(var1: Disposable) {
-        addDisposable(var1)
+            addDisposable(var1)
         }
 
 
     }
 
 
+    override fun loadDoctorHost(deviceType: Int, partId: Int) {
+        deviceApi.getDoctorDevice(deviceType, partId)
+            .map {
+                val data = it.getJsonString()
+                val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                val itemType = object : TypeToken<ArrayList<DeviceDO>>(){}.type
+                val deviceDO = gson.fromJson<ArrayList<DeviceDO>>(data, itemType)
 
-    override fun loadData(departments: Int) {
-
+                return@map deviceDO
+            }
+            .compose(ThreadFromUtils.defaultSchedulers())
+            .subscribe(observable)
     }
 
 

+ 62 - 7
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/nursehome/NurseMovePresenter.kt

@@ -2,15 +2,26 @@ package com.wdkl.ncs.android.middleware.logic.presenter.nursehome
 
 import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
 import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
+import com.enation.javashop.net.engine.utils.ThreadFromUtils
+import com.google.gson.FieldNamingPolicy
+import com.google.gson.GsonBuilder
+import com.google.gson.reflect.TypeToken
 import com.wdkl.ncs.android.lib.base.RxPresenter
 import com.wdkl.ncs.android.lib.utils.ConnectionObserver
+import com.wdkl.ncs.android.lib.utils.getJsonString
+import com.wdkl.ncs.android.middleware.api.MobileApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.NurseMoveContract
+import com.wdkl.ncs.android.middleware.model.dos.FrameDO
+import com.wdkl.ncs.android.middleware.model.vo.WatchUsingVO
 import io.reactivex.disposables.Disposable
 import javax.inject.Inject
 
 class NurseMovePresenter@Inject constructor(): RxPresenter<NurseMoveContract.View>(),NurseMoveContract.Presenter {
 
+    @Inject
+    protected lateinit var mobileApi: MobileApi
+
     /**
      *依赖注入初始化
      */
@@ -23,12 +34,12 @@ class NurseMovePresenter@Inject constructor(): RxPresenter<NurseMoveContract.Vie
      */
     private val observable = object : ConnectionObserver<Any>(){
         override fun onStartWithConnection() {
-       providerView()
+            providerView()
         }
 
         override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
             providerView().complete()
-            providerView().showData()
+            providerView().showMobileDevice(result as ArrayList<WatchUsingVO>)
         }
 
         override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
@@ -36,18 +47,62 @@ class NurseMovePresenter@Inject constructor(): RxPresenter<NurseMoveContract.Vie
         }
 
         override fun attachSubscribe(var1: Disposable) {
-         addDisposable(var1)
+            addDisposable(var1)
         }
 
     }
 
 
-    /**
-     * 获取护士数据
-     */
-    override fun loadData() {
+    private val observable2 = object : ConnectionObserver<Any>() {
+        override fun onStartWithConnection() {
+            providerView()
+        }
+
+        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
+            providerView().complete()
+            providerView().showResponsibleBeds(result as ArrayList<FrameDO>)
+        }
+
+        override fun onErrorWithConnection(
+            error: ExceptionHandle.ResponeThrowable,
+            connectionQuality: ConnectionQuality
+        ) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+
+    }
+
+
+    override fun getMobileDevice(partId: Int) {
+        mobileApi.getMobile(partId)
+            .map {
+                val data = it.getJsonString()
+                val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                val itemType = object : TypeToken<ArrayList<WatchUsingVO>>(){}.type
+                val mobileVO = gson.fromJson<ArrayList<WatchUsingVO>>(data, itemType)
+
+                return@map mobileVO
+            }
+            .compose(ThreadFromUtils.defaultSchedulers())
+            .subscribe(observable)
+    }
 
+    override fun getResponsibleBeds(deviceId: Int) {
+        mobileApi.getResponsibleBed(deviceId)
+            .map {
+                val data = it.getJsonString()
+                val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                val itemType = object : TypeToken<ArrayList<FrameDO>>(){}.type
+                val frameDOs = gson.fromJson<ArrayList<FrameDO>>(data, itemType)
 
+                return@map frameDOs
+            }
+            .compose(ThreadFromUtils.defaultSchedulers())
+            .subscribe(observable2)
     }
 
 

+ 59 - 4
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/nursehome/OtherHostPresenter.kt

@@ -2,10 +2,17 @@ package com.wdkl.ncs.android.middleware.logic.presenter.nursehome
 
 import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
 import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
+import com.enation.javashop.net.engine.utils.ThreadFromUtils
+import com.google.gson.FieldNamingPolicy
+import com.google.gson.GsonBuilder
+import com.google.gson.reflect.TypeToken
 import com.wdkl.ncs.android.lib.base.RxPresenter
 import com.wdkl.ncs.android.lib.utils.ConnectionObserver
+import com.wdkl.ncs.android.lib.utils.getJsonString
+import com.wdkl.ncs.android.middleware.api.DeviceApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.OtherHostContract
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
 import io.reactivex.disposables.Disposable
 import javax.inject.Inject
 
@@ -14,6 +21,8 @@ import javax.inject.Inject
  */
 class OtherHostPresenter@Inject constructor():RxPresenter<OtherHostContract.View>(),OtherHostContract.Presenter {
 
+    @Inject
+    protected lateinit var deviceApi: DeviceApi
 
     /**
      *依赖注入初始化
@@ -26,12 +35,12 @@ class OtherHostPresenter@Inject constructor():RxPresenter<OtherHostContract.View
      */
     private val observable = object : ConnectionObserver<Any>(){
         override fun onStartWithConnection() {
-        providerView()
+            providerView()
         }
 
         override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
             providerView().complete()
-            providerView().showData()
+            providerView().showDevice(result as ArrayList<DeviceDO>)
         }
 
         override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
@@ -39,18 +48,64 @@ class OtherHostPresenter@Inject constructor():RxPresenter<OtherHostContract.View
         }
 
         override fun attachSubscribe(var1: Disposable) {
-        addDisposable(var1)
+            addDisposable(var1)
         }
 
     }
 
 
+    private val observable2 = object : ConnectionObserver<Any>() {
+        override fun onStartWithConnection() {
+            providerView()
+        }
+
+        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
+            providerView().complete()
+            providerView().showAllHostDevice(result as ArrayList<DeviceDO>)
+        }
+
+        override fun onErrorWithConnection(
+            error: ExceptionHandle.ResponeThrowable,
+            connectionQuality: ConnectionQuality
+        ) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+    }
+
+
     /**
      *获取数据
      */
-    override fun loadData() {
+    override fun loadHostDevice(deviceType: Int, partId: Int) {
+        deviceApi.getDoctorDevice(deviceType, partId)
+            .map {
+                val data = it.getJsonString()
+                val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                val itemType = object : TypeToken<ArrayList<DeviceDO>>(){}.type
+                val deviceDO = gson.fromJson<ArrayList<DeviceDO>>(data, itemType)
 
+                return@map deviceDO
+            }
+            .compose(ThreadFromUtils.defaultSchedulers())
+            .subscribe(observable)
     }
 
+    override fun loadAllHostDevice(partId: Int) {
+        deviceApi.getAllHostDevice(partId)
+            .map {
+                val data = it.getJsonString()
+                val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                val itemType = object : TypeToken<ArrayList<DeviceDO>>(){}.type
+                val deviceDO = gson.fromJson<ArrayList<DeviceDO>>(data, itemType)
+
+                return@map deviceDO
+            }
+            .compose(ThreadFromUtils.defaultSchedulers())
+            .subscribe(observable2)
+    }
 
 }

+ 64 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/WatchUsingVO.java

@@ -0,0 +1,64 @@
+package com.wdkl.ncs.android.middleware.model.vo;
+
+import com.wdkl.ncs.android.middleware.model.annotation.Column;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @author
+ * @title: Vothin
+ * @projectName nc
+ * @date 2021/12/1314:43
+ */
+public class WatchUsingVO implements Serializable {
+
+    @Column(name = "id")
+    @ApiModelProperty(name = "id", value = "设备id", hidden = false)
+    private Integer id;
+
+    @Column(name = "eth_mac")
+    @ApiModelProperty(name = "eth_mac", value = "设备mac地址", hidden = false)
+    private String ethMac;
+
+    @Column(name = "clerk_name")
+    @ApiModelProperty(name = "clerk_name", value = "护士名称", hidden = false)
+    private String clerkName;
+
+    @Column(name = "phone_number")
+    @ApiModelProperty(name = "phone_number", value = "设备号码", hidden = false)
+    private String phoneNumber;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getEthMac() {
+        return ethMac;
+    }
+
+    public void setEthMac(String ethMac) {
+        this.ethMac = ethMac;
+    }
+
+    public String getClerkName() {
+        return clerkName;
+    }
+
+    public void setClerkName(String clerkName) {
+        this.clerkName = clerkName;
+    }
+
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
+    }
+}

+ 15 - 3
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/enums/DeviceTypeEnum.java

@@ -28,9 +28,21 @@ public enum DeviceTypeEnum {
     ENTRACE_GUARD(18,"门禁设备"),
     VISITATION(19,"探视机"),
     RS485_TRANSFER(20,"485转换盒"),
-    EMERGENCY_BUTTON(21, "紧急按钮");
-    private int value;
-    private String typeName;
+    EMERGENCY_BUTTON(21, "紧急按钮"),
+    RS485_DOOR_DEVICE(22,"485门口分机"),
+    ALARM_BODY_INDUCTIVE(23, "红外报警器"),
+    ALARM_WATER_OVERFLOW(24, "用水监控器"),
+    ALARM_HOUSEHOLD_GAS(25, "家用燃气报警器"),
+    ALARM_HOUSEHOLD_SMOKE(26, "家用烟雾报警器"),
+    ALARM_BUTTON_SOS(27, "一键报警器"),
+    VITAL_SIGNS_DEVICE(28, "体征设备"),
+    ALARM_RESTRAINT_BAND(29, "约束带报警器"),
+    DOOR_LOCK(30, "门磁传感器"),
+    EMERGENCY_GATEWAY(31, "报警网关"),
+    ALARM_433BUTTON(32, "433报警器"),
+    OTHER_HOST(33, "其他主机");
+    private final int value;
+    private final String typeName;
 
 
     DeviceTypeEnum(int value, String typeName) {

+ 7 - 3
middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/CommonUtils.java

@@ -43,9 +43,13 @@ public class CommonUtils {
     }
 
     public static String subStringBefore(String origin, String delimiter) {
-        int index = origin.indexOf(delimiter);
-        if (index > 0) {
-            return origin.substring(0, index);
+        if (!TextUtils.isEmpty(origin) && !TextUtils.isEmpty(delimiter) && origin.length() > 0) {
+            int index = origin.indexOf(delimiter);
+            if (index > 0) {
+                return origin.substring(0, index);
+            } else {
+                return origin;
+            }
         } else {
             return origin;
         }

+ 14 - 6
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/AppUpdateActivity.kt

@@ -12,6 +12,7 @@ import com.wdkl.ncs.android.component.nursehome.databinding.UpdateLayBinding
 import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
 import com.wdkl.ncs.android.component.nursehome.util.AppUpdateHelper
 import com.wdkl.ncs.android.component.nursehome.util.HttpHelper
+import com.wdkl.ncs.android.component.nursehome.util.StatusBarHelper
 import com.wdkl.ncs.android.lib.base.BaseActivity
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.lib.vo.filter
@@ -40,6 +41,11 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, UpdateLayBinding>(), A
 
     override fun init() {
         Constants.app_updating = true
+
+        if (Build.BOARD.equals("k37mv1_64_bsp")) {
+            StatusBarHelper.toggleStatusBar(activity, true)
+        }
+
         if (!TextUtils.isEmpty(Constants.app_path)) {
             downLoadAPK(urlManager.buyer + "/" + Constants.app_path)
 
@@ -106,12 +112,16 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, UpdateLayBinding>(), A
     fun startInstallApk() {
         if ("YUNPAI_H6".equals(Build.MODEL)) {
             startInstallAppYunPai()
+        } else if (Build.BOARD.equals("k37mv1_64_bsp")) {
+            installAppKaer()
         } else {
             AppUpdateHelper.installAPK(this)
             finish()
         }
+    }
 
-        /*Thread{
+    private fun installAppKaer() {
+        Thread{
             AppUpdateHelper.updateApp(this, object : AppUpdateHelper.UpdateCallBack {
                 override fun onFailed() {
                     runOnUiThread {
@@ -122,14 +132,12 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, UpdateLayBinding>(), A
 
                 override fun onSuccess() {
                     runOnUiThread {
-                        showMessage("升级成功")
-                        //finish()
-                        android.os.Process.killProcess(android.os.Process.myPid())
-                        System.exit(0)
+                        //showMessage("升级成功")
+                        finish()
                     }
                 }
             })
-        }.start()*/
+        }.start()
     }
 
     //云派8寸机app静默升级

+ 61 - 32
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHomeActivity.kt

@@ -1,6 +1,7 @@
 package com.wdkl.ncs.android.component.nursehome.activity
 
 import android.Manifest
+import android.annotation.SuppressLint
 import android.app.NotificationManager
 import android.content.*
 import android.content.pm.PackageManager
@@ -154,10 +155,20 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
     /**
      *初始化操作
      */
+    @SuppressLint("ClickableViewAccessibility")
     override fun init() {
         AppTool.SystemUI.showNavigationBar(this,false)
         AppTool.SystemUI.ImmersiveWithBottomBarColor(this, Color.BLACK)
 
+        //事件点击穿透bug
+        ll_register_view.setOnTouchListener { v, event ->
+            return@setOnTouchListener true
+        }
+
+        if (Build.BOARD.equals("k37mv1_64_bsp")) {
+            StatusBarHelper.toggleStatusBar(activity, true)
+        }
+
         //申请权限
         requestAppPermissions()
     }
@@ -219,6 +230,33 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
 
         //presenter.loadDeviceData(Constants.device_serial_id!!)
 
+        SpeechUtil.getInstance().init(activity) {
+            //如果tts启用失败或者不支持中文则将语音播报切换到音乐模式
+            if (!it) {
+                if (SettingConfig.getTtsMode(activity) == SettingConfig.TTS_ON) {
+                    SettingConfig.setTtsMode(activity, SettingConfig.TTS_OFF)
+                    showMessage("当前TTS不可用,语音播报已切换至铃声模式")
+                }
+            }
+        }
+
+        if (Build.VERSION.SDK_INT >= 23) {
+            if (!Settings.canDrawOverlays(this)) {
+                val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
+                    Uri.parse("package:$packageName"))
+                startActivityForResult(intent, 10)
+            }
+        }
+
+        if (Build.VERSION.SDK_INT >= 23) {
+            if (!Settings.System.canWrite(this)) {
+                val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
+                intent.data = Uri.parse("package:" + this.packageName)
+                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+                startActivityForResult(intent, 11)
+            }
+        }
+
         //检查服务器地址接口是否可用,可用则进入下一步获取设备信息,不可用则稍后再次尝试
         checkServer()
     }
@@ -424,18 +462,10 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
 
         serverSuccess = true
         currentFragment = FramePartFragment()
-        supportFragmentManager.beginTransaction().add(R.id.middle_fralyout, currentFragment, "").commit()
+        supportFragmentManager.beginTransaction().add(R.id.middle_fralyout, currentFragment, "").commitAllowingStateLoss()
 
         currentFragmentThree = CallRecordsFragment()
-        supportFragmentManager.beginTransaction().add(R.id.left_framlyout, currentFragmentThree, "").commit()
-
-        if (Build.VERSION.SDK_INT >= 23) {
-            if (!Settings.canDrawOverlays(this)) {
-                val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
-                    Uri.parse("package:$packageName"))
-                startActivityForResult(intent, 10)
-            }
-        }
+        supportFragmentManager.beginTransaction().add(R.id.left_framlyout, currentFragmentThree, "").commitAllowingStateLoss()
 
         //presenter.loadTcpData()
         presenter.loadServerInfo()
@@ -457,16 +487,6 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
         updateNetState()
         updateTime(true)
 
-        SpeechUtil.getInstance().init(activity) {
-            //如果tts启用失败或者不支持中文则将语音播报切换到音乐模式
-            if (!it) {
-                if (SettingConfig.getTtsMode(activity) == SettingConfig.TTS_ON) {
-                    SettingConfig.setTtsMode(activity, SettingConfig.TTS_OFF)
-                    showMessage("当前TTS不可用,语音播报已切换至铃声模式")
-                }
-            }
-        }
-
         //初始化事件提醒window
         incidentWindow = IncidentWindow(this.activity)
 
@@ -482,11 +502,23 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
         val currentTime = TimeTransition.getDateTime(System.currentTimeMillis(), "MM-dd HH:mm:ss")
         debugLog(TAG, "app last start time: $lastTime, current time: $currentTime")
         SettingConfig.setAppStartTime(activity, currentTime)
+
+        if (Settings.canDrawOverlays(this) && Settings.System.canWrite(this)) {
+            if (Build.BOARD.equals("k37mv1_64_bsp")) {
+                StatusBarHelper.toggleStatusBar(activity, false)
+            }
+        }
     }
 
     override fun onResume() {
         super.onResume()
         updateTcpState()
+
+        if (initialized && Settings.canDrawOverlays(this) && Settings.System.canWrite(this))  {
+            if (Build.BOARD.equals("k37mv1_64_bsp")) {
+                StatusBarHelper.toggleStatusBar(activity, false)
+            }
+        }
     }
 
     /**
@@ -530,6 +562,10 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
         Constants.sip_id = data.sipId
         Constants.eth_ip = data.ethIp
 
+        if (data.hospitalId != null) {
+            Constants.hospital_id = data.hospitalId
+        }
+
         Constants.DEVICE_CODE = data.code
         Constants.DEVICE_MODEL =  data.model
         Constants.DEVICE_HARD_VER =  data.hardVer
@@ -949,7 +985,6 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
            R.id.broadcast_radio_bt ->{
                if (select_id != 1) {
                    select_id = 1
-                   //showLeftFragment(CallRecordsFragment())
                    showRightFragment(BroadcastFragment())
                }
            }
@@ -957,13 +992,11 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
                if (select_id != 2) {
                    select_id = 2
                }
-               //showLeftFragment(CallRecordsFragment())
                showMiddleFragment(VisitManagementFragment())
            }
            R.id.doctor_host_radio_bt ->{
                if (select_id != 3) {
                    select_id = 3
-                   //showLeftFragment(CallRecordsFragment())
                    showMiddleFragment(DoctorHostFragment())
                }
            }
@@ -977,28 +1010,24 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
            R.id.sickbed_radio_bt ->{
                if (select_id != 5) {
                    select_id = 5
-                   //showLeftFragment(CallRecordsFragment())
                    showMiddleFragment(SickbedFragment())
                }
            }
            R.id.nurse_move_radio_bt ->{
                if (select_id != 6) {
                    select_id = 6
-                   //showLeftFragment(CallRecordsFragment())
                    showMiddleFragment(NurseMoveFragment())
                }
            }
            R.id.other_host_radio_bt ->{
                if (select_id != 7) {
                    select_id = 7
-                   //showLeftFragment(CallRecordsFragment())
                    showMiddleFragment(OtherHostFragment())
                }
            }
            R.id.collocation_radio_bt ->{
                if (select_id != 8) {
                    select_id = 8
-                   //showLeftFragment(CallRecordsFragment())
                    showMiddleFragment(TrustManagementFragment())
                }
            }
@@ -1076,7 +1105,7 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
         if (skyCallFragment != null) {
             supportFragmentManager.beginTransaction()
                 .remove(skyCallFragment)
-                .commit()
+                .commitAllowingStateLoss()
             skyCallFragment = null
         }
 
@@ -1084,7 +1113,7 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
         supportFragmentManager.beginTransaction()
             .setCustomAnimations(R.anim.slide_down_in, R.anim.slide_up_out)
             .add(R.id.call_frame, fragment)
-            .commit()
+            .commitAllowingStateLoss()
     }
 
     fun removeCallFragment() {
@@ -1092,17 +1121,17 @@ class NurseHomeActivity : BaseActivity<NurseHomeActivityPresenter, ActivityNurse
             supportFragmentManager.beginTransaction()
                 //.setCustomAnimations(R.anim.slide_down_in, R.anim.slide_down_out)
                 .remove(skyCallFragment)
-                .commit()
+                .commitAllowingStateLoss()
             skyCallFragment = null
         }
     }
 
     fun removeFragment(fragment: Fragment) {
-        supportFragmentManager.beginTransaction().remove(fragment).commit()
+        supportFragmentManager.beginTransaction().remove(fragment).commitAllowingStateLoss()
     }
 
     inline fun FragmentManager.inTransaction(func: FragmentTransaction.() -> FragmentTransaction) {
-        beginTransaction().func().commit()
+        beginTransaction().func().commitAllowingStateLoss()
     }
 
     /*

+ 30 - 14
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/CallRecordsItemAdapter.kt

@@ -99,7 +99,7 @@ class CallRecordsItemAdapter(val data:ArrayList<InteractionVO>) : BaseDelegateAd
                 return
             }
 
-            //是否已处理
+            //已处理
             if (itemData.actionEnd != null) {
                 binding.processingTimeTv.text = TimeTransition.stampToDateTime(itemData.actionEnd * 1000)
 
@@ -120,27 +120,36 @@ class CallRecordsItemAdapter(val data:ArrayList<InteractionVO>) : BaseDelegateAd
                 } else if (TcpType.VOICE.name == itemData.actionType) {
                     binding.callStatusImagev.visibility = View.VISIBLE
                     binding.tabImagev.setImageResource(R.drawable.lai_dian_tou_xiang_bg)
+                    binding.callListReply.visibility = View.VISIBLE
+                    binding.callSosReply.visibility = View.GONE
                     //判断是呼入还是呼出 1 分机到主机 2主机到分机
                     if (itemData.actionDirectionType == 1) {
                         binding.sickbedTv.text = itemData.fromFrameFullName
                         binding.nameTv.text = itemData.fromMemberName
                         binding.callStatusImagev.setImageResource(R.drawable.hu_ru_yi_jie)
-                    } else if (itemData.actionDirectionType == 2 || itemData.actionDirectionType == 3) {
+                    } else if (itemData.actionDirectionType == 2) {
                         binding.sickbedTv.text = itemData.toFrameFullName
                         binding.nameTv.text = itemData.toMemberName
                         binding.callStatusImagev.setImageResource(R.drawable.hu_chu_yi_jie)
+                    } else if (itemData.actionDirectionType == 3) {
+                        //护士主机,医生机,移动手机等交互记录
+                        binding.sickbedTv.text = itemData.fromDeviceName
+                        binding.nameTv.text = itemData.toDeviceName
+                        binding.callStatusImagev.visibility = View.GONE
+                        binding.callListReply.visibility = View.GONE
                     }
                 } else if (TcpType.REINFORCE.name == itemData.actionType) {
                     //增援请求
-                    val roomNo = itemData.fromFrameFullName.substringBefore("-")
-                    binding.sickbedTv.text = roomNo
-                    binding.nameTv.text = "增援请求"
+                    //val roomNo = itemData.fromFrameFullName.substringBefore("-")
+                    binding.sickbedTv.text = itemData.fromFrameFullName
+                    binding.nameTv.setText("增援请求")
                     binding.callStatusImagev.visibility = View.GONE
                     binding.tabImagev.setImageResource(R.drawable.lai_dian_tou_xiang_bg)
+                    binding.callListReply.visibility = View.GONE
+                    binding.callSosReply.visibility = View.GONE
                 }
-                binding.callListReply.visibility = View.GONE
-                binding.callSosReply.visibility = View.GONE
             } else {
+                //未处理
                 if (TcpType.SOS.name == itemData.actionType) {
                     //紧急呼叫未处理
                     var roomNo = itemData.fromFrameFullName.substringBefore("-")
@@ -160,23 +169,30 @@ class CallRecordsItemAdapter(val data:ArrayList<InteractionVO>) : BaseDelegateAd
                 } else if (TcpType.VOICE.name == itemData.actionType) {
                     binding.callStatusImagev.visibility = View.VISIBLE
                     binding.tabImagev.setImageResource(R.drawable.lai_dian_tou_xiang_bg)
+                    binding.callListReply.visibility = View.VISIBLE
+                    binding.callSosReply.visibility = View.GONE
                     //判断是呼入还是呼出 1 分机到主机 2主机到分机
                     if (itemData.actionDirectionType == 1) {
                         binding.sickbedTv.text = itemData.fromFrameFullName
                         binding.nameTv.text = itemData.fromMemberName
                         binding.callStatusImagev.setImageResource(R.drawable.hu_ru_wei_jie)
-                    } else if (itemData.actionDirectionType == 2 || itemData.actionDirectionType == 3) {
+                    } else if (itemData.actionDirectionType == 2) {
                         binding.sickbedTv.text = itemData.toFrameFullName
                         binding.nameTv.text = itemData.toMemberName
                         binding.callStatusImagev.setImageResource(R.drawable.hu_chu_wei_jie)
+                    } else if (itemData.actionDirectionType == 3) {
+                        //护士主机,医生机,移动手机等交互记录
+                        binding.sickbedTv.text = itemData.fromDeviceName
+                        binding.nameTv.text = itemData.toDeviceName
+                        binding.callStatusImagev.visibility = View.GONE
+                        binding.callListReply.visibility = View.GONE
                     }
-                    binding.callListReply.visibility = View.VISIBLE
-                    binding.callSosReply.visibility = View.GONE
                 } else if (TcpType.REINFORCE.name == itemData.actionType) {
                     //增援请求
-                    val roomNo = itemData.fromFrameFullName.substringBefore("-")
-                    binding.sickbedTv.text = roomNo
-                    binding.nameTv.text = "增援请求"
+                    //增援请求
+                    //val roomNo = itemData.fromFrameFullName.substringBefore("-")
+                    binding.sickbedTv.text = itemData.fromFrameFullName
+                    binding.nameTv.setText("增援请求")
                     binding.callStatusImagev.visibility = View.GONE
                     binding.tabImagev.setImageResource(R.drawable.lai_dian_tou_xiang_bg)
                     binding.callListReply.visibility = View.GONE
@@ -185,7 +201,7 @@ class CallRecordsItemAdapter(val data:ArrayList<InteractionVO>) : BaseDelegateAd
             }
 
             //门口机呼叫记录
-            if (itemData.fromDeviceType != null && itemData.fromDeviceType == 3) {
+            if (itemData.fromDeviceType != null && itemData.fromDeviceType == 3 && TcpType.VOICE.name == itemData.actionType) {
                 binding.sickbedTv.text = itemData.fromFrameFullName
                 binding.nameTv.text = "门口机"
                 binding.callStatusImagev.visibility = View.GONE

+ 5 - 5
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/DoctorHostAdapter.kt

@@ -9,11 +9,12 @@ import com.wdkl.ncs.android.component.nursehome.databinding.AdapterDoctorHostBin
 import com.wdkl.ncs.android.lib.adapter.BaseDelegateAdapter
 import com.wdkl.ncs.android.lib.utils.BaseRecyclerViewHolder
 import com.wdkl.ncs.android.lib.utils.then
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
 import com.wdkl.ncs.android.middleware.model.vo.FrameRoomVO
 /**
  * 医生机适配器
  */
-class DoctorHostAdapter(val data:ArrayList<String>) : BaseDelegateAdapter<BaseRecyclerViewHolder<AdapterDoctorHostBinding>, String>(){
+class DoctorHostAdapter(val data:ArrayList<DeviceDO>) : BaseDelegateAdapter<BaseRecyclerViewHolder<AdapterDoctorHostBinding>, DeviceDO>(){
     /**
      * 数据提供者
      */
@@ -37,8 +38,7 @@ class DoctorHostAdapter(val data:ArrayList<String>) : BaseDelegateAdapter<BaseRe
      * 创建LayoutHelper
      */
     override fun onCreateLayoutHelper(): LayoutHelper {
-//        return LinearLayoutHelper(0,data.size)
-        return GridLayoutHelper(2).then {
+        return GridLayoutHelper(3).then {
             self ->
             /**取消自动填充*/
             self.setAutoExpand(false)
@@ -50,7 +50,7 @@ class DoctorHostAdapter(val data:ArrayList<String>) : BaseDelegateAdapter<BaseRe
             self.vGap = 10
 
             /**设置Margin*/
-            self.setMargin(0,10,0,0)
+            self.setMargin(0,0,0,0)
         }
 
     }
@@ -68,7 +68,7 @@ class DoctorHostAdapter(val data:ArrayList<String>) : BaseDelegateAdapter<BaseRe
     override fun onBindViewHolder(holder: BaseRecyclerViewHolder<AdapterDoctorHostBinding>?, position: Int) {
         holder?.bind { binding ->
             val itemData = getItem(position)
-            binding.doctorNameTv.text = itemData.toString()
+            binding.doctorNameTv.text = itemData.name
         }
     }
 

+ 9 - 9
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/NurseMoveAdapter.kt

@@ -4,12 +4,13 @@ import android.view.ViewGroup
 import com.alibaba.android.vlayout.LayoutHelper
 import com.alibaba.android.vlayout.layout.GridLayoutHelper
 import com.wdkl.ncs.android.component.nursehome.R
-import com.wdkl.ncs.android.component.nursehome.databinding.AdapterDoctorHostBinding
+import com.wdkl.ncs.android.component.nursehome.databinding.AdapterMobileDeviceBinding
 import com.wdkl.ncs.android.lib.adapter.BaseDelegateAdapter
 import com.wdkl.ncs.android.lib.utils.BaseRecyclerViewHolder
 import com.wdkl.ncs.android.lib.utils.then
+import com.wdkl.ncs.android.middleware.model.vo.WatchUsingVO
 
-class NurseMoveAdapter(val data:ArrayList<String>) : BaseDelegateAdapter<BaseRecyclerViewHolder<AdapterDoctorHostBinding>, String>(){
+class NurseMoveAdapter(val data:ArrayList<WatchUsingVO>) : BaseDelegateAdapter<BaseRecyclerViewHolder<AdapterMobileDeviceBinding>, WatchUsingVO>(){
     /**
      * 数据提供者
      */
@@ -33,8 +34,7 @@ class NurseMoveAdapter(val data:ArrayList<String>) : BaseDelegateAdapter<BaseRec
      * 创建LayoutHelper
      */
     override fun onCreateLayoutHelper(): LayoutHelper {
-//        return LinearLayoutHelper(0,data.size)
-        return GridLayoutHelper(2).then {
+        return GridLayoutHelper(3).then {
             self ->
             /**取消自动填充*/
             self.setAutoExpand(false)
@@ -46,7 +46,7 @@ class NurseMoveAdapter(val data:ArrayList<String>) : BaseDelegateAdapter<BaseRec
             self.vGap = 10
 
             /**设置Margin*/
-            self.setMargin(0,10,0,0)
+            self.setMargin(0,6,0,6)
         }
 
     }
@@ -54,17 +54,17 @@ class NurseMoveAdapter(val data:ArrayList<String>) : BaseDelegateAdapter<BaseRec
     /**
      * 创建ViewHolder
      */
-    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): BaseRecyclerViewHolder<AdapterDoctorHostBinding> {
-        return BaseRecyclerViewHolder.build(parent, R.layout.adapter_doctor_host)
+    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): BaseRecyclerViewHolder<AdapterMobileDeviceBinding> {
+        return BaseRecyclerViewHolder.build(parent, R.layout.adapter_mobile_device)
     }
 
     /**
      * 绑定数据
      */
-    override fun onBindViewHolder(holder: BaseRecyclerViewHolder<AdapterDoctorHostBinding>?, position: Int) {
+    override fun onBindViewHolder(holder: BaseRecyclerViewHolder<AdapterMobileDeviceBinding>?, position: Int) {
         holder?.bind { binding ->
             val itemData = getItem(position)
-            binding.doctorNameTv.text = itemData.toString()
+            binding.mobileNameTv.text = itemData.clerkName
         }
     }
 }

+ 8 - 8
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/OtherHostAdapter.kt

@@ -4,15 +4,16 @@ import android.view.ViewGroup
 import com.alibaba.android.vlayout.LayoutHelper
 import com.alibaba.android.vlayout.layout.GridLayoutHelper
 import com.wdkl.ncs.android.component.nursehome.R
-import com.wdkl.ncs.android.component.nursehome.databinding.AdapterDoctorHostBinding
+import com.wdkl.ncs.android.component.nursehome.databinding.AdapterOtherHostBinding
 import com.wdkl.ncs.android.lib.adapter.BaseDelegateAdapter
 import com.wdkl.ncs.android.lib.utils.BaseRecyclerViewHolder
 import com.wdkl.ncs.android.lib.utils.then
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
 
 /**
  * 其它主机适配器
  */
-class OtherHostAdapter (val data:ArrayList<String>) : BaseDelegateAdapter<BaseRecyclerViewHolder<AdapterDoctorHostBinding>, String>(){
+class OtherHostAdapter (val data:ArrayList<DeviceDO>) : BaseDelegateAdapter<BaseRecyclerViewHolder<AdapterOtherHostBinding>, DeviceDO>(){
     /**
      * 数据提供者
      */
@@ -36,7 +37,6 @@ class OtherHostAdapter (val data:ArrayList<String>) : BaseDelegateAdapter<BaseRe
      * 创建LayoutHelper
      */
     override fun onCreateLayoutHelper(): LayoutHelper {
-//        return LinearLayoutHelper(0,data.size)
         return GridLayoutHelper(2).then {
             self ->
             /**取消自动填充*/
@@ -49,7 +49,7 @@ class OtherHostAdapter (val data:ArrayList<String>) : BaseDelegateAdapter<BaseRe
             self.vGap = 10
 
             /**设置Margin*/
-            self.setMargin(0,10,0,0)
+            self.setMargin(0,0,0,0)
         }
 
     }
@@ -57,17 +57,17 @@ class OtherHostAdapter (val data:ArrayList<String>) : BaseDelegateAdapter<BaseRe
     /**
      * 创建ViewHolder
      */
-    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): BaseRecyclerViewHolder<AdapterDoctorHostBinding> {
-        return BaseRecyclerViewHolder.build(parent, R.layout.adapter_doctor_host)
+    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): BaseRecyclerViewHolder<AdapterOtherHostBinding> {
+        return BaseRecyclerViewHolder.build(parent, R.layout.adapter_other_host)
     }
 
     /**
      * 绑定数据
      */
-    override fun onBindViewHolder(holder: BaseRecyclerViewHolder<AdapterDoctorHostBinding>?, position: Int) {
+    override fun onBindViewHolder(holder: BaseRecyclerViewHolder<AdapterOtherHostBinding>?, position: Int) {
         holder?.bind { binding ->
             val itemData = getItem(position)
-            binding.doctorNameTv.text = itemData.toString()
+            binding.tvOtherHost.text = itemData.name
         }
     }
 

+ 32 - 73
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/DoctorHostFragment.kt

@@ -1,23 +1,24 @@
 package com.wdkl.ncs.android.component.nursehome.fragment
 
-import android.support.v7.widget.GridLayoutManager
-import android.util.Log
 import android.view.View
 import com.alibaba.android.vlayout.DelegateAdapter
 import com.alibaba.android.vlayout.VirtualLayoutManager
-import com.alibaba.android.vlayout.layout.GridLayoutHelper
 import com.enation.javashop.net.engine.model.NetState
 import com.scwang.smartrefresh.layout.footer.ClassicsFooter
 import com.wdkl.ncs.android.component.nursehome.R
 import com.wdkl.ncs.android.component.nursehome.adapter.DoctorHostAdapter
-import com.wdkl.ncs.android.component.nursehome.adapter.ResponsibilityBedAdapter
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentDoctorHostBinding
 import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
+import com.wdkl.ncs.android.component.nursehome.util.RingPlayHelper
+import com.wdkl.ncs.android.component.nursehome.util.SpeechUtil
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.showMessage
+import com.wdkl.ncs.android.middleware.common.Constants
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.DoctorHostContract
 import com.wdkl.ncs.android.middleware.logic.presenter.nursehome.DoctorHostPresenter
-import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
+import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
+import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 import com.wdkl.ncs.android.middleware.utils.MessageEvent
 import kotlinx.android.synthetic.main.fragment_doctor_host.*
 import org.greenrobot.eventbus.Subscribe
@@ -32,12 +33,9 @@ class DoctorHostFragment: BaseFragment<DoctorHostPresenter, FragmentDoctorHostBi
     private lateinit var virtualLayoutManager: VirtualLayoutManager
     private lateinit var delegateAdapter: DelegateAdapter
     //医生适配器
-    var doctorHostAdapter: DoctorHostAdapter? = null
+    private var doctorHostAdapter: DoctorHostAdapter? = null
 
-    private lateinit var bedVirtualLayoutManager: VirtualLayoutManager
-    private lateinit var bedDelegateAdapter: DelegateAdapter
-    //医生责任床位
-    var responsibilityBedAdapter: ResponsibilityBedAdapter? = null
+    private var selectDevice: DeviceDO? = null
 
     /**
      * 提供layoutID
@@ -69,69 +67,20 @@ class DoctorHostFragment: BaseFragment<DoctorHostPresenter, FragmentDoctorHostBi
         doctor_host_recyv.adapter = delegateAdapter
 
 
-        /**初始化LayoutMannager*/
-        bedVirtualLayoutManager = VirtualLayoutManager(this.activity)
-        /**初始化适配器*/
-        bedDelegateAdapter = DelegateAdapter(bedVirtualLayoutManager)
-        responsibilityBedAdapter = ResponsibilityBedAdapter(ArrayList())
-        bedDelegateAdapter.addAdapter(responsibilityBedAdapter)
-
-        /**配置到RecycleView*/
-        doctor_duty_sickbed_rev.layoutManager = bedVirtualLayoutManager
-        doctor_duty_sickbed_rev.adapter = bedDelegateAdapter
-
-
-
-        //临时模拟测试数据
-        var doctorHost = ArrayList<String>()
-        doctorHost.add("李医生")
-        doctorHost.add("张医生")
-        doctorHost.add("孔医生")
-        doctorHost.add("孙医生")
-        doctorHost.add("巫医生")
-        doctorHost.add("刘医生")
-        doctorHost.add("猴医生")
-        doctorHost.add("王医生")
-        doctorHost.add("杨医生")
-        doctorHost.add("周医生")
-        doctorHost.add("沈医生")
-
-        doctorHostAdapter!!.data.clear()
-        doctorHostAdapter!!.data.addAll(doctorHost)
-        Log.i(TAG,"医生主机数量 " + doctorHost.size);
-        doctorHostAdapter!!.notifyDataSetChanged()
-
-
+        if (Constants.part_id != -1) {
+            presenter.loadDoctorHost(DeviceTypeEnum.DOCTOR_HOST.value(), Constants.part_id)
+        }
     }
     /**
      *绑定事件
      */
     override fun bindEvent() {
         doctorHostAdapter?.setOnItemClickListener { data, position ->
-            //临时模拟测试数据
-            var doctorResponsibilityBed = ArrayList<String>()
-            doctorResponsibilityBed.add("03房01床")
-            doctorResponsibilityBed.add("03房02床")
-            doctorResponsibilityBed.add("03房03床")
-            doctorResponsibilityBed.add("03房04床")
-            doctorResponsibilityBed.add("03房05床")
-            doctorResponsibilityBed.add("03房06床")
-            doctorResponsibilityBed.add("02房02床")
-            doctorResponsibilityBed.add("02房03床")
-            doctorResponsibilityBed.add("02房04床")
-            doctorResponsibilityBed.add("02房05床")
-            doctorResponsibilityBed.add("02房06床")
-            doctorResponsibilityBed.add("02房07床")
-            doctorResponsibilityBed.add("02房08床")
-            doctorResponsibilityBed.add("02房09床")
-
-            responsibilityBedAdapter!!.data.clear()
-            responsibilityBedAdapter!!.data.addAll(doctorResponsibilityBed)
-            Log.i(TAG,"医生责任病床数量 " + doctorResponsibilityBed.size);
-            responsibilityBedAdapter!!.notifyDataSetChanged()
+            selectDevice = data
 
+            tv_doctor_name_title.text = data.name
         }
-        call_doctor_bt.setOnClickListener(this)
+        call_doctor_host.setOnClickListener(this)
 
     }
     /**
@@ -142,7 +91,10 @@ class DoctorHostFragment: BaseFragment<DoctorHostPresenter, FragmentDoctorHostBi
     /**
      *显示数据
      */
-    override fun showData() {
+    override fun showDoctorDevices(devices: ArrayList<DeviceDO>) {
+        doctorHostAdapter!!.data.clear()
+        doctorHostAdapter!!.data.addAll(devices)
+        doctorHostAdapter!!.notifyDataSetChanged()
     }
     /**
      *处理错误信息
@@ -166,16 +118,23 @@ class DoctorHostFragment: BaseFragment<DoctorHostPresenter, FragmentDoctorHostBi
     }
 
     override fun onClick(p0: View?) {
-        showMessage("点击了呼叫医生按钮")
+        if (selectDevice != null) {
+            //呼出时停止语音播报及铃声
+            SpeechUtil.getInstance().stopSpeak()
+            RingPlayHelper.stopRingTone()
+
+            if (Constants.tcp_connected) {
+                VoiceUtil.startAudioCall(Constants.ids, selectDevice!!.id)
+                Constants.call_type = 0
+            } else {
+                showMessage("网络错误")
+            }
+        } else {
+            showMessage("没有设备")
+        }
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {
-//        Log.e(TAG,"收到tcp消息")
-//        var messageEvent = messageEvent.getMessage() as TcpModel
-//        if(messageEvent.getAction() === TcpAction.EventAction.KEY_CLICK){
-//
-//            Log.e(TAG,"收到tcp消息"+messageEvent.toJson())
-//        }
     }
 }

+ 58 - 62
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/NurseMoveFragment.kt

@@ -7,18 +7,21 @@ import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.enation.javashop.net.engine.model.NetState
 import com.scwang.smartrefresh.layout.footer.ClassicsFooter
 import com.wdkl.ncs.android.component.nursehome.R
-import com.wdkl.ncs.android.component.nursehome.adapter.DoctorHostAdapter
 import com.wdkl.ncs.android.component.nursehome.adapter.NurseMoveAdapter
 import com.wdkl.ncs.android.component.nursehome.adapter.ResponsibilityBedAdapter
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentNurseMoveBinding
 import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
+import com.wdkl.ncs.android.component.nursehome.util.RingPlayHelper
+import com.wdkl.ncs.android.component.nursehome.util.SpeechUtil
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.showMessage
+import com.wdkl.ncs.android.middleware.common.Constants
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.NurseMoveContract
 import com.wdkl.ncs.android.middleware.logic.presenter.nursehome.NurseMovePresenter
-import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
+import com.wdkl.ncs.android.middleware.model.dos.FrameDO
+import com.wdkl.ncs.android.middleware.model.vo.WatchUsingVO
+import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
 import com.wdkl.ncs.android.middleware.utils.MessageEvent
-import kotlinx.android.synthetic.main.fragment_doctor_host.*
 import kotlinx.android.synthetic.main.fragment_nurse_move.*
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -35,14 +38,15 @@ class NurseMoveFragment : BaseFragment<NurseMovePresenter,FragmentNurseMoveBindi
     private lateinit var bedVirtualLayoutManager: VirtualLayoutManager
     private lateinit var bedDelegateAdapter: DelegateAdapter
     //护士责任床位适配器
-    var responsibilityBedAdapter: ResponsibilityBedAdapter? = null
+    private var responsibilityBedAdapter: ResponsibilityBedAdapter? = null
+    private var selectMobile: WatchUsingVO? = null
 
 
     /**
      * 提供layoutID
      */
     override fun getLayId(): Int {
-    return R.layout.fragment_nurse_move
+        return R.layout.fragment_nurse_move
     }
     /**
      *初始化依赖注入
@@ -61,11 +65,11 @@ class NurseMoveFragment : BaseFragment<NurseMovePresenter,FragmentNurseMoveBindi
 
         nurseMoveAdapter = NurseMoveAdapter(ArrayList())
         delegateAdapter.addAdapter(nurseMoveAdapter)
-        mViewDataBinding.nurseMoveRefresh.setRefreshFooter(ClassicsFooter(activity))
+        mViewDataBinding.nurseMobileRefresh.setRefreshFooter(ClassicsFooter(activity))
 
         /**配置到RecycleView*/
-        nurse_move_recyv.layoutManager = virtualLayoutManager
-        nurse_move_recyv.adapter = delegateAdapter
+        nurse_mobile_rv.layoutManager = virtualLayoutManager
+        nurse_mobile_rv.adapter = delegateAdapter
 
         /**初始化LayoutMannager*/
         bedVirtualLayoutManager = VirtualLayoutManager(this.activity)
@@ -78,62 +82,29 @@ class NurseMoveFragment : BaseFragment<NurseMovePresenter,FragmentNurseMoveBindi
         nurse_duty_sickbed_rev.layoutManager = bedVirtualLayoutManager
         nurse_duty_sickbed_rev.adapter = bedDelegateAdapter
 
-
-
-
-        //临时模拟测试数据
-        var nurseList = ArrayList<String>()
-        nurseList.add("李护士")
-        nurseList.add("张护士")
-        nurseList.add("孔护士")
-        nurseList.add("孙护士")
-        nurseList.add("巫护士")
-        nurseList.add("刘护士")
-        nurseList.add("猴护士")
-        nurseList.add("王护士")
-        nurseList.add("杨护士")
-        nurseList.add("周护士")
-        nurseList.add("沈护士")
-
-        nurseMoveAdapter!!.data.clear()
-        nurseMoveAdapter!!.data.addAll(nurseList)
-        Log.i(TAG,"护士主机数量 " + nurseList.size)
-        nurseMoveAdapter!!.notifyDataSetChanged()
-        
-        
-        
+        if (Constants.part_id != -1) {
+            presenter.getMobileDevice(Constants.part_id)
+        }
     }
     /**
      *绑定事件
      */
     override fun bindEvent() {
         nurseMoveAdapter?.setOnItemClickListener { data, position ->
-            //临时模拟测试数据
-            var nurseResponsibilityBed = ArrayList<String>()
-            nurseResponsibilityBed.add("03房01床")
-            nurseResponsibilityBed.add("03房02床")
-            nurseResponsibilityBed.add("03房03床")
-            nurseResponsibilityBed.add("03房04床")
-            nurseResponsibilityBed.add("03房05床")
-            nurseResponsibilityBed.add("03房06床")
-            nurseResponsibilityBed.add("02房02床")
-            nurseResponsibilityBed.add("02房03床")
-            nurseResponsibilityBed.add("02房04床")
-            nurseResponsibilityBed.add("02房05床")
-            nurseResponsibilityBed.add("02房06床")
-            nurseResponsibilityBed.add("02房07床")
-            nurseResponsibilityBed.add("02房08床")
-            nurseResponsibilityBed.add("02房09床")
+            selectMobile = data
+            tv_manager_bed_title.text = data.clerkName + " 管理床位"
 
             responsibilityBedAdapter!!.data.clear()
-            responsibilityBedAdapter!!.data.addAll(nurseResponsibilityBed)
-            Log.i(TAG,"医生责任病床数量 " + nurseResponsibilityBed.size);
-            responsibilityBedAdapter!!.notifyDataSetChanged()
+            presenter.getResponsibleBeds(data.id)
+        }
 
+        nurse_mobile_refresh.setOnRefreshListener {
+            if (Constants.part_id != -1) {
+                presenter.getMobileDevice(Constants.part_id)
+            }
         }
-        call_nurse_bt.setOnClickListener(this)
-        
-        
+
+        call_nurse_mobile.setOnClickListener(this)
     }
     /**
      *页面销毁回调
@@ -143,12 +114,30 @@ class NurseMoveFragment : BaseFragment<NurseMovePresenter,FragmentNurseMoveBindi
     /**
      *显示数据
      */
-    override fun showData() {
+    override fun showMobileDevice(data: ArrayList<WatchUsingVO>) {
+        nurseMoveAdapter!!.data.clear()
+        nurseMoveAdapter!!.data.addAll(data)
+        nurseMoveAdapter!!.notifyDataSetChanged()
+
+        nurse_mobile_refresh.finishRefresh()
+    }
+
+    override fun showResponsibleBeds(beds: ArrayList<FrameDO>) {
+        Log.i(TAG, "责任病床数量 " + beds.size)
+        if (beds.size > 0) {
+            for (bed in beds) {
+                responsibilityBedAdapter!!.data.add(bed.fullName)
+            }
+        }
+        responsibilityBedAdapter!!.notifyDataSetChanged()
     }
+
     /**
      *处理错误信息
      */
     override fun onError(message: String, type: Int) {
+        responsibilityBedAdapter!!.notifyDataSetChanged()
+        nurse_mobile_refresh.finishRefresh()
     }
     /**
      *耗时加载完成
@@ -167,16 +156,23 @@ class NurseMoveFragment : BaseFragment<NurseMovePresenter,FragmentNurseMoveBindi
     }
 
     override fun onClick(p0: View?) {
-        showMessage("点击了呼叫护士按钮")
+        if (selectMobile != null) {
+            //呼出时停止语音播报及铃声
+            SpeechUtil.getInstance().stopSpeak()
+            RingPlayHelper.stopRingTone()
+
+            if (Constants.tcp_connected) {
+                VoiceUtil.startAudioCall(Constants.ids, selectMobile!!.id)
+                Constants.call_type = 0
+            } else {
+                showMessage("网络错误")
+            }
+        } else {
+            showMessage("没有设备")
+        }
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {
-//        Log.e(TAG,"收到tcp消息")
-//        var messageEvent = messageEvent.getMessage() as TcpModel
-//        if(messageEvent.getAction() === TcpAction.EventAction.KEY_CLICK){
-//
-//            Log.e(TAG,"收到tcp消息"+messageEvent.toJson())
-//        }
     }
 }

+ 67 - 35
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/OtherHostFragment.kt

@@ -11,11 +11,17 @@ import com.wdkl.ncs.android.component.nursehome.adapter.NurseMoveAdapter
 import com.wdkl.ncs.android.component.nursehome.adapter.OtherHostAdapter
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentOtherHostBinding
 import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
+import com.wdkl.ncs.android.component.nursehome.util.RingPlayHelper
+import com.wdkl.ncs.android.component.nursehome.util.SpeechUtil
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.showMessage
+import com.wdkl.ncs.android.middleware.common.Constants
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.OtherHostContract
 import com.wdkl.ncs.android.middleware.logic.presenter.nursehome.OtherHostPresenter
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
+import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
+import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 import com.wdkl.ncs.android.middleware.utils.MessageEvent
 import kotlinx.android.synthetic.main.fragment_nurse_move.*
 import kotlinx.android.synthetic.main.fragment_other_host.*
@@ -25,15 +31,15 @@ import org.greenrobot.eventbus.ThreadMode
 /**
  * 其它主机Fragment
  */
-class OtherHostFragment : BaseFragment<OtherHostPresenter,FragmentOtherHostBinding>(), OtherHostContract.View, View.OnClickListener {
+class OtherHostFragment : BaseFragment<OtherHostPresenter, FragmentOtherHostBinding>(), OtherHostContract.View, View.OnClickListener {
     var TAG = OtherHostFragment::class.java.getSimpleName()
 
     private lateinit var virtualLayoutManager: VirtualLayoutManager
     private lateinit var delegateAdapter: DelegateAdapter
     //护士适配器
     var otherHostAdapter: OtherHostAdapter? = null
-    
-    
+
+    private var selectDevice: DeviceDO? = null
 
     /**
      * 提供layoutID
@@ -62,35 +68,36 @@ class OtherHostFragment : BaseFragment<OtherHostPresenter,FragmentOtherHostBindi
         mViewDataBinding.otherHostRefresh.setRefreshFooter(ClassicsFooter(activity))
 
         /**配置到RecycleView*/
-        other_host_recyv.layoutManager = virtualLayoutManager
-        other_host_recyv.adapter = delegateAdapter
-
-
-        //临时模拟测试数据
-        var other_hostList = ArrayList<String>()
-        other_hostList.add("主机1")
-        other_hostList.add("主机2")
-        other_hostList.add("主机3")
-        other_hostList.add("主机4")
-        other_hostList.add("主机5")
-        other_hostList.add("主机6")
-        other_hostList.add("主机7")
-        other_hostList.add("主机8")
-        other_hostList.add("主机9")
-        other_hostList.add("主机10")
-        other_hostList.add("主机11")
-
-        otherHostAdapter!!.data.clear()
-        otherHostAdapter!!.data.addAll(other_hostList)
-        Log.i(TAG,"其它主机数量 " + other_hostList.size)
-        otherHostAdapter!!.notifyDataSetChanged()
+        rv_other_host.layoutManager = virtualLayoutManager
+        rv_other_host.adapter = delegateAdapter
     }
     /**
      *绑定事件
      */
     override fun bindEvent() {
-        call_other_host_bt.setOnClickListener(this)
-        
+        group_host.setOnCheckedChangeListener { group, checkedId ->
+            if (checkedId == R.id.rb_other_host) {
+                //加载所有护士主机
+                if (Constants.part_id != -1) {
+                    presenter.loadAllHostDevice(Constants.part_id)
+                }
+            } else if (checkedId == R.id.rb_manager_host) {
+                //加载总控主机
+                if (Constants.hospital_id != -1) {
+                    presenter.loadHostDevice(DeviceTypeEnum.NURSE_HOST.value(), Constants.hospital_id)
+                } else {
+                    showMessage("hospital_id is null")
+                }
+            }
+        }
+
+        otherHostAdapter?.setOnItemClickListener { data, position ->
+            selectDevice = data
+
+            tv_device_name_title.text = data.name
+        }
+
+        call_other_host.setOnClickListener(this)
     }
     /**
      *页面销毁回调
@@ -100,7 +107,25 @@ class OtherHostFragment : BaseFragment<OtherHostPresenter,FragmentOtherHostBindi
     /**
      *显示数据
      */
-    override fun showData() {
+    override fun showDevice(devices: ArrayList<DeviceDO>) {
+        otherHostAdapter!!.data.clear()
+        otherHostAdapter!!.data.addAll(devices)
+        //Log.i(TAG,"其它主机数量 " + devices.size)
+        otherHostAdapter!!.notifyDataSetChanged()
+    }
+
+    override fun showAllHostDevice(devices: ArrayList<DeviceDO>) {
+        //先后所有护士主机,排除自己
+        if (devices.size > 0) {
+            otherHostAdapter!!.data.clear()
+            for (hostDevice in devices) {
+                if (hostDevice.id != Constants.ids) {
+                    otherHostAdapter!!.data.add(hostDevice)
+                }
+            }
+            //Log.i(TAG, "其它主机数量 " + devices.size)
+            otherHostAdapter!!.notifyDataSetChanged()
+        }
     }
     /**
      *处理错误信息
@@ -124,16 +149,23 @@ class OtherHostFragment : BaseFragment<OtherHostPresenter,FragmentOtherHostBindi
     }
 
     override fun onClick(p0: View?) {
-        showMessage("点击了呼叫其它主机按钮")
+        if (selectDevice != null) {
+            //呼出时停止语音播报及铃声
+            SpeechUtil.getInstance().stopSpeak()
+            RingPlayHelper.stopRingTone()
+
+            if (Constants.tcp_connected) {
+                VoiceUtil.startAudioCall(Constants.ids, selectDevice!!.id)
+                Constants.call_type = 0
+            } else {
+                showMessage("网络错误")
+            }
+        } else {
+            showMessage("没有设备")
+        }
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {
-//        Log.e(TAG,"收到tcp消息")
-//        var messageEvent = messageEvent.getMessage() as TcpModel
-//        if(messageEvent.getAction() === TcpAction.EventAction.KEY_CLICK){
-//
-//            Log.e(TAG,"收到tcp消息"+messageEvent.toJson())
-//        }
     }
 }

+ 63 - 6
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/SystemSettingsFragment.kt

@@ -16,10 +16,7 @@ import com.wdkl.ncs.android.middleware.common.Constants
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentSystemSettingsBinding
 import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
 import com.wdkl.ncs.android.component.nursehome.settingconfig.SettingConfig
-import com.wdkl.ncs.android.component.nursehome.util.NetHelper
-import com.wdkl.ncs.android.component.nursehome.util.ScreenManagerUtil
-import com.wdkl.ncs.android.component.nursehome.util.VoiceManagerUtil
-import com.wdkl.ncs.android.component.nursehome.util.WarningDialogHelper
+import com.wdkl.ncs.android.component.nursehome.util.*
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.SystemSettingsContract
@@ -30,6 +27,8 @@ import com.wdkl.ncs.android.middleware.utils.MessageEvent
 import kotlinx.android.synthetic.main.fragment_system_settings.*
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
+import java.io.DataOutputStream
+import java.io.IOException
 
 /**
  * 设置Fragment
@@ -38,6 +37,8 @@ class SystemSettingsFragment:BaseFragment<SystemSettingsPresenter,FragmentSystem
     var TAG = SystemSettingsFragment::class.java.getSimpleName()
     var partSettingDO = PartSettingDO()
 
+    private var clickTime: Long = 0
+    private var clickTimes: Int = 1
 
     /**
      * 提供layoutID
@@ -230,12 +231,62 @@ class SystemSettingsFragment:BaseFragment<SystemSettingsPresenter,FragmentSystem
 
             return@setOnLongClickListener true
         }
+        software_and_information_tv.setOnClickListener {
+            val time = System.currentTimeMillis()
+            if (time - clickTime < 1500) {
+                clickTimes++
+            } else {
+                clickTimes = 1
+            }
+
+            if (clickTimes > 9) {
+                if (Build.BOARD.equals("k37mv1_64_bsp")) {
+                    openNetwrokDebug()
+                } else {
+                    showMessage("no support debug")
+                }
+                clickTimes = 1
+            }
+            clickTime = time
+        }
 
         save_settings_tv.setOnClickListener(this)
         system_settings_tv.setOnClickListener(this)
 
         tv_device_ip.setText(NetHelper.getInstance().localIP)
     }
+
+    //开启网络调试
+    private fun openNetwrokDebug() {
+        val commands = arrayListOf(
+            "/system/bin/sh",
+            "setprop service.adb.tcp.port 5555",
+            "stop adbd",
+            "start adbd"
+        )
+        try {
+            RunAsRoot(commands)
+            showMessage("start Debug")
+        } catch (e: IOException) {
+            e.printStackTrace()
+        }
+    }
+
+    private fun RunAsRoot(cmds: ArrayList<String>) {
+        val p = Runtime.getRuntime().exec("su")
+        val os = DataOutputStream(p.outputStream)
+        for (tmpCmd in cmds) {
+            os.writeBytes(
+                """
+            $tmpCmd
+            
+            """.trimIndent()
+            )
+        }
+        os.writeBytes("exit\n")
+        os.flush()
+    }
+
     /**
      *绑定事件
      */
@@ -353,8 +404,14 @@ class SystemSettingsFragment:BaseFragment<SystemSettingsPresenter,FragmentSystem
                 uploadingData(partSettingDO)
             }
             R.id.system_settings_tv -> {
-                val intent = Intent(Settings.ACTION_SETTINGS)
-                startActivity(intent)
+                PasswordDialogHelper.showPasswordDialog(activity) {
+                    val intent = Intent(Settings.ACTION_SETTINGS)
+                    startActivity(intent)
+
+                    if (Build.BOARD.equals("k37mv1_64_bsp")) {
+                        StatusBarHelper.toggleStatusBar(activity, true)
+                    }
+                }
             }
         }
     }

+ 74 - 1
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/AppUpdateHelper.java

@@ -17,6 +17,7 @@ import com.wdkl.ncs.android.component.nursehome.activity.NurseHomeActivity;
 
 import java.io.BufferedReader;
 import java.io.File;
+import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.lang.reflect.Constructor;
@@ -52,7 +53,8 @@ public class AppUpdateHelper {
 
         String path = FILE_APK_PATH + "/" + FILE_APK_NAME;
         //if (installApp(context.getPackageName(), path)) {
-        if (rootSilenceInstall(path)) {
+        //if (rootSilenceInstall(path)) {
+        if (rootInstall(context, context.getPackageName(), path)) {
             Log.d(TAG, "安装成功");
             if (callBack != null) {
                 callBack.onSuccess();
@@ -207,6 +209,56 @@ public class AppUpdateHelper {
         }
     }
 
+    public static boolean rootInstall(Context context, String packageName, String path) {
+        Process process;
+        PrintWriter printWriter;
+        BufferedReader errorStream = null;
+        BufferedReader successStream = null;
+        Boolean result;
+        try {
+            process = Runtime.getRuntime().exec("su");
+            printWriter = new PrintWriter(process.getOutputStream());
+            printWriter.println("pm install -i "+packageName+" -r " + path);//-i "+packageName+"
+            printWriter.flush();
+            printWriter.close();
+            Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
+            PendingIntent restartIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT);
+            AlarmManager mgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {// 6.0及以上
+                mgr.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 45000, restartIntent);
+            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {// 4.4及以上
+                mgr.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 45000, restartIntent);
+            }
+            int value = process.waitFor();
+            result = (value == 0);
+        } catch (Exception e) {
+            if(errorStream!=null){
+                try {
+                    errorStream.close();
+                } catch (IOException ioException) {
+                    ioException.printStackTrace();
+                }
+            }
+            if(successStream!=null){
+                try {
+                    successStream.close();
+                } catch (IOException ioException) {
+                    ioException.printStackTrace();
+                }
+            }
+            Log.e(TAG, "rootSilenceInstall e:" + e.getMessage());
+            result = false;
+        }
+
+        if(result) { //静默安装成功
+            Log.i(TAG,"静默安装成功!");
+            rootStartApk("com.wdkl.app.ncs.nursehost","com.wdkl.ncs.android.component.nursehome.activity.NurseHomeActivity");
+        }
+
+        return result;
+    }
+
     public static void reboot(Context context) {
         try {
             Intent intent = new Intent(Intent.ACTION_REBOOT);
@@ -219,6 +271,27 @@ public class AppUpdateHelper {
         }
     }
 
+    /**
+     * root下启动apk
+     * */
+    public static boolean rootStartApk(String packageName,String activityName){
+        boolean isSuccess = false;
+        String cmd = "su am start -n " + packageName + "/" + activityName + " \n";
+        Process process = null;
+        try {
+            process = Runtime.getRuntime().exec(cmd);
+            int value = process.waitFor();
+            return value == 0;
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally{
+            if(process!=null){
+                process.destroy();
+            }
+        }
+        return isSuccess;
+    }
+
     public static void restartApp(Context context) {
         //重新启动app
         Intent mStartActivity = new Intent(context.getApplicationContext(), NurseHomeActivity.class);

+ 126 - 0
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/PasswordDialogHelper.java

@@ -0,0 +1,126 @@
+package com.wdkl.ncs.android.component.nursehome.util;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.AdapterView;
+import android.widget.GridView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.wdkl.ncs.android.component.nursehome.R;
+import com.wdkl.ncs.android.component.nursehome.adapter.NumAdapter;
+
+
+public class PasswordDialogHelper {
+
+    private static AlertDialog dialog;
+    private static String pwd = "";
+
+    public static void showPasswordDialog(final Activity activity, final ClickListener listener) {
+        if (dialog != null && dialog.isShowing()) {
+            return;
+        }
+
+        View contentView = LayoutInflater.from(activity).inflate(R.layout.password_dialog_lay, null);
+        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+        builder.setView(contentView);
+
+        final String[] numbers = {"1","2","3","4","5","6","7","8","9"};
+        final TextView password = contentView.findViewById(R.id.tv_psw_view);
+        GridView gridView = contentView.findViewById(R.id.grid_psw);
+        NumAdapter adapter = new NumAdapter(numbers, activity);
+        gridView.setAdapter(adapter);
+        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                if (pwd.length() <= 2) {
+                    pwd = pwd + numbers[position];
+                    password.setText(pwd);
+                }
+                Log.d("password", "input password len: " + pwd.length() + "--" + pwd);
+            }
+        });
+
+        TextView delete = contentView.findViewById(R.id.btn_delete);
+        TextView cancel = contentView.findViewById(R.id.btn_cancel);
+        TextView confirm = contentView.findViewById(R.id.btn_confirm);
+        delete.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.d("password", "delete password len: " + pwd.length() + "--" + pwd);
+                if (pwd.length() > 1) {
+                    pwd = pwd.substring(0, pwd.length()-1);
+                    password.setText(pwd);
+                } else {
+                    pwd = "";
+                    password.setText(pwd);
+                    password.setHint("请输入密码");
+                }
+            }
+        });
+
+        cancel.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dismissCallDialog();
+            }
+        });
+
+        confirm.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if ("888".equals(pwd)) {
+                    if (listener != null) {
+                        listener.onConfirm();
+                    }
+                    dismissCallDialog();
+                } else {
+                    Toast.makeText(activity, "密码错误", Toast.LENGTH_SHORT).show();
+                }
+            }
+        });
+
+        dialog = builder.create();
+        dialog.setCanceledOnTouchOutside(false);
+        dialog.setCancelable(false);
+        dialog.show();
+
+        //设置dialog宽高及位置
+        try {
+            Window window = dialog.getWindow();
+            window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+            WindowManager.LayoutParams lp = window.getAttributes();
+            lp.width = 400;
+            lp.height = 480;
+            lp.gravity = Gravity.CENTER;
+            window.setAttributes(lp);
+
+            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                    | View.SYSTEM_UI_FLAG_FULLSCREEN);
+            window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void dismissCallDialog() {
+        pwd = "";
+        if (dialog != null) {
+            dialog.dismiss();
+        }
+    }
+
+    public interface ClickListener {
+        void onConfirm();
+    }
+}

+ 23 - 0
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/StatusBarHelper.java

@@ -0,0 +1,23 @@
+package com.wdkl.ncs.android.component.nursehome.util;
+
+import android.content.Context;
+import android.content.Intent;
+
+public class StatusBarHelper {
+    public static void toggleStatusBar(Context context, Boolean show) {
+        Intent intent = new Intent();
+        intent.setAction("com.kaer.action.WHETHER_SHOW_NAVIGATION");
+        intent.putExtra("show_navigation_bar", show);
+        context.sendBroadcast(intent);
+
+        /*Intent intent2 = new Intent();
+        intent2.setAction("com.kaer.action.OPEN_PANEL_ENABLED");
+        intent2.putExtra("open_panel_enabled", show);
+        context.sendBroadcast(intent2);
+
+        Intent intent3 = new Intent();
+        intent3.setAction("com.kaer.action.WHETHER_SHOW_STATUSBAR");
+        intent3.putExtra("show_status_bar", show);
+        context.sendBroadcast(intent3);*/
+    }
+}

+ 1 - 1
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/TimeTransition.kt

@@ -20,7 +20,7 @@ object TimeTransition {
     }
 
     fun stampToDateTime(s:Long):String{
-        return TimeStampToTime(s,"MM-dd HH:mm")
+        return TimeStampToTime(s,"MM-dd HH:mm:ss")
     }
 
     /**

+ 1 - 1
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/UpdateTipsDialogHelper.java

@@ -29,7 +29,7 @@ public class UpdateTipsDialogHelper {
         builder.setView(contentView);
         Button buttonCancel = contentView.findViewById(R.id.cancel_button);
         final Button buttonConfirm = contentView.findViewById(R.id.confirm_button);
-        final CountDownTimer timer = new CountDownTimer(15000, 1000) {
+        final CountDownTimer timer = new CountDownTimer(30000, 1000) {
 
             @Override
             public void onTick(long millisUntilFinished) {

BIN
nursehome/src/main/res/drawable/ic_doctor.png


BIN
nursehome/src/main/res/drawable/ic_doctor_host.png


BIN
nursehome/src/main/res/drawable/ic_nurse_default.png


BIN
nursehome/src/main/res/drawable/ic_other_host.png


+ 5 - 0
nursehome/src/main/res/drawable/ic_video_call.xml

@@ -0,0 +1,5 @@
+<vector android:height="40dp" android:tint="#02FF0F"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M17,10.5V7c0,-0.55 -0.45,-1 -1,-1H4c-0.55,0 -1,0.45 -1,1v10c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1v-3.5l4,4v-11l-4,4z"/>
+</vector>

+ 8 - 0
nursehome/src/main/res/drawable/radiobutton_background_checked.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <!-- 填充 -->
+    <solid android:color="#2F9DF1" />
+    <!-- 圆角 -->
+    <corners android:radius="5dp" />
+</shape>

+ 8 - 0
nursehome/src/main/res/drawable/radiobutton_background_unchecked.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <!-- 填充 -->
+    <solid android:color="#B4B4B4" />
+    <!-- 圆角 -->
+    <corners android:radius="5dp" />
+</shape>

+ 4 - 0
nursehome/src/main/res/drawable/responsible_bed_bg.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <stroke android:color="@color/main_color" android:width="2px" />
+</shape>

+ 7 - 0
nursehome/src/main/res/drawable/selector_button_bg_color.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/radiobutton_background_unchecked"
+        android:state_checked="false" />
+    <item android:drawable="@drawable/radiobutton_background_checked"
+        android:state_checked="true" />
+</selector>

+ 1 - 1
nursehome/src/main/res/drawable/selt_move_icon.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@drawable/yi_dong" android:state_checked="false" />
-<item android:drawable="@drawable/yi_dong_xuan_zhog" android:state_checked="true" />
+<item android:drawable="@drawable/yi_dong" android:state_checked="true" />
 </selector>

+ 1 - 1
nursehome/src/main/res/drawable/selt_other_host_icon.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@drawable/qi_ta_zhu_ji" android:state_checked="false" />
-<item android:drawable="@drawable/qi_ta_zhu_ji_xuan_zhong" android:state_checked="true" />
+<item android:drawable="@drawable/qi_ta_zhu_ji" android:state_checked="true" />
 </selector>

+ 22 - 22
nursehome/src/main/res/layout/activity_nurse_home.xml

@@ -149,7 +149,7 @@
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/home_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
@@ -162,7 +162,7 @@
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/broadcast_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
@@ -176,7 +176,7 @@
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/visit_an_extension_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
@@ -189,21 +189,21 @@
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/doctor_host_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
-                            android:drawableLeft="@drawable/selt_broadcast_icon"
+                            android:drawableLeft="@drawable/ic_doctor"
+                            android:drawablePadding="10px"
                             android:gravity="center"
-                            android:textColor="#FFFFFF"
+                            android:textColor="@drawable/selector_bottom_btn_text_color"
                             android:text="医生机"
-                            android:textSize="16sp"
-                            android:visibility="gone" />
+                            android:textSize="24sp" />
 
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/inpatient_ward_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
@@ -216,7 +216,7 @@
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/sickbed_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
@@ -229,33 +229,33 @@
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/nurse_move_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
                             android:drawableLeft="@drawable/selt_move_icon"
+                            android:drawablePadding="10px"
                             android:gravity="center"
-                            android:textColor="#FFFFFF"
-                            android:text="护士移动"
-                            android:textSize="16sp"
-                            android:visibility="gone" />
+                            android:textColor="@drawable/selector_bottom_btn_text_color"
+                            android:text="移动设备"
+                            android:textSize="24sp" />
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/other_host_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
                             android:drawableLeft="@drawable/selt_other_host_icon"
+                            android:drawablePadding="10px"
                             android:gravity="center"
-                            android:textColor="#FFFFFF"
+                            android:textColor="@drawable/selector_bottom_btn_text_color"
                             android:text="其它主机"
-                            android:textSize="16sp"
-                            android:visibility="gone" />
+                            android:textSize="24sp" />
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/collocation_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
@@ -268,7 +268,7 @@
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/led_settings_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"
@@ -282,7 +282,7 @@
 
                         <com.wdkl.ncs.android.lib.widget.CustomRadioButton
                             android:id="@+id/system_settings_radio_bt"
-                            android:layout_width="0dp"
+                            android:layout_width="wrap_content"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
                             android:button="@null"

+ 17 - 20
nursehome/src/main/res/layout/adapter_doctor_host.xml

@@ -1,29 +1,26 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="60dp"
-    android:layout_height="40dp"
-    android:background="#1C86EE">
-<LinearLayout
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-  <ImageView
-      android:id="@+id/doctor_photo_imagev"
-      android:layout_width="20dp"
-      android:layout_height="20dp"
-      android:layout_gravity="center_vertical"
-      android:background="@mipmap/ic_launcher"/>
+  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+      android:layout_width="140dp"
+      android:layout_height="100dp"
+      android:padding="10dp"
+      android:background="@drawable/item_selector">
+
+    <ImageView
+        android:id="@+id/doctor_photo_imagev"
+        android:layout_width="80dp"
+        android:layout_height="80dp"
+        android:layout_gravity="center_vertical"
+        android:background="@drawable/ic_doctor_host" />
+
     <TextView
         android:id="@+id/doctor_name_tv"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="10dp"
         android:layout_gravity="center_vertical"
-        android:textSize="10dp"
-        android:text="张医生"/>
-
-
+        android:layout_marginLeft="10dp"
+        android:text="--"
+        android:textSize="24sp" />
 
-</LinearLayout>
-</RelativeLayout>
+  </LinearLayout>
 </layout>

+ 45 - 38
nursehome/src/main/res/layout/adapter_hospital_frame_part.xml

@@ -5,7 +5,7 @@
         android:layout_width="140dp"
         android:layout_height="112dp"
         android:background="@drawable/item_selector"
-        android:padding="6dp">
+        android:padding="4dp">
 
         <LinearLayout
             android:id="@+id/rl_nurse_item"
@@ -16,7 +16,9 @@
                 android:id="@+id/tv_nurse_config_name"
                 android:layout_width="0dp"
                 android:layout_height="match_parent"
-                android:layout_weight="2"
+                android:layout_weight="1.5"
+                android:singleLine="true"
+                android:ellipsize="end"
                 android:text="--"
                 android:textColor="#B4B4B4"
                 android:textSize="14sp"/>
@@ -27,6 +29,8 @@
                 android:layout_height="match_parent"
                 android:layout_weight="1"
                 android:gravity="center"
+                android:singleLine="true"
+                android:ellipsize="end"
                 android:background="@color/color_gray"
                 android:textColor="@color/color_white"
                 android:textSize="12sp" />
@@ -47,46 +51,49 @@
                 android:textSize="18sp"
                 android:textColor="#2F9DF1"/>
 
-            <ImageView
-                android:id="@+id/patient_imagev"
-                android:layout_width="wrap_content"
+            <LinearLayout
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_below="@id/room_number_tv"
-                android:layout_marginTop="6dp"
-                android:src="@drawable/kong_chuang" />
+                android:layout_below="@id/room_number_tv">
 
-            <TextView
-                android:id="@+id/patient_name_tv"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_toRightOf="@id/patient_imagev"
-                android:layout_below="@id/room_number_tv"
-                android:layout_marginTop="12dp"
-                android:layout_marginLeft="8dp"
-                android:text="--"
-                android:textSize="20sp"
-                android:textColor="@color/black"/>
+                <ImageView
+                    android:id="@+id/patient_imagev"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:layout_marginTop="6dp"
+                    android:src="@drawable/kong_chuang" />
 
-            <TextView
-                android:id="@+id/patient_age_tv"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_alignParentRight="true"
-                android:layout_below="@id/room_number_tv"
-                android:layout_marginTop="16dp"
-                android:layout_marginRight="10dp"
-                android:text="--"
-                android:textSize="16sp" />
+                <TextView
+                    android:id="@+id/patient_name_tv"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="5"
+                    android:layout_marginTop="12dp"
+                    android:paddingLeft="6dp"
+                    android:singleLine="true"
+                    android:text="--"
+                    android:textSize="20sp"
+                    android:textColor="@color/black"/>
 
-            <ImageView
-                android:id="@+id/sex_imagev"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_toLeftOf="@id/patient_age_tv"
-                android:layout_below="@id/room_number_tv"
-                android:layout_marginTop="20dp"
-                android:layout_marginRight="4dp"
-                android:src="@drawable/nv" />
+                <TextView
+                    android:id="@+id/patient_age_tv"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="2"
+                    android:layout_marginTop="10dp"
+                    android:gravity="center"
+                    android:text="--"
+                    android:textSize="16sp" />
+
+                <ImageView
+                    android:id="@+id/sex_imagev"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:layout_marginTop="20dp"
+                    android:src="@drawable/nv" />
+            </LinearLayout>
 
         </RelativeLayout>
 

+ 26 - 0
nursehome/src/main/res/layout/adapter_mobile_device.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout>
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="140dp"
+        android:layout_height="100dp"
+        android:padding="10dp"
+        android:background="@drawable/item_selector">
+
+        <ImageView
+            android:id="@+id/mobile_photo_imagev"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:background="@drawable/ic_nurse_default" />
+
+        <TextView
+            android:id="@+id/mobile_name_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:layout_marginLeft="10dp"
+            android:text="--"
+            android:textSize="24sp" />
+
+    </LinearLayout>
+</layout>

+ 26 - 0
nursehome/src/main/res/layout/adapter_other_host.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout>
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="140dp"
+        android:layout_height="100dp"
+        android:padding="10dp"
+        android:background="@drawable/item_selector">
+
+        <ImageView
+            android:id="@+id/iv_other_host"
+            android:layout_width="80dp"
+            android:layout_height="80dp"
+            android:layout_gravity="center_vertical"
+            android:background="@drawable/ic_other_host" />
+
+        <TextView
+            android:id="@+id/tv_other_host"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:layout_marginLeft="10dp"
+            android:text="--"
+            android:textSize="24sp" />
+
+    </LinearLayout>
+</layout>

+ 13 - 12
nursehome/src/main/res/layout/adapter_responsibility_bed.xml

@@ -1,15 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-<TextView
-    android:id="@+id/responsibility_bed_tv"
-    android:layout_width="40dp"
-    android:layout_height="20dp"
-    android:background="#5D478B"
-    android:gravity="center"
-    android:textSize="8dp"
-    android:text="1"/>
-</LinearLayout>
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="80dp"
+        android:layout_height="40dp">
+
+        <TextView
+            android:id="@+id/responsibility_bed_tv"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@drawable/responsible_bed_bg"
+            android:gravity="center"
+            android:text=""
+            android:textSize="16sp" />
+    </LinearLayout>
 </layout>

+ 3 - 0
nursehome/src/main/res/layout/fragment_call_records.xml

@@ -28,6 +28,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerHorizontal="true"
                     android:layout_marginTop="2dp"
+                    android:singleLine="true"
                     android:text="呼叫"
                     android:textSize="20sp" />
 
@@ -70,6 +71,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerHorizontal="true"
                     android:layout_marginTop="2dp"
+                    android:singleLine="true"
                     android:text="未接"
                     android:textSize="20sp" />
                 <ImageView
@@ -96,6 +98,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerHorizontal="true"
                     android:layout_marginTop="2dp"
+                    android:singleLine="true"
                     android:text="所有"
                     android:textSize="20sp" />
                 <ImageView

+ 51 - 125
nursehome/src/main/res/layout/fragment_doctor_host.xml

@@ -1,141 +1,67 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:bind="http://schemas.android.com/apk/res-auto">
-
-    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="这是医生机界面"
-            android:textSize="20dp" />
-
-        <LinearLayout
-            android:layout_width="match_parent"
+        <com.scwang.smartrefresh.layout.SmartRefreshLayout
+            android:id="@+id/doctor_host_refresh"
+            android:layout_width="0dp"
             android:layout_height="match_parent"
-            android:orientation="horizontal">
+            android:layout_weight="0.74"
+            bind:srlEnableLoadMore="false"
+            bind:srlEnableRefresh="true">
 
-            <com.scwang.smartrefresh.layout.SmartRefreshLayout
-                android:id="@+id/doctor_host_refresh"
-                android:layout_width="0dp"
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/doctor_host_recyv"
+                android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:layout_weight="0.6"
-                bind:srlEnableLoadMore="false"
-                bind:srlEnableRefresh="true">
-
-                <android.support.v7.widget.RecyclerView
-                    android:id="@+id/doctor_host_recyv"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:background="#98FB98">
-
-                </android.support.v7.widget.RecyclerView>
-
-            </com.scwang.smartrefresh.layout.SmartRefreshLayout>
+                android:background="#EAF2F9"
+                android:padding="10dp" />
+        </com.scwang.smartrefresh.layout.SmartRefreshLayout>
 
-            <RelativeLayout
-                android:layout_width="0dp"
+        <RelativeLayout
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="0.26"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="6dp"
+            android:layout_marginRight="6dp">
+
+            <TextView
+                android:id="@+id/call_doctor_host"
+                android:layout_width="match_parent"
+                android:layout_height="72dp"
+                android:layout_alignParentBottom="true"
+                android:padding="16dp"
+                android:gravity="center"
+                android:paddingLeft="40dp"
+                android:drawableLeft="@drawable/ic_call_out"
+                android:background="#2584CC"
+                android:textSize="28sp"
+                android:text="呼叫"
+                android:textColor="@drawable/selector_action_button_text_color"/>
+
+            <LinearLayout
+                android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:layout_weight="0.4">
-
-                <ImageView
-                    android:id="@+id/doctor_photo_imagev"
-                    android:layout_width="20dp"
-                    android:layout_height="20dp"
-                    android:background="@mipmap/ic_launcher" />
-
-                <LinearLayout
-                    android:id="@+id/doctor_message_linlyout"
-                    android:layout_width="match_parent"
-                    android:layout_height="30dp"
-                    android:layout_toRightOf="@+id/doctor_photo_imagev"
-                    android:orientation="vertical">
-
-                    <LinearLayout
-                        android:id="@+id/data_linlayout"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="10dp"
-                        android:orientation="horizontal">
-
-                        <TextView
-                            android:id="@+id/doctor_name_tv"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_marginRight="2dp"
-                            android:text="王医生"
-                            android:textSize="5dp" />
-
-                        <TextView
-                            android:id="@+id/doctor_sex_tv"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_marginLeft="8dp"
-                            android:layout_marginRight="2dp"
-                            android:text="性别"
-                            android:textSize="5dp" />
-
-                        <TextView
-                            android:id="@+id/doctor_age_tv"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_marginRight="2dp"
-                            android:text="年龄"
-                            android:textSize="5dp" />
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="10dp"
-                        android:layout_marginTop="5dp">
-
-                        <TextView
-                            android:id="@+id/doctor_phone"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:text="12345678978"
-                            android:textSize="8dp" />
-
-                    </LinearLayout>
-
-                </LinearLayout>
-
-                <LinearLayout
-                    android:id="@+id/responsibility_bed_linlyout"
-                    android:layout_width="match_parent"
-                    android:layout_height="360dp"
-                    android:layout_below="@+id/doctor_message_linlyout"
-                    android:orientation="vertical">
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="责任床位"
-                        android:textSize="8dp" />
-
-                    <android.support.v7.widget.RecyclerView
-                        android:id="@+id/doctor_duty_sickbed_rev"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="#800000"></android.support.v7.widget.RecyclerView>
-
-                </LinearLayout>
+                android:layout_above="@id/call_doctor_host"
+                android:orientation="vertical"
+                android:background="@color/color_white">
 
-                <Button
-                    android:id="@+id/call_doctor_bt"
+                <TextView
+                    android:id="@+id/tv_doctor_name_title"
                     android:layout_width="match_parent"
-                    android:layout_height="20dp"
-                    android:layout_marginLeft="8dp"
-                    android:layout_marginRight="8dp"
-                    android:layout_alignParentBottom="true"
-                    android:text="呼叫"
-                    android:textSize="8dp" />
+                    android:layout_height="wrap_content"
+                    android:padding="4dp"
+                    android:gravity="center"
+                    android:text="--"
+                    android:textSize="24sp"
+                    android:textColor="#2F9DF1"/>
 
+            </LinearLayout>
 
-            </RelativeLayout>
-        </LinearLayout>
+        </RelativeLayout>
+    </LinearLayout>
 
-    </RelativeLayout>
 </layout>

+ 26 - 135
nursehome/src/main/res/layout/fragment_frame_part.xml

@@ -1,151 +1,42 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:bind="http://schemas.android.com/apk/res-auto">
-    <RelativeLayout
+
+    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="#EAF2F9">
 
-        <!--<RadioGroup
-            android:id="@+id/indexes_radiog"
-            android:layout_width="22px"
+        <com.scwang.smartrefresh.layout.SmartRefreshLayout
+            android:id="@+id/refresh"
+            android:layout_width="0px"
             android:layout_height="match_parent"
-            android:background="@drawable/sp_indexes_bg"
-            android:visibility="gone">
-
-            <RadioButton
-                android:id="@+id/one_radiob"
-                android:layout_width="match_parent"
-                android:layout_height="0px"
-                android:layout_weight="1"
-                android:background="@drawable/selt_check_box_bg"
-                android:button="@null"
-                android:gravity="center"
-                android:text="1"
-                android:textSize="14px" />
-
-            <RadioButton
-                android:id="@+id/two_radiob"
-                android:layout_width="match_parent"
-                android:layout_height="0px"
-                android:layout_weight="1"
-                android:background="@drawable/selt_check_box_bg"
-                android:button="@null"
-                android:gravity="center"
-                android:text="6"
-                android:textSize="14px" />
-
-            <RadioButton
-                android:id="@+id/three_radiob"
-                android:layout_width="match_parent"
-                android:layout_height="0px"
-                android:layout_weight="1"
-                android:background="@drawable/selt_check_box_bg"
-                android:button="@null"
-                android:gravity="center"
-                android:text="16"
-                android:textSize="14px" />
-
-            <RadioButton
-                android:id="@+id/four_radiob"
-                android:layout_width="match_parent"
-                android:layout_height="0px"
-                android:layout_weight="1"
-                android:background="@drawable/selt_check_box_bg"
-                android:button="@null"
-                android:gravity="center"
-                android:text="21"
-                android:textSize="14px" />
+            android:layout_marginLeft="8dp"
+            android:layout_marginRight="8dp"
+            android:layout_weight="0.74"
+            bind:srlEnableLoadMore="false"
+            bind:srlEnableRefresh="true">
 
-            <RadioButton
-                android:id="@+id/five_radiob"
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/listView"
                 android:layout_width="match_parent"
-                android:layout_height="0px"
-                android:layout_weight="1"
-                android:background="@drawable/selt_check_box_bg"
-                android:button="@null"
-                android:gravity="center"
-                android:text="26"
-                android:textSize="14px" />
-
-            <RadioButton
-                android:id="@+id/six_radiob"
-                android:layout_width="match_parent"
-                android:layout_height="0px"
-                android:layout_weight="1"
-                android:background="@drawable/selt_check_box_bg"
-                android:button="@null"
-                android:gravity="center"
-                android:text="31"
-                android:textSize="14px" />
-
-            <RadioButton
-                android:id="@+id/seven_radiob"
-                android:layout_width="match_parent"
-                android:layout_height="0px"
-                android:layout_weight="1"
-                android:background="@drawable/selt_check_box_bg"
-                android:button="@null"
-                android:gravity="center"
-                android:text="36"
-                android:textSize="14px" />
-
-            <RadioButton
-                android:id="@+id/eight_radiob"
-                android:layout_width="match_parent"
-                android:layout_height="0px"
-                android:layout_weight="1"
-                android:background="@drawable/selt_check_box_bg"
-                android:button="@null"
-                android:gravity="center"
-                android:text="41"
-                android:textSize="14px" />
-
-            <RadioButton
-                android:id="@+id/nine_radiob"
-                android:layout_width="match_parent"
-                android:layout_height="0px"
-                android:layout_weight="1"
-                android:background="@drawable/selt_check_box_bg"
-                android:button="@null"
-                android:gravity="center"
-                android:text="46"
-                android:textSize="14px" />
-        </RadioGroup>-->
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="horizontal">
-
-            <com.scwang.smartrefresh.layout.SmartRefreshLayout
-                android:id="@+id/refresh"
-                android:layout_width="0px"
                 android:layout_height="match_parent"
-                android:layout_marginLeft="8px"
-                android:layout_marginRight="8px"
-                android:layout_weight="0.74"
-                bind:srlEnableLoadMore="false"
-                bind:srlEnableRefresh="true">
-
-                <android.support.v7.widget.RecyclerView
-                    android:id="@+id/listView"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"/>
+                android:scrollbars="vertical"
+                android:fadeScrollbars="true"
+                android:scrollbarStyle="insideOverlay" />
 
-            </com.scwang.smartrefresh.layout.SmartRefreshLayout>
+        </com.scwang.smartrefresh.layout.SmartRefreshLayout>
 
-            <RelativeLayout
-                android:layout_width="0dp"
-                android:layout_height="match_parent"
-                android:layout_marginRight="6px"
-                android:layout_weight="0.26">
+        <RelativeLayout
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_marginRight="6dp"
+            android:layout_weight="0.26">
 
-                <include
-                    android:id="@+id/right_incident_relyout"
-                    layout="@layout/right_basic_information" />
-            </RelativeLayout>
-        </LinearLayout>
+            <include
+                android:id="@+id/right_incident_relyout"
+                layout="@layout/right_basic_information" />
+        </RelativeLayout>
 
-    </RelativeLayout>
+    </LinearLayout>
 </layout>

+ 58 - 91
nursehome/src/main/res/layout/fragment_nurse_move.xml

@@ -1,108 +1,75 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:bind="http://schemas.android.com/apk/res-auto">
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="20dp"
-        android:text="这是护士移动界面"/>
+    android:layout_height="match_parent"
+    android:orientation="horizontal"
+    android:background="#EAF2F9">
 
-    <LinearLayout
-        android:layout_width="match_parent"
+
+    <com.scwang.smartrefresh.layout.SmartRefreshLayout
+        android:id="@+id/nurse_mobile_refresh"
+        android:layout_width="0dp"
         android:layout_height="match_parent"
-        android:orientation="horizontal">
+        android:layout_weight="0.74"
+        bind:srlEnableLoadMore="false"
+        bind:srlEnableRefresh="true">
 
-        <com.scwang.smartrefresh.layout.SmartRefreshLayout
-            android:id="@+id/nurse_move_refresh"
-            android:layout_width="0dp"
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/nurse_mobile_rv"
+            android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:layout_weight="0.6"
-            bind:srlEnableLoadMore="false"
-            bind:srlEnableRefresh="true">
-
-            <android.support.v7.widget.RecyclerView
-                android:id="@+id/nurse_move_recyv"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="#98FB98">
+            android:padding="10dp"/>
 
-            </android.support.v7.widget.RecyclerView>
+    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
 
-        </com.scwang.smartrefresh.layout.SmartRefreshLayout>
-
-        <RelativeLayout
-            android:layout_width="0dp"
+    <RelativeLayout
+        android:layout_width="0dp"
+        android:layout_height="match_parent"
+        android:layout_weight="0.26"
+        android:layout_marginTop="10dp"
+        android:layout_marginBottom="6dp"
+        android:layout_marginRight="6dp">
+
+        <TextView
+            android:id="@+id/call_nurse_mobile"
+            android:layout_width="match_parent"
+            android:layout_height="72dp"
+            android:layout_alignParentBottom="true"
+            android:padding="16dp"
+            android:gravity="center"
+            android:paddingLeft="40dp"
+            android:drawableLeft="@drawable/ic_call_out"
+            android:background="#2584CC"
+            android:textSize="28sp"
+            android:text="呼叫"
+            android:textColor="@drawable/selector_action_button_text_color"/>
+
+        <LinearLayout
+            android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:layout_weight="0.4">
-
-            <LinearLayout
-                android:id="@+id/nurse_message_linlyout"
-                android:layout_width="match_parent"
-                android:layout_height="20dp"
-                android:orientation="vertical">
+            android:layout_above="@id/call_nurse_mobile"
+            android:orientation="vertical"
+            android:background="@color/color_white">
 
-                <LinearLayout
-                    android:id="@+id/data_linlayout"
-                    android:layout_width="wrap_content"
-                    android:layout_height="match_parent"
-                    android:gravity="center_vertical"
-                    android:layout_marginLeft="10dp"
-                    android:orientation="horizontal">
-
-                    <TextView
-                        android:id="@+id/nurse_location_tv"
-                        android:layout_width="40dp"
-                        android:layout_height="wrap_content"
-                        android:layout_marginRight="2dp"
-                        android:text="位置:03房"
-                        android:textSize="5dp" />
-
-                    <TextView
-                        android:id="@+id/nurse_kwh_tv"
-                        android:layout_width="40dp"
-                        android:layout_height="wrap_content"
-                        android:layout_marginRight="2dp"
-                        android:text="电量:20%"
-                        android:textSize="5dp" />
-                </LinearLayout>
-
-            </LinearLayout>
-
-            <LinearLayout
-                android:id="@+id/responsibility_bed_linlyout"
+            <TextView
+                android:id="@+id/tv_manager_bed_title"
                 android:layout_width="match_parent"
-                android:layout_height="360dp"
-                android:layout_below="@+id/nurse_message_linlyout"
-                android:orientation="vertical">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="管理床位"
-                    android:textSize="8dp" />
+                android:layout_height="wrap_content"
+                android:padding="4dp"
+                android:gravity="center"
+                android:text="管理床位"
+                android:textSize="24sp"
+                android:textColor="#2F9DF1"/>
 
-                <android.support.v7.widget.RecyclerView
-                    android:id="@+id/nurse_duty_sickbed_rev"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:background="#800000"></android.support.v7.widget.RecyclerView>
-
-            </LinearLayout>
-
-            <Button
-                android:id="@+id/call_nurse_bt"
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/nurse_duty_sickbed_rev"
                 android:layout_width="match_parent"
-                android:layout_height="20dp"
-                android:layout_marginLeft="8dp"
-                android:layout_marginRight="8dp"
-                android:layout_alignParentBottom="true"
-                android:text="呼叫"
-                android:textSize="8dp" />
+                android:layout_height="match_parent"
+                android:padding="10dp"/>
 
+        </LinearLayout>
 
-        </RelativeLayout>
-    </LinearLayout>
-</RelativeLayout>
+    </RelativeLayout>
+</LinearLayout>
 </layout>

+ 74 - 74
nursehome/src/main/res/layout/fragment_other_host.xml

@@ -1,109 +1,109 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:bind="http://schemas.android.com/apk/res-auto">
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
 
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="20dp"
-        android:text="这是其它主机界面"/>
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="0.22"
+            android:padding="10dp"
+            android:background="#EAF2F9">
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="horizontal">
+            <RadioGroup
+                android:id="@+id/group_host"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+
+                <RadioButton
+                    android:id="@+id/rb_other_host"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:paddingTop="20dp"
+                    android:paddingBottom="20dp"
+                    android:background="@drawable/selector_button_bg_color"
+                    android:button="@null"
+                    android:gravity="center"
+                    android:text="其他主机"
+                    android:textSize="24sp"/>
+
+                <RadioButton
+                    android:id="@+id/rb_manager_host"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="20dp"
+                    android:paddingTop="20dp"
+                    android:paddingBottom="20dp"
+                    android:background="@drawable/selector_button_bg_color"
+                    android:button="@null"
+                    android:gravity="center"
+                    android:text="总控主机"
+                    android:textSize="24sp"/>
+            </RadioGroup>
+        </LinearLayout>
 
         <com.scwang.smartrefresh.layout.SmartRefreshLayout
             android:id="@+id/other_host_refresh"
             android:layout_width="0dp"
             android:layout_height="match_parent"
-            android:layout_weight="0.6"
+            android:layout_weight="0.52"
             bind:srlEnableLoadMore="false"
-            bind:srlEnableRefresh="true">
+            bind:srlEnableRefresh="false">
 
             <android.support.v7.widget.RecyclerView
-                android:id="@+id/other_host_recyv"
+                android:id="@+id/rv_other_host"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:background="#98FB98">
-
-            </android.support.v7.widget.RecyclerView>
+                android:background="#EAF2F9"
+                android:padding="10dp"/>
 
         </com.scwang.smartrefresh.layout.SmartRefreshLayout>
 
         <RelativeLayout
             android:layout_width="0dp"
             android:layout_height="match_parent"
-            android:layout_weight="0.4">
+            android:layout_marginTop="10dp"
+            android:layout_marginRight="6dp"
+            android:layout_marginBottom="6dp"
+            android:layout_weight="0.26">
 
-            <LinearLayout
-                android:id="@+id/other_host_message_linlyout"
+            <TextView
+                android:id="@+id/call_other_host"
                 android:layout_width="match_parent"
-                android:layout_height="20dp"
-                android:orientation="vertical">
-
-                <LinearLayout
-                    android:id="@+id/data_linlayout"
-                    android:layout_width="wrap_content"
-                    android:layout_height="match_parent"
-                    android:gravity="center_vertical"
-                    android:layout_marginLeft="10dp"
-                    android:orientation="horizontal">
-
-                    <TextView
-                        android:id="@+id/other_host_location_tv"
-                        android:layout_width="40dp"
-                        android:layout_height="wrap_content"
-                        android:layout_marginRight="2dp"
-                        android:text="位置:03房"
-                        android:textSize="5dp" />
-
-                    <TextView
-                        android:id="@+id/other_host_kwh_tv"
-                        android:layout_width="40dp"
-                        android:layout_height="wrap_content"
-                        android:layout_marginRight="2dp"
-                        android:text="电量:20%"
-                        android:textSize="5dp" />
-                </LinearLayout>
-
-            </LinearLayout>
+                android:layout_height="72dp"
+                android:layout_alignParentBottom="true"
+                android:background="#2584CC"
+                android:drawableLeft="@drawable/ic_call_out"
+                android:gravity="center"
+                android:padding="16dp"
+                android:paddingLeft="40dp"
+                android:text="呼叫"
+                android:textColor="@drawable/selector_action_button_text_color"
+                android:textSize="28sp" />
 
             <LinearLayout
-                android:id="@+id/responsibility_bed_linlyout"
                 android:layout_width="match_parent"
-                android:layout_height="360dp"
-                android:layout_below="@+id/other_host_message_linlyout"
+                android:layout_height="match_parent"
+                android:layout_above="@id/call_other_host"
+                android:background="@color/color_white"
                 android:orientation="vertical">
 
                 <TextView
-                    android:layout_width="wrap_content"
+                    android:id="@+id/tv_device_name_title"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:text="管理床位"
-                    android:textSize="8dp" />
-
-<!--                <android.support.v7.widget.RecyclerView-->
-<!--                    android:id="@+id/nurse_duty_sickbed_rev"-->
-<!--                    android:layout_width="match_parent"-->
-<!--                    android:layout_height="match_parent"-->
-<!--                    android:background="#800000"></android.support.v7.widget.RecyclerView>-->
+                    android:gravity="center"
+                    android:padding="4dp"
+                    android:text="--"
+                    android:textColor="#2F9DF1"
+                    android:textSize="24sp" />
 
             </LinearLayout>
 
-            <Button
-                android:id="@+id/call_other_host_bt"
-                android:layout_width="match_parent"
-                android:layout_height="20dp"
-                android:layout_marginLeft="8dp"
-                android:layout_marginRight="8dp"
-                android:layout_alignParentBottom="true"
-                android:text="呼叫"
-                android:textSize="8dp" />
-
-
         </RelativeLayout>
+
     </LinearLayout>
-</RelativeLayout>
+
 </layout>

+ 67 - 0
nursehome/src/main/res/layout/password_dialog_lay.xml

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <!--密码框-->
+    <TextView
+        android:id="@+id/tv_psw_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:hint="请输入密码"
+        android:textColor="@color/main_color"
+        android:textSize="24sp" />
+
+    <GridView
+        android:id="@+id/grid_psw"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:horizontalSpacing="5dp"
+        android:numColumns="3"
+        android:verticalSpacing="5dp" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/btn_delete"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:gravity="center_horizontal"
+            android:padding="4dp"
+            android:text="删除"
+            android:textColor="@color/main_color"
+            android:textSize="24sp" />
+
+        <TextView
+            android:id="@+id/btn_cancel"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:gravity="center_horizontal"
+            android:padding="4dp"
+            android:text="取消"
+            android:textColor="@color/main_color"
+            android:textSize="24sp" />
+
+        <TextView
+            android:id="@+id/btn_confirm"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:gravity="center_horizontal"
+            android:padding="4dp"
+            android:text="确认"
+            android:textColor="@color/main_color"
+            android:textSize="24sp" />
+    </LinearLayout>
+
+</LinearLayout>

+ 11 - 10
nursehome/src/main/res/layout/right_basic_information.xml

@@ -40,10 +40,10 @@
                 android:layout_weight="1"
                 android:gravity="center"
                 android:paddingLeft="10dp"
-                android:drawableLeft="@drawable/ic_call_out"
+                android:drawableLeft="@drawable/ic_video_call"
                 android:textSize="28sp"
                 android:text="视频"
-                android:textColor="@drawable/selector_action_button_text_color"/>
+                android:textColor="@drawable/selector_action_button_text_color" />
         </LinearLayout>
 
         <LinearLayout
@@ -166,26 +166,27 @@
 
                     <TextView
                         android:id="@+id/name_tv"
-                        android:layout_width="wrap_content"
+                        android:layout_width="0dp"
                         android:layout_height="wrap_content"
-                        android:layout_below="@+id/roomNumber"
-                        android:layout_alignLeft="@+id/roomNumber"
+                        android:layout_weight="5"
+                        android:singleLine="true"
                         android:text="---"
                         android:textSize="20sp"
                         android:textColor="#0D0D0D"/>
 
                     <ImageView
                         android:id="@+id/gender_imagev"
-                        android:layout_width="wrap_content"
+                        android:layout_width="0dp"
                         android:layout_height="wrap_content"
-                        android:layout_gravity="center_vertical"
-                        android:layout_marginLeft="12dp"/>
+                        android:layout_weight="1"
+                        android:layout_gravity="center_vertical" />
 
                     <TextView
                         android:id="@+id/age_tv"
-                        android:layout_width="wrap_content"
+                        android:layout_width="0dp"
                         android:layout_height="wrap_content"
-                        android:layout_marginLeft="8dp"
+                        android:layout_weight="2"
+                        android:gravity="center"
                         android:text="--"
                         android:textColor="#B4B4B4"
                         android:textSize="18sp" />