左晓为主开发手持机充值管理机
zuojincheng
17 小时以前 899cb6ce779b24a659ec3515dd3fb1cd1afef7d2
generallibrary/src/main/java/com/dayu/general/activity/ManagerReadActivity.kt
@@ -2,6 +2,8 @@
import android.content.Intent
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import androidx.databinding.DataBindingUtil
import com.dayu.baselibrary.net.subscribers.SubscriberListener
@@ -13,6 +15,7 @@
import com.dayu.general.model.CardInfoModel
import com.dayu.general.net.ApiManager
import com.dayu.general.net.BaseResponse
import com.dayu.general.tool.CardCommon
import com.dayu.general.tool.NfcReadHelper
class ManagerReadActivity : BaseNfcActivity() {
@@ -37,15 +40,64 @@
    }
    private fun initView() {
        binding.titleBar.setCenterText("读卡")
        // 根据卡类型设置标题
        when (cardType) {
            CardCommon.REGION_CARD -> binding.titleBar.setCenterText("制作区域表号卡")
            CardCommon.CHECK_CARD -> binding.titleBar.setCenterText("制作检查卡")
            CardCommon.DEBUG_CARD -> binding.titleBar.setCenterText("制作调试卡")
            CardCommon.CLEAN_CARD_TYPE -> binding.titleBar.setCenterText("制作清零卡")
            else -> binding.titleBar.setCenterText("读卡")
        }
        binding.titleBar.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() }
        // 根据卡类型设置输入框可见性
        when (cardType) {
            CardCommon.REGION_CARD -> {
                // 区域表号卡:显示区域号输入框
                binding.regionNumberLayout.visibility = View.VISIBLE
                // 为区域号输入框添加输入验证
                binding.regionNumberEt.addTextChangedListener(object : TextWatcher {
                    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
                    override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
                    override fun afterTextChanged(s: Editable?) {
                        val text = s.toString()
                        if (text.length > 12) {
                            binding.regionNumberEt.setText(text.substring(0, 12))
                            binding.regionNumberEt.setSelection(12)
                        }
                    }
                })
            }
            CardCommon.CHECK_CARD,
            CardCommon.DEBUG_CARD,
            CardCommon.CLEAN_CARD_TYPE -> {
                // 检查卡、调试卡、清零卡:隐藏区域号输入框,只显示卡地址和备注
                binding.regionNumberLayout.visibility = View.GONE
            }
            else -> {
                // 其他卡类型:隐藏区域号输入框
                binding.regionNumberLayout.visibility = View.GONE
            }
        }
        binding.btnNext.setOnClickListener {
            if (viewModel.cardNumber.value.isNullOrEmpty()) {
                ToastUtil.show("请先读取卡号")
            } else if (cardType == CardCommon.REGION_CARD) {
                // 区域表号卡需要验证区域号
                val regionNumber = viewModel.regionNumber.value
                if (regionNumber.isNullOrEmpty()) {
                    ToastUtil.show("请输入区域号")
                } else if (regionNumber.length != 12) {
                    ToastUtil.show("区域号必须为12位数字")
                } else {
                    postCardData(cardType, viewModel.cardNumber.value!!, getRemark(), regionNumber)
                }
            } else {
                // 其他卡类型(包括调试卡、检查卡、清零卡)不需要区域号
                postCardData(cardType, viewModel.cardNumber.value!!, getRemark())
            }
        }
    }
@@ -71,7 +123,7 @@
            if (cardNumber.isNotEmpty() && !cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
                binding.btnNext.visibility = View.VISIBLE
                binding.dataLayout.visibility = View.VISIBLE
                binding.rechargeReadLL.visibility = View.GONE
                binding.scrollReadCard.visibility = View.GONE
                setCardNumber(cardNumber)
            } else if (cardNumber.contains(BaseCommon.CARD_TYPE_ERROR2)) {
                ToastUtil.show("当前卡密码错误,不是本公司卡")
@@ -91,9 +143,16 @@
/**
 * 提交数据
 * 提交数据 - 不带区域号的版本
 */
fun postCardData(cardType: String, cardAddr: String, remark: String) {
    postCardData(cardType, cardAddr, remark, null)
}
/**
 * 提交数据 - 带区域号的版本
 */
fun postCardData(cardType: String, cardAddr: String, remark: String, regionNumber: String?) {
    val map = mutableMapOf<String, Any>()
@@ -108,6 +167,12 @@
    if (remark.isNotEmpty()) {
        map["remarks"] = remark
    }
    // 如果是区域表号卡并且有区域号,添加到请求参数中
    if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
        map["regionNumber"] = regionNumber
    }
    // 使用正确的类型参数
    ApiManager.getInstance().requestPostLoading(
        this,
@@ -121,6 +186,9 @@
                        putExtra("cardAddr", cardAddr)
                        putExtra("orderId", t.content)
                        putExtra("cardType", cardType)
                        if (cardType == CardCommon.REGION_CARD && !regionNumber.isNullOrEmpty()) {
                            putExtra("regionNumber", regionNumber)
                        }
                    }
                    this@ManagerReadActivity.finish()
                    startActivity(intent)