diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/tag_checked.xml b/app/src/main/res/drawable/tag_checked.xml
new file mode 100644
index 0000000..616dcb1
--- /dev/null
+++ b/app/src/main/res/drawable/tag_checked.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/tag_checked.xml b/app/src/main/res/drawable/tag_checked.xml
new file mode 100644
index 0000000..616dcb1
--- /dev/null
+++ b/app/src/main/res/drawable/tag_checked.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..39b14cc
--- /dev/null
+++ b/app/src/main/res/drawable/tag_normal.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/tag_checked.xml b/app/src/main/res/drawable/tag_checked.xml
new file mode 100644
index 0000000..616dcb1
--- /dev/null
+++ b/app/src/main/res/drawable/tag_checked.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..39b14cc
--- /dev/null
+++ b/app/src/main/res/drawable/tag_normal.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index 9b07e65..50ea9d7 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -155,7 +155,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/tag_checked.xml b/app/src/main/res/drawable/tag_checked.xml
new file mode 100644
index 0000000..616dcb1
--- /dev/null
+++ b/app/src/main/res/drawable/tag_checked.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..39b14cc
--- /dev/null
+++ b/app/src/main/res/drawable/tag_normal.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index 9b07e65..50ea9d7 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -155,7 +155,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/src/main/res/layout/activity_order_determine_detail.xml b/app/src/main/res/layout/activity_order_determine_detail.xml
new file mode 100644
index 0000000..b38af39
--- /dev/null
+++ b/app/src/main/res/layout/activity_order_determine_detail.xml
@@ -0,0 +1,346 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/tag_checked.xml b/app/src/main/res/drawable/tag_checked.xml
new file mode 100644
index 0000000..616dcb1
--- /dev/null
+++ b/app/src/main/res/drawable/tag_checked.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..39b14cc
--- /dev/null
+++ b/app/src/main/res/drawable/tag_normal.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index 9b07e65..50ea9d7 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -155,7 +155,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/src/main/res/layout/activity_order_determine_detail.xml b/app/src/main/res/layout/activity_order_determine_detail.xml
new file mode 100644
index 0000000..b38af39
--- /dev/null
+++ b/app/src/main/res/layout/activity_order_determine_detail.xml
@@ -0,0 +1,346 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_well_detail.xml b/app/src/main/res/layout/activity_well_detail.xml
index 2090bfe..fab47e4 100644
--- a/app/src/main/res/layout/activity_well_detail.xml
+++ b/app/src/main/res/layout/activity_well_detail.xml
@@ -120,7 +120,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/tag_checked.xml b/app/src/main/res/drawable/tag_checked.xml
new file mode 100644
index 0000000..616dcb1
--- /dev/null
+++ b/app/src/main/res/drawable/tag_checked.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..39b14cc
--- /dev/null
+++ b/app/src/main/res/drawable/tag_normal.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index 9b07e65..50ea9d7 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -155,7 +155,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/src/main/res/layout/activity_order_determine_detail.xml b/app/src/main/res/layout/activity_order_determine_detail.xml
new file mode 100644
index 0000000..b38af39
--- /dev/null
+++ b/app/src/main/res/layout/activity_order_determine_detail.xml
@@ -0,0 +1,346 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_well_detail.xml b/app/src/main/res/layout/activity_well_detail.xml
index 2090bfe..fab47e4 100644
--- a/app/src/main/res/layout/activity_well_detail.xml
+++ b/app/src/main/res/layout/activity_well_detail.xml
@@ -120,7 +120,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/src/main/res/layout/fragment_order_undetermined.xml b/app/src/main/res/layout/fragment_order_undetermined.xml
index 77d9ef6..e473241 100644
--- a/app/src/main/res/layout/fragment_order_undetermined.xml
+++ b/app/src/main/res/layout/fragment_order_undetermined.xml
@@ -1,6 +1,39 @@
-
+ android:layout_height="match_parent"
+ android:background="@color/mainBackColor"
+ android:orientation="vertical">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/tag_checked.xml b/app/src/main/res/drawable/tag_checked.xml
new file mode 100644
index 0000000..616dcb1
--- /dev/null
+++ b/app/src/main/res/drawable/tag_checked.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..39b14cc
--- /dev/null
+++ b/app/src/main/res/drawable/tag_normal.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index 9b07e65..50ea9d7 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -155,7 +155,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/src/main/res/layout/activity_order_determine_detail.xml b/app/src/main/res/layout/activity_order_determine_detail.xml
new file mode 100644
index 0000000..b38af39
--- /dev/null
+++ b/app/src/main/res/layout/activity_order_determine_detail.xml
@@ -0,0 +1,346 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_well_detail.xml b/app/src/main/res/layout/activity_well_detail.xml
index 2090bfe..fab47e4 100644
--- a/app/src/main/res/layout/activity_well_detail.xml
+++ b/app/src/main/res/layout/activity_well_detail.xml
@@ -120,7 +120,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/src/main/res/layout/fragment_order_undetermined.xml b/app/src/main/res/layout/fragment_order_undetermined.xml
index 77d9ef6..e473241 100644
--- a/app/src/main/res/layout/fragment_order_undetermined.xml
+++ b/app/src/main/res/layout/fragment_order_undetermined.xml
@@ -1,6 +1,39 @@
-
+ android:layout_height="match_parent"
+ android:background="@color/mainBackColor"
+ android:orientation="vertical">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_order_todo_recycleview.xml b/app/src/main/res/layout/item_order_todo_recycleview.xml
index e9300d3..81cb9a8 100644
--- a/app/src/main/res/layout/item_order_todo_recycleview.xml
+++ b/app/src/main/res/layout/item_order_todo_recycleview.xml
@@ -48,6 +48,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tempLayout"
+ android:paddingVertical="@dimen/dp_5"
android:text="N57S862"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/textFontSize" />
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/tag_checked.xml b/app/src/main/res/drawable/tag_checked.xml
new file mode 100644
index 0000000..616dcb1
--- /dev/null
+++ b/app/src/main/res/drawable/tag_checked.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..39b14cc
--- /dev/null
+++ b/app/src/main/res/drawable/tag_normal.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index 9b07e65..50ea9d7 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -155,7 +155,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/src/main/res/layout/activity_order_determine_detail.xml b/app/src/main/res/layout/activity_order_determine_detail.xml
new file mode 100644
index 0000000..b38af39
--- /dev/null
+++ b/app/src/main/res/layout/activity_order_determine_detail.xml
@@ -0,0 +1,346 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_well_detail.xml b/app/src/main/res/layout/activity_well_detail.xml
index 2090bfe..fab47e4 100644
--- a/app/src/main/res/layout/activity_well_detail.xml
+++ b/app/src/main/res/layout/activity_well_detail.xml
@@ -120,7 +120,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/src/main/res/layout/fragment_order_undetermined.xml b/app/src/main/res/layout/fragment_order_undetermined.xml
index 77d9ef6..e473241 100644
--- a/app/src/main/res/layout/fragment_order_undetermined.xml
+++ b/app/src/main/res/layout/fragment_order_undetermined.xml
@@ -1,6 +1,39 @@
-
+ android:layout_height="match_parent"
+ android:background="@color/mainBackColor"
+ android:orientation="vertical">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_order_todo_recycleview.xml b/app/src/main/res/layout/item_order_todo_recycleview.xml
index e9300d3..81cb9a8 100644
--- a/app/src/main/res/layout/item_order_todo_recycleview.xml
+++ b/app/src/main/res/layout/item_order_todo_recycleview.xml
@@ -48,6 +48,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tempLayout"
+ android:paddingVertical="@dimen/dp_5"
android:text="N57S862"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/textFontSize" />
diff --git a/app/src/main/res/layout/item_order_undetermined_recycleview.xml b/app/src/main/res/layout/item_order_undetermined_recycleview.xml
new file mode 100644
index 0000000..3fa246f
--- /dev/null
+++ b/app/src/main/res/layout/item_order_undetermined_recycleview.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 42722ca..1e32515 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,5 +81,4 @@
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
//标签流式布局
implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2'
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e81feb6..5060744 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,6 +45,7 @@
+
diff --git a/app/src/main/assets/svg/down.svg b/app/src/main/assets/svg/down.svg
new file mode 100644
index 0000000..8a753ec
--- /dev/null
+++ b/app/src/main/assets/svg/down.svg
@@ -0,0 +1,16 @@
+
+
\ 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
new file mode 100644
index 0000000..5a74934
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/NineGridImageAdapter.kt
@@ -0,0 +1,96 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.R
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 可删减九宫格
+ * */
+@SuppressLint("NotifyDataSetChanged")
+class NineGridImageAdapter(private val context: Context) :
+ RecyclerView.Adapter() {
+
+ private val countLimit = 9
+ private var imageData: ArrayList = ArrayList()
+
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int =
+ QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
new file mode 100644
index 0000000..1549504
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/adapter/UndeterminedAdapterAdapter.kt
@@ -0,0 +1,98 @@
+package com.casic.app.smartwell.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.animation.LinearInterpolator
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.model.UserDetailModel
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.SaveKeyValues
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class UndeterminedAdapterAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private lateinit var userDataModel: UserDetailModel.DataBean
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val gson = Gson()
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup,
+ viewType: Int
+ ): UndeterminedAdapterAdapter.ItemViewHolder {
+ val view: View =
+ layoutInflater.inflate(R.layout.item_order_undetermined_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(
+ holder: UndeterminedAdapterAdapter.ItemViewHolder,
+ position: Int
+ ) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.alarmTypeView.text = rowsBean.alarmContentName
+ holder.createTimeView.text = rowsBean.createTime
+ holder.wellCodeView.text = rowsBean.wellCode
+ holder.wellLocationView.text = rowsBean.position
+
+ val userDetailJson = SaveKeyValues.getValue(Constant.USER_DETAIL_MODEL, "") as String
+ if (userDetailJson != "") {
+ userDataModel = gson.fromJson(
+ userDetailJson,
+ object : TypeToken() {}.type
+ )
+ holder.currentStateView.text = "${userDataModel.name}正在现场确认中..."
+ }
+
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClicked(position)
+ }
+ holder.arrowImageView.setOnClickListener {
+ val rotateAnimation = holder.arrowImageView.animate()
+ rotateAnimation.duration = 300
+ rotateAnimation.interpolator = LinearInterpolator()
+ if (holder.arrowImageView.rotation == 0f) {
+ rotateAnimation.rotation(180f)
+ } else {
+ rotateAnimation.rotation(0f)
+ }
+ //展开View
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var alarmTypeView: TextView = view.findViewById(R.id.alarmTypeView)
+ var createTimeView: TextView = view.findViewById(R.id.createTimeView)
+ var wellCodeView: TextView = view.findViewById(R.id.wellCodeView)
+ var wellLocationView: TextView = view.findViewById(R.id.wellLocationView)
+ var currentStateView: TextView = view.findViewById(R.id.currentStateView)
+ var arrowImageView: ImageView = view.findViewById(R.id.arrowImageView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
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 358ff17..6ed5ca0 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
@@ -26,7 +26,8 @@
const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 20
- const val ORDER_TRANSFER_OK = 21
+ const val ORDER_TODO_OK = 21
+ const val ORDER_DETERMINED_OK = 22//待确认和待处理完成都需要刷新此列表
const val ACCOUNT = "account"
const val PASSWORD = "password"
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 32a6764..16300ba 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
@@ -40,6 +40,9 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
userDetailViewModel.obtainUserDetail()
userDetailViewModel.userDetailModel.observe(this, {
if (it.code == 200) {
@@ -48,9 +51,7 @@
it.message!!.show(this)
}
})
- }
- override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
new file mode 100644
index 0000000..25f1340
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/view/OrderDetermineDetailActivity.kt
@@ -0,0 +1,128 @@
+package com.casic.app.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.NineGridImageAdapter
+import com.casic.app.smartwell.base.BaseActivity
+import com.casic.app.smartwell.extensions.covertColor
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.extensions.toChinese
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.utils.DialogHelper
+import com.casic.app.smartwell.utils.LoadState
+import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_determine_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderDetermineDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
+ private lateinit var imageAdapter: NineGridImageAdapter
+ private lateinit var jobId: String
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_order_determine_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //初始化图片九宫格
+ imageAdapter = NineGridImageAdapter(this)
+ addImageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ addImageRecyclerView.adapter = imageAdapter
+
+ workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
+ workOrderDetailViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level == "") {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.covertColor(this))
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.covertColor(this))
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ tipsImageView.visibility = View.VISIBLE
+ tipsImageView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ tipsImageView.visibility = View.GONE
+ }
+
+ acceptDateView.text = orderDetail.getJobTime
+ dispatchDateView.text = orderDetail.createTime
+ completedDateView.text = orderDetail.handleJobTime
+
+ //转单
+
+
+ //提交
+ }
+ })
+
+ //数据加载状态处理
+ workOrderDetailViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+// selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(this@OrderDetermineDetailActivity)
+ } else {
+ this@OrderDetermineDetailActivity.navigatePageTo(
+ BigImageActivity::class.java,
+ position,
+ realPaths
+ )
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+}
\ No newline at end of file
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 6016a40..df29d3d 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
@@ -19,6 +19,7 @@
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.*
@@ -44,6 +45,12 @@
inflater = LayoutInflater.from(this)
//告警内容
contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java)
+
+ //工单状态
+ orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
+ }
+
+ override fun initEvent() {
contentTypeViewModel.obtainAlarmContentType()
contentTypeViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -64,8 +71,6 @@
}
})
- //工单状态
- orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java)
orderStatusViewModel.obtainOrderStatus()
orderStatusViewModel.listModel.observe(this, {
if (it.code == 200) {
@@ -97,11 +102,19 @@
return tagView
}
}
+ orderStatusLayout.setOnTagClickListener(object : TagFlowLayout.OnTagClickListener {
+ override fun onTagClick(
+ view: View?,
+ position: Int,
+ parent: FlowLayout?
+ ): Boolean {
+
+ return true
+ }
+ })
}
})
- }
- override fun initEvent() {
selectStartTimeView.setOnClickListener {
TimePickerDialog.Builder()
.setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor))
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
index 0bcb4aa..018e963 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt
@@ -5,7 +5,6 @@
import androidx.recyclerview.widget.GridLayoutManager
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Poi
-import com.amap.api.navi.*
import com.casic.app.smartwell.R
import com.casic.app.smartwell.adapter.ImageRecyclerViewAdapter
import com.casic.app.smartwell.base.BaseActivity
@@ -25,6 +24,7 @@
class WellDetailActivity : BaseActivity() {
private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -35,8 +35,16 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+
+ //监控内容
+ monitorLayout.setOnClickListener {
+ this.navigatePageTo(WellMonitorActivity::class.java, wellId)
+ }
+ }
+
+ override fun initEvent() {
wellDetailViewModel.obtainWellDetail(id = wellId)
wellDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -116,14 +124,6 @@
}
}
})
-
- //监控内容
- monitorLayout.setOnClickListener {
- this.navigatePageTo(WellMonitorActivity::class.java, wellId)
- }
- }
-
- override fun initEvent() {
wellDetailViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
index 8e804f8..e907ca4 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt
@@ -55,6 +55,11 @@
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -73,10 +78,8 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
+
obtainWellList(keywords, wellType, pageIndex)
- //数据监听
wellListViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
@@ -102,9 +105,7 @@
weakReferenceHandler.sendEmptyMessage(2022032501)
}
})
- }
- override fun initEvent() {
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
index 34f0f5d..1259b72 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt
@@ -16,6 +16,7 @@
class WellMonitorActivity : BaseActivity() {
private lateinit var wellMonitorViewModel: WellMonitorViewModel
+ private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_monitor
@@ -26,8 +27,11 @@
}
override fun initData() {
- val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellMonitorViewModel = ViewModelProvider(this).get(WellMonitorViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellMonitorViewModel.obtainMonitorResult(id = wellId)
wellMonitorViewModel.monitorModel.observe(this, {
if (it.code == 200) {
@@ -41,9 +45,6 @@
}
}
})
- }
-
- override fun initEvent() {
wellMonitorViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
index bc64dca..efd5d55 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt
@@ -59,7 +59,13 @@
override fun initData() {
easyPopupWindow = EasyPopupWindow(this)
easyPopupWindow.setBackgroundDrawable(null)
+ weakReferenceHandler = WeakReferenceHandler(this)
wellTypeViewModel = ViewModelProvider(this).get(WellTypeViewModel::class.java)
+ wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
+ }
+
+ override fun initEvent() {
wellTypeViewModel.obtainWellType()
wellTypeViewModel.wellTypeModel.observe(this, {
if (it.code == 200) {
@@ -78,8 +84,6 @@
easyPopupWindow.setupPopupData(items)
}
})
- wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java)
- weakReferenceHandler = WeakReferenceHandler(this)
obtainWellList(keywords, wellType, pageIndex)
//数据监听
wellListViewModel.listModel.observe(this, {
@@ -107,10 +111,37 @@
weakReferenceHandler.sendEmptyMessage(2022032801)
}
})
- operationViewModel = ViewModelProvider(this).get(WellOperationViewModel::class.java)
- }
- override fun initEvent() {
+ //撤防布防状态监听
+ operationViewModel.operationResultModel.observe(this, {
+ if (it.code == 200) {
+ val rowsBean = dataBeans[clickedPosition]
+ if (rowsBean.bfztName == "布防") {
+ rowsBean.bfzt = "1"
+ rowsBean.bfztName = "撤防"
+ } else {
+ rowsBean.bfzt = "0"
+ rowsBean.bfztName = "布防"
+ }
+ }
+ })
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作成功".show(this)
+ wellOperationAdapter.notifyItemChanged(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ "操作失败".show(this)
+ }
+ }
+ })
+
wellTypeLayout.setOnClickListener {
//旋转arrowImageView
val rotateAnimation = arrowImageView.animate()
@@ -146,36 +177,6 @@
pageIndex++
obtainWellList(keywords, wellType, pageIndex)
}
-
- //撤防布防状态监听
- operationViewModel.operationResultModel.observe(this, {
- if (it.code == 200) {
- val rowsBean = dataBeans[clickedPosition]
- if (rowsBean.bfztName == "布防") {
- rowsBean.bfzt = "1"
- rowsBean.bfztName = "撤防"
- } else {
- rowsBean.bfzt = "0"
- rowsBean.bfztName = "布防"
- }
- }
- })
- operationViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- "操作成功".show(this)
- wellOperationAdapter.notifyItemChanged(clickedPosition)
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- "操作失败".show(this)
- }
- }
- })
}
private fun obtainWellList(
diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
index 9667273..b5ade26 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt
@@ -14,6 +14,7 @@
import com.casic.app.smartwell.utils.DialogHelper
import com.casic.app.smartwell.utils.LoadState
import com.casic.app.smartwell.view.fragment.TodoOrderFragment
+import com.casic.app.smartwell.view.fragment.UndeterminedFragment
import com.casic.app.smartwell.vm.AcceptOrderViewModel
import com.casic.app.smartwell.vm.WellDetailViewModel
import com.casic.app.smartwell.vm.WorkOrderDetailViewModel
@@ -27,6 +28,7 @@
private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel
private lateinit var wellDetailViewModel: WellDetailViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var jobId: String
override fun initLayoutView(): Int = R.layout.activity_order_detail
@@ -37,9 +39,12 @@
}
override fun initData() {
- val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
workOrderDetailViewModel = ViewModelProvider(this).get(WorkOrderDetailViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId)
workOrderDetailViewModel.detailModel.observe(this, {
if (it.code == 200) {
@@ -132,9 +137,6 @@
}
}
})
- }
-
- override fun initEvent() {
//数据加载状态处理
workOrderDetailViewModel.loadState.observe(this, {
when (it) {
@@ -156,9 +158,9 @@
is LoadState.Success -> {
DialogHelper.dismissLoadingDialog()
"接单成功".show(this)
- //通知列表刷行数据
- TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ //通知列表刷新数据
+ TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
this.finish()
}
else -> {
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 917e20c..92fd8ab 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
@@ -41,19 +41,11 @@
}
override fun initEvent() {
-
- }
-
- override fun onResume() {
- super.onResume()
- //每次页面切换都需要重新刷新不同状态的窨井数量
- wellCountViewModel.countWellByState()
wellCountViewModel.resultModel.observe(this, {
unDeployedWellView.text = it["bfWell"]
deployedWellView.text = it["cfWell"]
allWellDataView.text = it["total"]
})
- workOrderViewModel.countWorkOrderByState()
workOrderViewModel.resultModel.observe(this, {
if (it["beforeGet"]!!.length > 4 || it["beforeConfirm"]!!.length > 4 ||
it["inHandle"]!!.length > 4 || it["over"]!!.length > 4
@@ -69,4 +61,11 @@
completedDataView.text = it["over"]
})
}
+
+ override fun onResume() {
+ super.onResume()
+ //每次页面切换都需要重新刷新不同状态的窨井数量
+ wellCountViewModel.countWellByState()
+ workOrderViewModel.countWorkOrderByState()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
index 0cf61eb..0869367 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt
@@ -4,7 +4,6 @@
import android.os.Handler
import android.os.Looper
import android.os.Message
-import android.util.Log
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
@@ -25,16 +24,15 @@
class TodoOrderFragment : BaseFragment() {
- private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private lateinit var workOrderListViewModel: WorkOrderListViewModel
private lateinit var acceptOrderViewModel: AcceptOrderViewModel
+ private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter
private var dataBeans: MutableList = ArrayList()
private var pageIndex = 1
private var isRefresh = false
private var isLoadMore = false
companion object {
- private const val kTag = "TodoOrderFragment"
private var weakReferenceHandler: WeakReferenceHandler? = null
fun sendEmptyMessage(what: Int) {
@@ -51,6 +49,9 @@
weakReferenceHandler = WeakReferenceHandler(this)
workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java)
+ }
+
+ override fun initEvent() {
obtainWorkOrderList(pageIndex)
workOrderListViewModel.resultModel.observe(this, {
if (it.code == 200) {
@@ -77,20 +78,6 @@
weakReferenceHandler!!.sendEmptyMessage(2022032901)
}
})
- }
-
- override fun initEvent() {
- todoOrderLayout.setOnRefreshListener {
- isRefresh = true
- //刷新之后页码重置
- pageIndex = 1
- obtainWorkOrderList(pageIndex)
- }
- todoOrderLayout.setOnLoadMoreListener {
- isLoadMore = true
- pageIndex++
- obtainWorkOrderList(pageIndex)
- }
//接单状态处理
acceptOrderViewModel.loadState.observe(this, {
@@ -102,8 +89,8 @@
DialogHelper.dismissLoadingDialog()
"接单成功".show(requireContext())
//通知列表刷行数据
- weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TRANSFER_OK)
- //TODO 还需要通知待确认列表
+ weakReferenceHandler!!.sendEmptyMessage(Constant.ORDER_TODO_OK)
+ UndeterminedFragment.sendEmptyMessage(Constant.ORDER_DETERMINED_OK)
}
else -> {
DialogHelper.dismissLoadingDialog()
@@ -111,6 +98,18 @@
}
}
})
+
+ todoOrderLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ todoOrderLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
private fun obtainWorkOrderList(index: Int) {
@@ -126,8 +125,7 @@
super.handleMessage(msg)
val fragment = reference.get()!!
when (msg.what) {
- Constant.ORDER_TRANSFER_OK -> {
- Log.d(kTag, "转单成功,更新列表")
+ Constant.ORDER_TODO_OK -> {
fragment.isRefresh = true
fragment.pageIndex = 1
fragment.obtainWorkOrderList(fragment.pageIndex)
diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
index b1284a1..28252c0 100644
--- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
+++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedFragment.kt
@@ -1,17 +1,144 @@
package com.casic.app.smartwell.view.fragment
+import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.app.smartwell.R
+import com.casic.app.smartwell.adapter.UndeterminedAdapterAdapter
+import com.casic.app.smartwell.extensions.navigatePageTo
+import com.casic.app.smartwell.extensions.show
+import com.casic.app.smartwell.model.WorkOrderListModel
+import com.casic.app.smartwell.utils.Constant
+import com.casic.app.smartwell.view.OrderDetermineDetailActivity
+import com.casic.app.smartwell.vm.WorkOrderListViewModel
import com.pengxh.app.multilib.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_order_undetermined.*
+import java.lang.ref.WeakReference
class UndeterminedFragment : BaseFragment() {
+
+ private lateinit var workOrderListViewModel: WorkOrderListViewModel
+ private lateinit var undeterminedAdapter: UndeterminedAdapterAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ companion object {
+ private const val kTag = "UndeterminedFragment"
+ private var weakReferenceHandler: WeakReferenceHandler? = null
+
+ fun sendEmptyMessage(what: Int) {
+ if (weakReferenceHandler == null) {
+ return
+ }
+ weakReferenceHandler!!.sendEmptyMessage(what)
+ }
+ }
+
override fun initLayoutView(): Int = R.layout.fragment_order_undetermined
override fun initData() {
-
+ weakReferenceHandler = WeakReferenceHandler(this)
+ workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java)
}
override fun initEvent() {
+ obtainWorkOrderList(pageIndex)
+ workOrderListViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows!!
+ undeterminedLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows?.size == 0) {
+ "到底了,别拉了".show(requireContext())
+ }
+ dataBeans.addAll(dataRows!!)
+ undeterminedLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler!!.sendEmptyMessage(2022033001)
+ }
+ })
+ undeterminedLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ obtainWorkOrderList(pageIndex)
+ }
+ undeterminedLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ obtainWorkOrderList(pageIndex)
+ }
}
+ private fun obtainWorkOrderList(index: Int) {
+ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index)
+ }
+
+ private class WeakReferenceHandler(fragment: UndeterminedFragment) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(fragment)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val fragment = reference.get()!!
+ when (msg.what) {
+ Constant.ORDER_DETERMINED_OK -> {
+ fragment.isRefresh = true
+ fragment.pageIndex = 1
+ fragment.obtainWorkOrderList(fragment.pageIndex)
+ }
+ 2022033001 -> {
+ if (fragment.isRefresh || fragment.isLoadMore) {
+ fragment.undeterminedAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (fragment.dataBeans.size == 0) {
+ fragment.emptyView!!.show("抱歉,无法查询到相关记录", null)
+ } else {
+ fragment.emptyView!!.hide()
+ fragment.undeterminedAdapter = UndeterminedAdapterAdapter(
+ fragment.requireContext(),
+ fragment.dataBeans
+ )
+ fragment.undeterminedView!!.layoutManager =
+ LinearLayoutManager(fragment.requireContext())
+ fragment.undeterminedView!!.adapter = fragment.undeterminedAdapter
+ fragment.undeterminedAdapter.setOnItemClickListener(object :
+ UndeterminedAdapterAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val jobId = fragment.dataBeans[position].jobId.toString()
+ if (jobId == "") {
+ "工单编号异常,无法查看详情".show(fragment.requireContext())
+ return
+ }
+ fragment.requireContext()
+ .navigatePageTo(
+ OrderDetermineDetailActivity::class.java,
+ jobId
+ )
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
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
new file mode 100644
index 0000000..70ca160
--- /dev/null
+++ b/app/src/main/res/drawable/bg_layout_stroke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml
new file mode 100644
index 0000000..9d1e830
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_pic.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_down.xml b/app/src/main/res/drawable/ic_down.xml
new file mode 100644
index 0000000..4128342
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selector_tag.xml b/app/src/main/res/drawable/selector_tag.xml
new file mode 100644
index 0000000..c1fee7b
--- /dev/null
+++ b/app/src/main/res/drawable/selector_tag.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/tag_checked.xml b/app/src/main/res/drawable/tag_checked.xml
new file mode 100644
index 0000000..616dcb1
--- /dev/null
+++ b/app/src/main/res/drawable/tag_checked.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..39b14cc
--- /dev/null
+++ b/app/src/main/res/drawable/tag_normal.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index 9b07e65..50ea9d7 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -155,7 +155,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="@string/app_name"
+ android:text="详细地址"
android:textColor="@color/mainTextColor"
android:textSize="@dimen/titleFontSize" />
diff --git a/app/src/main/res/layout/activity_order_determine_detail.xml b/app/src/main/res/layout/activity_order_determine_detail.xml
new file mode 100644
index 0000000..b38af39
--- /dev/null
+++ b/app/src/main/res/layout/activity_order_determine_detail.xml
@@ -0,0 +1,346 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+