浏览代码

修复手动物资更换页数据显示异常

Frankensteinly 8 月之前
父节点
当前提交
dde7db3300

+ 3 - 0
app/src/main/java/com/grkj/iscs_mc/model/vo/replacement/ManualReplacementListRespVO.kt

@@ -67,6 +67,9 @@ data class ManualReplacementListRespVO(
         val status: String?, // 0:正常 1:损坏 2:过期 3:放错柜子
 
         /***************App自用数据***************/
+        var newName: String?,
+        var newRfid: String?,
+        var newDate: String?,
         /**
          * 选择的类型
          */

+ 37 - 3
app/src/main/java/com/grkj/iscs_mc/view/fragment/MaterialManualReplacementFragment.kt

@@ -55,7 +55,13 @@ class MaterialManualReplacementFragment :
                         .into(holder.getView(R.id.iv_old))
 
                     // 新
-                    holder.getView<SelectableInput>(R.id.ci_name_new).setText(vo.materialsName)
+                    val ciName = holder.getView<SelectableInput>(R.id.ci_name_new)
+                    ciName.setText(vo.newName)
+                    ciName.setOnTextChangeListener(object : SelectableInput.OnTextChangeListener {
+                        override fun onTextChange(str: String?) {
+                            vo.newName = str
+                        }
+                    })
 
                     // 类型
                     val ciType = holder.getView<SelectableInput>(R.id.ci_type_new)
@@ -89,11 +95,36 @@ class MaterialManualReplacementFragment :
                         }
                     })
 
-                    holder.getView<SelectableInput>(R.id.ci_rfid_new).setText(vo.materialsRfid)
-                    holder.getView<SelectableInput>(R.id.ci_date_new).setText(vo.expirationDate)
+                    val ciRfid = holder.getView<SelectableInput>(R.id.ci_rfid_new)
+                    ciRfid.setText(vo.newRfid)
+                    ciRfid.setOnTextChangeListener(object : SelectableInput.OnTextChangeListener {
+                        override fun onTextChange(str: String?) {
+                            vo.newRfid = str
+                        }
+                    })
+
+                    val ciDate = holder.getView<SelectableInput>(R.id.ci_date_new)
+                    ciDate.setText(vo.newDate)
+                    ciDate.setOnTextChangeListener(object : SelectableInput.OnTextChangeListener {
+                        override fun onTextChange(str: String?) {
+                            vo.newDate = str
+                        }
+                    })
+
                     Glide.with(this@MaterialManualReplacementFragment)
                         .load(mTypeList.find { it.materialsTypeId == vo.selectedTypeId }?.materialsTypePicture)
                         .into(holder.getView(R.id.iv_new))
+
+                    // 按钮
+                    holder.setOnClickListener(R.id.tv_reset) {
+                        vo.selectedTypeId = vo.materialsTypeId
+                        vo.selectedModelId = vo.propertiesValueId?.toLong()
+                        mBinding?.rvReplacement?.adapter?.notifyItemChanged(position)
+                    }
+
+                    holder.setOnClickListener(R.id.tv_confirm) {
+                        // TODO 确定更换
+                    }
                 }
             }
 
@@ -128,6 +159,9 @@ class MaterialManualReplacementFragment :
                     mDetailList.addAll(it)
                 }
                 mDetailList.forEach {
+                    it.newName = it.materialsName
+                    it.newRfid = it.materialsRfid
+                    it.newDate = it.expirationDate
                     it.selectedTypeId = it.materialsTypeId
                     it.selectedModelId = it.propertiesValueId?.toLong()
                 }

+ 28 - 1
app/src/main/java/com/grkj/iscs_mc/view/widget/SelectableInput.kt

@@ -1,6 +1,8 @@
 package com.grkj.iscs_mc.view.widget
 
 import android.content.Context
+import android.text.Editable
+import android.text.TextWatcher
 import android.util.AttributeSet
 import android.view.Gravity
 import android.view.LayoutInflater
@@ -33,6 +35,7 @@ class SelectableInput(private val ctx: Context, attrs: AttributeSet) : LinearLay
     private val mOptionList = mutableListOf<String>()
     private var isSkipListener: Boolean = true
     private var mSelectListener: OnSpinnerSelectListener? = null
+    private var mTextChangeListener: OnTextChangeListener? = null
     var mSelectIdx: Int? = null
 
     init {
@@ -92,8 +95,23 @@ class SelectableInput(private val ctx: Context, attrs: AttributeSet) : LinearLay
                     AppCompatResources.getDrawable(ctx, R.drawable.selectable_input_text_disabled_bg)
                 }
 
+                val textWatcher = object : TextWatcher {
+                    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
+
+                    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
+                        if (mBinding.et.hasFocus()) {
+                            mTextChangeListener?.onTextChange(p0.toString())
+                        }
+                    }
+
+                    override fun afterTextChanged(p0: Editable?) {}
+                }
+
                 mBinding.et.setOnFocusChangeListener { view, b ->
-                    if (!b) {
+                    if (b) {
+                        mBinding.et.addTextChangedListener(textWatcher)
+                    } else {
+                        mBinding.et.removeTextChangedListener(textWatcher)
                         val imm = ctx.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                         imm.hideSoftInputFromWindow(view.windowToken, 0)
                     }
@@ -117,6 +135,7 @@ class SelectableInput(private val ctx: Context, attrs: AttributeSet) : LinearLay
                         .setTwelveHour(false)
                         .setOnDateResultListener {
                             setText(SimpleDateFormat("yyyy-MM-dd").format(Date(it)))
+                            mTextChangeListener?.onTextChange(getText())
                         }
                         .build().show()
                 }
@@ -176,7 +195,15 @@ class SelectableInput(private val ctx: Context, attrs: AttributeSet) : LinearLay
         mSelectListener = onSpinnerSelectListener
     }
 
+    fun setOnTextChangeListener(onTextChangeListener: OnTextChangeListener) {
+        mTextChangeListener = onTextChangeListener
+    }
+
     interface OnSpinnerSelectListener {
         fun onSelect(str: String?, index: Int)
     }
+
+    interface OnTextChangeListener {
+        fun onTextChange(str: String?)
+    }
 }

+ 2 - 1
app/src/main/res/layout/fragment_material_instruction_detail.xml

@@ -27,5 +27,6 @@
         android:layout_height="match_parent"
         android:layout_above="@id/cb_back"
         android:layout_below="@id/tb"
-        android:layout_marginVertical="@dimen/common_spacing" />
+        android:layout_marginVertical="@dimen/common_spacing"
+        android:layerType="hardware" />
 </RelativeLayout>