diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tag_normal.xml b/app/src/main/res/drawable/tag_normal.xml index 39b14cc..bb88697 100644 --- a/app/src/main/res/drawable/tag_normal.xml +++ b/app/src/main/res/drawable/tag_normal.xml @@ -1,7 +1,9 @@ - - + + + + () { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tag_normal.xml b/app/src/main/res/drawable/tag_normal.xml index 39b14cc..bb88697 100644 --- a/app/src/main/res/drawable/tag_normal.xml +++ b/app/src/main/res/drawable/tag_normal.xml @@ -1,7 +1,9 @@ - - + + + + - + + + + + + () { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tag_normal.xml b/app/src/main/res/drawable/tag_normal.xml index 39b14cc..bb88697 100644 --- a/app/src/main/res/drawable/tag_normal.xml +++ b/app/src/main/res/drawable/tag_normal.xml @@ -1,7 +1,9 @@ - - + + + + - + + + + + + - + + + + + + () { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tag_normal.xml b/app/src/main/res/drawable/tag_normal.xml index 39b14cc..bb88697 100644 --- a/app/src/main/res/drawable/tag_normal.xml +++ b/app/src/main/res/drawable/tag_normal.xml @@ -1,7 +1,9 @@ - - + + + + - + + + + + + - + + + + + + - + android:background="@drawable/bg_layout" + android:orientation="vertical" + android:padding="@dimen/dp_10"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_20" + android:orientation="horizontal" + android:padding="@dimen/dp_20"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:qmui_backgroundColor="@color/white" + app:qmui_borderColor="@color/hintTextColor" /> - + \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tag_normal.xml b/app/src/main/res/drawable/tag_normal.xml index 39b14cc..bb88697 100644 --- a/app/src/main/res/drawable/tag_normal.xml +++ b/app/src/main/res/drawable/tag_normal.xml @@ -1,7 +1,9 @@ - - + + + + - + + + + + + - + + + + + + - + android:background="@drawable/bg_layout" + android:orientation="vertical" + android:padding="@dimen/dp_10"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_20" + android:orientation="horizontal" + android:padding="@dimen/dp_20"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:qmui_backgroundColor="@color/white" + app:qmui_borderColor="@color/hintTextColor" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_single_choice.xml b/app/src/main/res/layout/dialog_single_choice.xml index 004d6ed..d9819c8 100644 --- a/app/src/main/res/layout/dialog_single_choice.xml +++ b/app/src/main/res/layout/dialog_single_choice.xml @@ -12,7 +12,7 @@ android:layout_height="46dp" android:gravity="center_vertical" android:paddingHorizontal="@dimen/dp_10" - android:text="转单给" + android:text="工单转至" android:textColor="@color/mainThemeColor" android:textSize="@dimen/titleFontSize" /> diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tag_normal.xml b/app/src/main/res/drawable/tag_normal.xml index 39b14cc..bb88697 100644 --- a/app/src/main/res/drawable/tag_normal.xml +++ b/app/src/main/res/drawable/tag_normal.xml @@ -1,7 +1,9 @@ - - + + + + - + + + + + + - + + + + + + - + android:background="@drawable/bg_layout" + android:orientation="vertical" + android:padding="@dimen/dp_10"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_20" + android:orientation="horizontal" + android:padding="@dimen/dp_20"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:qmui_backgroundColor="@color/white" + app:qmui_borderColor="@color/hintTextColor" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_single_choice.xml b/app/src/main/res/layout/dialog_single_choice.xml index 004d6ed..d9819c8 100644 --- a/app/src/main/res/layout/dialog_single_choice.xml +++ b/app/src/main/res/layout/dialog_single_choice.xml @@ -12,7 +12,7 @@ android:layout_height="46dp" android:gravity="center_vertical" android:paddingHorizontal="@dimen/dp_10" - android:text="转单给" + android:text="工单转至" android:textColor="@color/mainThemeColor" android:textSize="@dimen/titleFontSize" /> diff --git a/app/src/main/res/layout/item_tag_flowlayout.xml b/app/src/main/res/layout/item_tag_flowlayout.xml index 1e1e7c7..8826f86 100644 --- a/app/src/main/res/layout/item_tag_flowlayout.xml +++ b/app/src/main/res/layout/item_tag_flowlayout.xml @@ -2,9 +2,11 @@ \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tag_normal.xml b/app/src/main/res/drawable/tag_normal.xml index 39b14cc..bb88697 100644 --- a/app/src/main/res/drawable/tag_normal.xml +++ b/app/src/main/res/drawable/tag_normal.xml @@ -1,7 +1,9 @@ - - + + + + - + + + + + + - + + + + + + - + android:background="@drawable/bg_layout" + android:orientation="vertical" + android:padding="@dimen/dp_10"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_20" + android:orientation="horizontal" + android:padding="@dimen/dp_20"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:qmui_backgroundColor="@color/white" + app:qmui_borderColor="@color/hintTextColor" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_single_choice.xml b/app/src/main/res/layout/dialog_single_choice.xml index 004d6ed..d9819c8 100644 --- a/app/src/main/res/layout/dialog_single_choice.xml +++ b/app/src/main/res/layout/dialog_single_choice.xml @@ -12,7 +12,7 @@ android:layout_height="46dp" android:gravity="center_vertical" android:paddingHorizontal="@dimen/dp_10" - android:text="转单给" + android:text="工单转至" android:textColor="@color/mainThemeColor" android:textSize="@dimen/titleFontSize" /> diff --git a/app/src/main/res/layout/item_tag_flowlayout.xml b/app/src/main/res/layout/item_tag_flowlayout.xml index 1e1e7c7..8826f86 100644 --- a/app/src/main/res/layout/item_tag_flowlayout.xml +++ b/app/src/main/res/layout/item_tag_flowlayout.xml @@ -2,9 +2,11 @@ \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml index 60d089f..a0718bf 100644 --- a/app/src/main/res/menu/bottom_nav_menu.xml +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -19,11 +19,13 @@ app:showAsAction="always" tools:ignore="AlwaysShowAction" /> + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tag_normal.xml b/app/src/main/res/drawable/tag_normal.xml index 39b14cc..bb88697 100644 --- a/app/src/main/res/drawable/tag_normal.xml +++ b/app/src/main/res/drawable/tag_normal.xml @@ -1,7 +1,9 @@ - - + + + + - + + + + + + - + + + + + + - + android:background="@drawable/bg_layout" + android:orientation="vertical" + android:padding="@dimen/dp_10"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_20" + android:orientation="horizontal" + android:padding="@dimen/dp_20"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:qmui_backgroundColor="@color/white" + app:qmui_borderColor="@color/hintTextColor" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_single_choice.xml b/app/src/main/res/layout/dialog_single_choice.xml index 004d6ed..d9819c8 100644 --- a/app/src/main/res/layout/dialog_single_choice.xml +++ b/app/src/main/res/layout/dialog_single_choice.xml @@ -12,7 +12,7 @@ android:layout_height="46dp" android:gravity="center_vertical" android:paddingHorizontal="@dimen/dp_10" - android:text="转单给" + android:text="工单转至" android:textColor="@color/mainThemeColor" android:textSize="@dimen/titleFontSize" /> diff --git a/app/src/main/res/layout/item_tag_flowlayout.xml b/app/src/main/res/layout/item_tag_flowlayout.xml index 1e1e7c7..8826f86 100644 --- a/app/src/main/res/layout/item_tag_flowlayout.xml +++ b/app/src/main/res/layout/item_tag_flowlayout.xml @@ -2,9 +2,11 @@ \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml index 60d089f..a0718bf 100644 --- a/app/src/main/res/menu/bottom_nav_menu.xml +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -19,11 +19,13 @@ app:showAsAction="always" tools:ignore="AlwaysShowAction" /> + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 11203a6..ac97c98 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,13 +1,13 @@ - #034099 + #1D55C6 #333333 #626262 #F7F7F7 #CCCCCC - #13AD00 - #FF6F70 - #FFCA18 + #00A000 + #FF0000 + #FF9100 #54FFFFFF #54000000 diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt index 5a74934..a0ffc8f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt @@ -20,7 +20,7 @@ class NineGridImageAdapter(private val context: Context) : RecyclerView.Adapter() { - private val countLimit = 9 + private val countLimit = 3 private var imageData: ArrayList = ArrayList() diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index d05cf34..fd4e603 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,9 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf( - R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher - ) - val HOME_ITEMS = arrayOf("闸井管理", "告警工单", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 5365ffb..be269f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -201,10 +201,12 @@ /** * 告警内容列表 + * @param alarmType 告警类型 * */ @GET("/alarm/contentType") suspend fun obtainAlarmContentType( - @Header("token") token: String + @Header("token") token: String, + @Query("alarmType") alarmType: String ): AlarmContentTypeModel /** diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5a6f143..c6cf6b9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -152,8 +152,8 @@ /** * 告警内容列表 */ - suspend fun obtainAlarmContentType(): AlarmContentTypeModel { - return api.obtainAlarmContentType(AuthenticationHelper.token!!) + suspend fun obtainAlarmContentType(alarmType: String): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!, alarmType) } /** diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index dc888cb..1a3e670 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -66,6 +69,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -176,6 +201,10 @@ "请输入现场情况".show(this) return@setOnClickListener } + if (state.length > 100) { + "请输入少于100个字".show(this) + return@setOnClickListener + } if (imagePaths.size == 0) { "请上传现场图片".show(this) return@setOnClickListener @@ -251,7 +280,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -261,7 +290,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -337,7 +366,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index f24cf85..a7fa455 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -1,8 +1,11 @@ package com.casic.app.smartwell.view +import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager @@ -36,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_order_inhandle_detail.completedDateView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.devCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.dispatchDateView +import kotlinx.android.synthetic.main.activity_order_inhandle_detail.inputLengthView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.orderCodeView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.sceneEditView import kotlinx.android.synthetic.main.activity_order_inhandle_detail.transferOrderButton @@ -77,6 +81,28 @@ } override fun initEvent() { + sceneEditView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + @SuppressLint("SetTextI18n") + override fun afterTextChanged(s: Editable?) { + val text = s.toString().trim() + inputLengthView.text = "${text.length}/100" + if (text.length > 100) { + inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + "请输入少于100个字".show(context) + } else { + inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + } + } + }) + workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -157,7 +183,7 @@ confirmPersonView.text = orderDetail.confirmJobPerson - //维护情况 + //维护情况 TODO 输入内容长度校验好像没用? sceneEditView.setText(orderDetail.handleMessage) completedDateView.text = orderDetail.handleJobTime @@ -246,7 +272,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 10) { + if (sumItemCount <= 4) { //let函数处理需要针对一个可null的对象统一做判空处理。 it.data.let { url -> if (url != "") { @@ -256,7 +282,7 @@ } imageAdapter.setupImage(images = realPaths) } else { - "最多只能上传9张图片".show(this) + "最多只能上传3张图片".show(this) } } }) @@ -307,7 +333,7 @@ .isCompress(true) .compressSavePath(FileUtils.imageCompressPath) .imageEngine(GlideLoadEngine.createGlideEngine()) - .maxSelectNum(9) + .maxSelectNum(3) .forResult(PictureConfig.CHOOSE_REQUEST) } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 7ef7a03..02d7ff5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -10,7 +10,6 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.view.fragment.HomePageFragment import com.casic.app.smartwell.view.fragment.MinePageFragment -import com.casic.app.smartwell.view.fragment.NoticePageFragment import com.casic.app.smartwell.view.fragment.WorkOrderListFragment import kotlinx.android.synthetic.main.activity_main.* @@ -23,7 +22,6 @@ init { fragmentList.add(HomePageFragment()) fragmentList.add(WorkOrderListFragment()) - fragmentList.add(NoticePageFragment()) fragmentList.add(MinePageFragment()) } @@ -47,11 +45,8 @@ R.id.nav_order -> { mainViewPager.currentItem = 1 } - R.id.nav_notice -> { - mainViewPager.currentItem = 2 - } R.id.nav_mine -> { - mainViewPager.currentItem = 3 + mainViewPager.currentItem = 2 } } false diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index df29d3d..af88541 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,6 +1,6 @@ package com.casic.app.smartwell.view -import android.util.Log +import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView @@ -8,18 +8,17 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.timestampToDate import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.vm.AlarmContentTypeViewModel import com.casic.app.smartwell.vm.OrderStatusViewModel -import com.google.gson.Gson import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter -import com.zhy.view.flowlayout.TagFlowLayout import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* @@ -32,6 +31,7 @@ private lateinit var inflater: LayoutInflater private var alarmTypeModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() + private val context: Context = this@SearchWorkOrderActivity override fun initLayoutView(): Int = R.layout.activity_order_search @@ -51,7 +51,7 @@ } override fun initEvent() { - contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.obtainAlarmContentType(alarmType = "1") contentTypeViewModel.listModel.observe(this, { if (it.code == 200) { it.data!!.list?.forEachIndexed { index, dataBean -> @@ -67,7 +67,27 @@ } alarmTypeModels.add(bean) } - Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + + alarmContentLayout.adapter = + object : TagAdapter(alarmTypeModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = alarmTypeModels[position].name + return tagView + } + } + + alarmContentLayout.setOnTagClickListener { _, position, _ -> + //TODO + alarmTypeModels[position].name!!.show(context) + true + } } }) @@ -95,23 +115,18 @@ ): View { val tagView = inflater.inflate( R.layout.item_tag_flowlayout, - orderStatusLayout, - false + orderStatusLayout, false ) as TextView tagView.text = orderStatusModels[position].name return tagView } } - orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener { - override fun onTagClick( - view: View?, - position: Int, - parent: FlowLayout? - ): Boolean { - return true - } - }) + orderStatusLayout.setOnTagClickListener { _, position, _ -> + //TODO + orderStatusModels[position].name!!.show(context) + true + } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 92fd8ab..1b4126e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -24,15 +24,14 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) -// 1 -> startActivity(Intent(context, SearchRecordActivity::class.java)) - 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt index 98d5d42..3810257 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.vm -import android.util.Log import androidx.lifecycle.MutableLiveData import com.casic.app.smartwell.base.BaseViewModel import com.casic.app.smartwell.extensions.launch @@ -9,12 +8,9 @@ class AlarmContentTypeViewModel : BaseViewModel() { - private val kTag = "AlarmContentType" val listModel = MutableLiveData() - fun obtainAlarmContentType() = launch({ - listModel.value = RetrofitServiceManager.obtainAlarmContentType() - }, { - Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + fun obtainAlarmContentType(alarmType: String) = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType(alarmType) }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt index 53090e7..49a8fde 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/UserDetailViewModel.kt @@ -19,16 +19,16 @@ fun obtainUserDetail() = launch({ val detailJson = RetrofitServiceManager.obtainUserDetail() - val userDetailModel = gson.fromJson( + val data = gson.fromJson( detailJson, object : TypeToken() {}.type - ) - if (userDetailModel == null) { + ).data + if (data == null) { //如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录 - SaveKeyValues.clearAll() + SaveKeyValues.removeKey(Constant.USER_DETAIL_MODEL) flag.value = false } else { - SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(userDetailModel.data)) + SaveKeyValues.putValue(Constant.USER_DETAIL_MODEL, gson.toJson(data)) flag.value = true } }) diff --git a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml index 251b69c..122b9cd 100644 --- a/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml +++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml @@ -2,13 +2,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_text.xml b/app/src/main/res/drawable/selector_text.xml new file mode 100644 index 0000000..d8c9398 --- /dev/null +++ b/app/src/main/res/drawable/selector_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tag_normal.xml b/app/src/main/res/drawable/tag_normal.xml index 39b14cc..bb88697 100644 --- a/app/src/main/res/drawable/tag_normal.xml +++ b/app/src/main/res/drawable/tag_normal.xml @@ -1,7 +1,9 @@ - - + + + + - + + + + + + - + + + + + + - + android:background="@drawable/bg_layout" + android:orientation="vertical" + android:padding="@dimen/dp_10"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_20" + android:orientation="horizontal" + android:padding="@dimen/dp_20"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:qmui_backgroundColor="@color/white" + app:qmui_borderColor="@color/hintTextColor" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_single_choice.xml b/app/src/main/res/layout/dialog_single_choice.xml index 004d6ed..d9819c8 100644 --- a/app/src/main/res/layout/dialog_single_choice.xml +++ b/app/src/main/res/layout/dialog_single_choice.xml @@ -12,7 +12,7 @@ android:layout_height="46dp" android:gravity="center_vertical" android:paddingHorizontal="@dimen/dp_10" - android:text="转单给" + android:text="工单转至" android:textColor="@color/mainThemeColor" android:textSize="@dimen/titleFontSize" /> diff --git a/app/src/main/res/layout/item_tag_flowlayout.xml b/app/src/main/res/layout/item_tag_flowlayout.xml index 1e1e7c7..8826f86 100644 --- a/app/src/main/res/layout/item_tag_flowlayout.xml +++ b/app/src/main/res/layout/item_tag_flowlayout.xml @@ -2,9 +2,11 @@ \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml index 60d089f..a0718bf 100644 --- a/app/src/main/res/menu/bottom_nav_menu.xml +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -19,11 +19,13 @@ app:showAsAction="always" tools:ignore="AlwaysShowAction" /> + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 11203a6..ac97c98 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,13 +1,13 @@ - #034099 + #1D55C6 #333333 #626262 #F7F7F7 #CCCCCC - #13AD00 - #FF6F70 - #FFCA18 + #00A000 + #FF0000 + #FF9100 #54FFFFFF #54000000 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index a9eb339..00f7dfa 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -13,7 +13,6 @@ 30dp 50dp 100dp - 150dp 200dp