4 Commits b3def8d560 ... 9896822b73

Autor SHA1 Nachricht Datum
  JaycePC 9896822b73 1.不使用主题 vor 4 Tagen
  JaycePC 0d7713f8ff Merge remote-tracking branch 'origin/master' into baotou_medical_school vor 4 Tagen
  JaycePC 338bfcbb24 1. 修复诸多BUG vor 4 Tagen
  JaycePC 6e23d616be 1.删除textview 样式 vor 5 Tagen
67 geänderte Dateien mit 1284 neuen und 1215 gelöschten Zeilen
  1. 6 1
      app/build.gradle
  2. 6 1
      app/src/main/java/com/rc/core/ui/activity/BaseActivity.java
  3. 2 0
      app/src/main/java/xn/hxp/app/ChemicalApp.kt
  4. 8 12
      app/src/main/java/xn/hxp/ui/MainActivity.java
  5. 4 0
      app/src/main/java/xn/hxp/ui/adapter/ChemicalLabelingAdapter.kt
  6. 25 30
      app/src/main/java/xn/hxp/ui/adapter/CustomSpinnerTwoAdapter.kt
  7. 6 1
      app/src/main/java/xn/hxp/ui/adapter/InquiryItemAdapter.kt
  8. 10 3
      app/src/main/java/xn/hxp/ui/adapter/InventoryAdapter.kt
  9. 11 7
      app/src/main/java/xn/hxp/ui/adapter/ReturningChemicalsAdapter.kt
  10. 12 0
      app/src/main/java/xn/hxp/ui/adapter/SelectChemicalDialogAdapter.java
  11. 3 0
      app/src/main/java/xn/hxp/ui/adapter/UseLedgerAdapter.kt
  12. 6 0
      app/src/main/java/xn/hxp/ui/adapter/UseListAdapter.kt
  13. 1 16
      app/src/main/java/xn/hxp/ui/discard/WasteChemicalsActivity.kt
  14. 19 23
      app/src/main/java/xn/hxp/ui/fragments/QueryOneFragment.kt
  15. 5 0
      app/src/main/java/xn/hxp/ui/fragments/QueryTwoFragment.kt
  16. 665 0
      app/src/main/java/xn/hxp/ui/inquiry/InquiryActivity.java
  17. 0 714
      app/src/main/java/xn/hxp/ui/inquiry/InquiryActivity.kt
  18. 3 0
      app/src/main/java/xn/hxp/ui/login/SwipeActivity.kt
  19. 8 0
      app/src/main/java/xn/hxp/ui/plan/PlanAdapter.java
  20. 2 1
      app/src/main/java/xn/hxp/ui/plan/PlanAddActivity.java
  21. 14 0
      app/src/main/java/xn/hxp/ui/plan/already/AlreadyAdapter.java
  22. 8 0
      app/src/main/java/xn/hxp/ui/plan/save_list/SaveListAdapter.java
  23. 39 36
      app/src/main/java/xn/hxp/ui/plan/unlock/UnlockAdapter.java
  24. 8 21
      app/src/main/java/xn/hxp/ui/still/ChemicalsAlsoActivity.kt
  25. 13 0
      app/src/main/java/xn/hxp/ui/uses/ProcessedActivity.kt
  26. 38 29
      app/src/main/java/xn/hxp/ui/warehousing/ChemicalLabelingActivity.kt
  27. 44 0
      app/src/main/java/xn/hxp/weidith/CustomAttachPopup.java
  28. 0 52
      app/src/main/java/xn/hxp/weidith/EdContDialog.kt
  29. 0 51
      app/src/main/java/xn/hxp/weidith/EdContThDialog.kt
  30. 0 51
      app/src/main/java/xn/hxp/weidith/EdContTwoDialog.kt
  31. 40 0
      app/src/main/java/xn/hxp/weidith/MyTextView.java
  32. 33 0
      app/src/main/java/xn/hxp/weidith/TextTool.java
  33. 26 0
      app/src/main/res/drawable/attach_popup.xml
  34. 1 2
      app/src/main/res/layout/activity_add.xml
  35. 1 1
      app/src/main/res/layout/activity_already.xml
  36. 0 1
      app/src/main/res/layout/activity_checklists.xml
  37. 1 7
      app/src/main/res/layout/activity_chemical_labeling.xml
  38. 2 6
      app/src/main/res/layout/activity_chemicals_also.xml
  39. 1 1
      app/src/main/res/layout/activity_demonstrate.xml
  40. 1 1
      app/src/main/res/layout/activity_electronic_ledger.xml
  41. 1 1
      app/src/main/res/layout/activity_facial_card.xml
  42. 1 1
      app/src/main/res/layout/activity_inquiry.xml
  43. 1 1
      app/src/main/res/layout/activity_ledger.xml
  44. 28 10
      app/src/main/res/layout/activity_main.xml
  45. 1 1
      app/src/main/res/layout/activity_msds.xml
  46. 1 1
      app/src/main/res/layout/activity_query_details.xml
  47. 1 1
      app/src/main/res/layout/activity_scan_code_two.xml
  48. 2 2
      app/src/main/res/layout/activity_setting.xml
  49. 1 1
      app/src/main/res/layout/activity_swipe_code_two.xml
  50. 1 1
      app/src/main/res/layout/activity_two_person.xml
  51. 1 1
      app/src/main/res/layout/activity_use.xml
  52. 1 1
      app/src/main/res/layout/activity_warehousing.xml
  53. 1 1
      app/src/main/res/layout/activity_warning_events.xml
  54. 1 6
      app/src/main/res/layout/activity_waste_chemicals.xml
  55. 18 0
      app/src/main/res/layout/custom_bubble_attach_popup.xml
  56. 35 8
      app/src/main/res/layout/custom_spinner_item.xml
  57. 1 3
      app/src/main/res/layout/custom_spinner_tow_item.xml
  58. 9 11
      app/src/main/res/layout/fragment_query_one.xml
  59. 24 23
      app/src/main/res/layout/item_already.xml
  60. 2 2
      app/src/main/res/layout/item_door_unlock.xml
  61. 2 4
      app/src/main/res/layout/item_in_storage.xml
  62. 1 1
      app/src/main/res/layout/item_inquiry.xml
  63. 1 1
      app/src/main/res/layout/item_usage_label_dialog.xml
  64. 39 37
      app/src/main/res/layout/usage_label_dialog.xml
  65. 27 27
      app/src/main/res/layout/weigh_dialog.xml
  66. 11 0
      app/src/main/res/values/styles.xml
  67. 0 1
      app/src/main/res/values/themes.xml

+ 6 - 1
app/build.gradle

@@ -13,7 +13,7 @@ android {
         //noinspection ExpiredTargetSdkVersion,OldTargetApi
         targetSdk 28
         versionCode 1
-        versionName "1.1"
+        versionName "1.2"
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         multiDexEnabled = true
@@ -146,4 +146,9 @@ dependencies {
 
     implementation 'com.github.zhpanvip:bannerviewpager:3.5.12'
 
+    implementation 'com.github.getActivity:Toaster:13.0'
+
+    implementation 'com.github.li-xiaojun:XPopup:2.10.0'
+
+
 }

+ 6 - 1
app/src/main/java/com/rc/core/ui/activity/BaseActivity.java

@@ -1,6 +1,7 @@
 package com.rc.core.ui.activity;
 
 import android.os.Bundle;
+import android.view.ViewGroup;
 
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.AppCompatActivity;
@@ -55,7 +56,11 @@ public abstract class BaseActivity extends AppCompatActivity {
         }
 
         ScreenAdapter.INSTANCE.setCustomDensity(this);
-        setContentView(setViewBinding().getRoot());
+
+        ViewBinding binding = setViewBinding();
+//        ViewGroup mainVG = (ViewGroup) binding.getRoot();
+//        mainVG.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
+        setContentView(binding.getRoot());
         ThreadUtils.executeByCachedAtFixRate(cdTask, 1, TimeUnit.SECONDS);
         baseActivityHelp = new BaseActivityHelp(this);
         onInit();

+ 2 - 0
app/src/main/java/xn/hxp/app/ChemicalApp.kt

@@ -14,6 +14,7 @@ import com.blankj.utilcode.util.SPUtils
 import com.blankj.utilcode.util.ThreadUtils
 import com.clj.fastble.BleManager
 import com.github.anrwatchdog.ANRWatchDog
+import com.hjq.toast.Toaster
 import com.kongzue.dialogx.DialogX
 import com.kongzue.dialogx.util.TextInfo
 import com.rc.core.util.ScreenAdapter
@@ -101,6 +102,7 @@ class ChemicalApp : Application() {
         initX5()
         appContext = applicationContext
         initLog()
+        Toaster.init(this)
     }
 
     private fun initLog() {

+ 8 - 12
app/src/main/java/xn/hxp/ui/MainActivity.java

@@ -31,6 +31,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
 import com.bumptech.glide.request.RequestOptions;
 import com.king.zxing.util.CodeUtils;
 import com.kongzue.dialogx.dialogs.PopTip;
+import com.lxj.xpopup.XPopup;
 import com.lztek.toolkit.Lztek;
 import com.rc.core.ui.activity.BaseActivity;
 import com.rc.httpcore.HttpClient;
@@ -69,6 +70,7 @@ import xn.hxp.utils.RelativeLayoutDebouncer;
 import xn.hxp.utils.SharedPreferencesHelper;
 import xn.hxp.utils.TimeUpdater;
 import xn.hxp.utils.UiManager;
+import xn.hxp.weidith.CustomAttachPopup;
 import xn.hxp.weidith.CustomDialog;
 
 public class MainActivity extends BaseActivity {
@@ -90,7 +92,6 @@ public class MainActivity extends BaseActivity {
     @Override
     protected void onResume() {
         super.onResume();
-
         if (ChemicalApp.userData != null) {
             viewBinding.inc.userLogin.setVisibility(View.GONE);
             viewBinding.inc.loggedIn.setVisibility(View.VISIBLE);
@@ -122,6 +123,8 @@ public class MainActivity extends BaseActivity {
         registerReceiver(timeTickReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));
 
         viewBinding.versionName.setText("版本号:" + AppUtils.getAppVersionName());
+        viewBinding.cabinetVP.setIndicatorSliderColor(Color.parseColor("#80E0E0E0"), Color.WHITE);
+        viewBinding.cabinetVP.setIndicatorSliderWidth(16);
         viewBinding.cabinetVP.registerLifecycleObserver(getLifecycle()).setAdapter(new CabinetBannerAdapter(new CabinetBannerAdapter.VerifyCallBack() {
             @Override
             public void login() {
@@ -279,27 +282,20 @@ public class MainActivity extends BaseActivity {
                     ChemicalApp.confs = data;
                     mLoginType = data.getLoginType();
                     if (data.getLevelName() != null) {
-                        // 一行一字
                         if (!TextUtils.isEmpty(data.getLevelName())) {
                             String text = data.getLevelName();
-                            StringBuilder sb = new StringBuilder();
-                            char[] chars = text.toCharArray();
-                            for (int i = 0; i < chars.length; i++) {
-                                sb.append(chars[i]);
-                                if (i < chars.length - 1) {
-                                    sb.append("\n");
-                                }
+                            if (text.length() > 1) {
+                                viewBinding.tvNoName.setText(text.substring(0, 1));
                             }
-                            viewBinding.tvNoName.setText(sb.toString());
                         }
 
                         GradientDrawable shapes = new GradientDrawable();
                         shapes.setShape(GradientDrawable.RECTANGLE);
                         shapes.setColor(Color.parseColor(data.getLevelColor()));
                         shapes.setCornerRadius(5f);
-                        viewBinding.tvNoName.setBackground(shapes);
+                        viewBinding.levelLL.setBackground(shapes);
                     } else {
-                        viewBinding.tvNoName.setVisibility(View.GONE);
+                        viewBinding.levelLL.setVisibility(View.GONE);
                     }
                     viewBinding.subName.setText(data.getSubName());
                     viewBinding.inc.deptName.setText(data.getDeptName());

+ 4 - 0
app/src/main/java/xn/hxp/ui/adapter/ChemicalLabelingAdapter.kt

@@ -1,11 +1,13 @@
 package xn.hxp.ui.adapter
 
 import android.content.Context
+import android.widget.TextView
 import androidx.core.content.ContextCompat
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.chad.library.adapter.base.viewholder.BaseViewHolder
 import xn.hxp.R
 import com.rc.httpcore.bean.QueryTwoListBean
+import xn.hxp.weidith.TextTool
 
 //标签列表
 class ChemicalLabelingAdapter(private val ct: Context) :
@@ -29,6 +31,8 @@ class ChemicalLabelingAdapter(private val ct: Context) :
         }
 
         holder.setText(R.id.chemicalName, item.chemicalName)
+        val chemicalNameView = holder.getView<TextView>(R.id.chemicalName)
+        chemicalNameView.setOnClickListener { TextTool.showPop(context, chemicalNameView) }
         holder.setText(R.id.tagCode, item.tagCode)
         if (item.rfidCode != null) {
             holder.setText(R.id.rfidCode, item.rfidCode)

+ 25 - 30
app/src/main/java/xn/hxp/ui/adapter/CustomSpinnerTwoAdapter.kt

@@ -1,7 +1,6 @@
 package xn.hxp.ui.adapter
 
 import android.content.Context
-import android.util.TypedValue
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -9,45 +8,41 @@ import android.widget.BaseAdapter
 import android.widget.TextView
 import xn.hxp.R
 
-class CustomSpinnerTwoAdapter (private val ct: Context, private val dataList: List<String>) : BaseAdapter() {
 
-    override fun getCount(): Int {
-        return dataList.size
-    }
-
-    override fun getItem(position: Int): Any {
-        return dataList[position]
-    }
+class CustomSpinnerTwoAdapter(private val ct: Context, private val dataList: List<String>?) :
+    BaseAdapter() {
 
-    override fun getItemId(position: Int): Long {
-        return position.toLong()
-    }
+    // 修复1:处理数据源可能为null的情况
+    override fun getCount(): Int = dataList?.size ?: 0
 
-    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
-        var view = convertView
-        val viewHolder: ViewHolder
+    // 修复2:避免空数据时getItem崩溃
+    override fun getItem(position: Int): Any =
+        dataList?.getOrNull(position) ?: "" // 空数据返回安全值
 
-        if (view == null) {
-            view = LayoutInflater.from(ct).inflate(R.layout.custom_spinner_item, parent, false)
-            viewHolder = ViewHolder()
-            viewHolder.textView = view.findViewById(R.id.spinnerItemText)
+    override fun getItemId(position: Int): Long = position.toLong()
 
-            view.tag = viewHolder
-        } else {
-            viewHolder = view.tag as ViewHolder
+    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+        val view = convertView ?: LayoutInflater.from(ct).inflate(
+            R.layout.custom_spinner_item,
+            parent,
+            false
+        ).apply {
+            tag = ViewHolder(this) // 直接初始化ViewHolder
         }
-        viewHolder.textView.text = "${dataList[position]}"
 
-        return view!!
-    }
+        val viewHolder = view.tag as ViewHolder
+        val item = getItem(position) as String
+
+        viewHolder.line.visibility =
+            if (position == (dataList?.size ?: 0) - 1) View.GONE
+            else View.VISIBLE
 
-    override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup?): View? {
-        val view = super.getDropDownView(position, convertView, parent) as TextView
-        view.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12f) // 设置字体大小为12sp
+        viewHolder.textView.text = item
         return view
     }
 
-    private class ViewHolder {
-        lateinit var textView: TextView
+    private class ViewHolder(view: View) {
+        val textView: TextView = view.findViewById(R.id.spinnerItemText)
+        val line: View = view.findViewById(R.id.line)
     }
 }

+ 6 - 1
app/src/main/java/xn/hxp/ui/adapter/InquiryItemAdapter.kt

@@ -1,11 +1,13 @@
 package xn.hxp.ui.adapter
 
+import android.view.View
 import android.widget.TextView
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.chad.library.adapter.base.viewholder.BaseViewHolder
 import xn.hxp.R
 import com.blankj.utilcode.util.LogUtils
 import com.rc.httpcore.bean.HxpStockWaitListBean
+import xn.hxp.weidith.TextTool
 
 
 //查询-详情
@@ -14,7 +16,10 @@ class InquiryItemAdapter :
 
     override fun convert(holder: BaseViewHolder, item: HxpStockWaitListBean) {
         holder.setText(R.id.chemicalName, "${item.chemicalName}")
-        holder.getView<TextView>(R.id.chemicalName).isSelected = true
+        val chemicalNameView = holder.getView<TextView>(R.id.chemicalName)
+        chemicalNameView.setOnClickListener(View.OnClickListener {
+            TextTool.showPop(context, chemicalNameView)
+        })
         LogUtils.i("===${holder.adapterPosition}====${item.casNum}")
         if (item.casNum != null) {
             holder.setText(R.id.casNum, "${item.casNum}")

+ 10 - 3
app/src/main/java/xn/hxp/ui/adapter/InventoryAdapter.kt

@@ -1,29 +1,36 @@
 package xn.hxp.ui.adapter
 
 import android.content.Context
+import android.widget.TextView
 import androidx.core.content.ContextCompat
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.chad.library.adapter.base.viewholder.BaseViewHolder
 import xn.hxp.R
 import com.rc.httpcore.bean.InventoryBean
+import xn.hxp.weidith.TextTool
 
 //库存台账 - 列表
 class InventoryAdapter(private val ct: Context) :
     BaseQuickAdapter<InventoryBean, BaseViewHolder>(R.layout.item_inventory) {
     override fun convert(holder: BaseViewHolder, item: InventoryBean) {
         holder.setText(R.id.chemicalName, item.chemicalName)
+        val chemicalNameView = holder.getView<TextView>(R.id.chemicalName)
+        chemicalNameView.setOnClickListener { TextTool.showPop(context, chemicalNameView) }
         holder.setText(R.id.tagCode, item.tagCode)
         holder.setText(R.id.specNum, "${item.specNum}${item.specUnit}/${item.packUnit}")
         holder.setText(R.id.cabinetName, "${item.cabinetName}-${item.doorName}-${item.layers}层")
         if (item.expireTime != null) {
             if (item.expireStatus == 1) {
-                holder.setTextColor(R.id.expireTime,ContextCompat.getColor(ct, R.color.purple_ffff7919))
+                holder.setTextColor(
+                    R.id.expireTime,
+                    ContextCompat.getColor(ct, R.color.purple_ffff7919)
+                )
                 holder.setText(R.id.expireTime, "${item.expireTime}已过期")
             } else {
-                holder.setTextColor(R.id.expireTime,ContextCompat.getColor(ct, R.color.black))
+                holder.setTextColor(R.id.expireTime, ContextCompat.getColor(ct, R.color.black))
                 holder.setText(R.id.expireTime, item.expireTime)
             }
-        }else{
+        } else {
             holder.setText(R.id.expireTime, "")
         }
         holder.setText(R.id.belongName, item.belongName)

+ 11 - 7
app/src/main/java/xn/hxp/ui/adapter/ReturningChemicalsAdapter.kt

@@ -1,23 +1,27 @@
 package xn.hxp.ui.adapter
 
+import android.widget.TextView
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.chad.library.adapter.base.viewholder.BaseViewHolder
 import xn.hxp.R
 import com.rc.httpcore.bean.ReturningList
+import xn.hxp.weidith.TextTool
 
 //归还化学品列表  item_use_list 多个地方使用
-class ReturningChemicalsAdapter: BaseQuickAdapter<ReturningList, BaseViewHolder>(R.layout.item_use_list) {
+class ReturningChemicalsAdapter :
+    BaseQuickAdapter<ReturningList, BaseViewHolder>(R.layout.item_use_list) {
 
     override fun convert(holder: BaseViewHolder, item: ReturningList) {
-        holder.setText(R.id.chemicalName,"${item.chemicalName}")
-
+        holder.setText(R.id.chemicalName, "${item.chemicalName}")
+        val chemicalNameView = holder.getView<TextView>(R.id.chemicalName)
+        chemicalNameView.setOnClickListener { TextTool.showPop(context, chemicalNameView) }
         //编码
-        holder.setText(R.id.chemicalPurity,"${item.tagCode}")
+        holder.setText(R.id.chemicalPurity, "${item.tagCode}")
 
-        holder.setText(R.id.surplus,"${item.specNum}${item.specUnit}/${item.packUnit}")
-        holder.setText(R.id.chemicalNumber,"${item.belongName}")
+        holder.setText(R.id.surplus, "${item.specNum}${item.specUnit}/${item.packUnit}")
+        holder.setText(R.id.chemicalNumber, "${item.belongName}")
         //领用人
-        holder.setText(R.id.cabinetName_doorName,"${item.useName}")
+        holder.setText(R.id.cabinetName_doorName, "${item.useName}")
 
     }
 }

+ 12 - 0
app/src/main/java/xn/hxp/ui/adapter/SelectChemicalDialogAdapter.java

@@ -1,14 +1,19 @@
 package xn.hxp.ui.adapter;
 
 import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.blankj.utilcode.util.ClickUtils;
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
 import com.rc.httpcore.bean.HxpChemicalVo;
+
 import xn.hxp.R;
+import xn.hxp.weidith.TextTool;
 
 import java.util.List;
 
@@ -20,6 +25,13 @@ public class SelectChemicalDialogAdapter extends BaseQuickAdapter<HxpChemicalVo,
     @Override
     protected void convert(@NonNull BaseViewHolder baseViewHolder, HxpChemicalVo hxpChemicalVo) {
         baseViewHolder.setText(R.id.chemicalName, TextUtils.isEmpty(hxpChemicalVo.getChemicalName()) ? "" : hxpChemicalVo.getChemicalName());
+        TextView chemicalNameView = baseViewHolder.getView(R.id.chemicalName);
+        chemicalNameView.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                TextTool.showPop(baseViewHolder.itemView.getContext(), chemicalNameView);
+            }
+        });
         baseViewHolder.setText(R.id.casNum, TextUtils.isEmpty(hxpChemicalVo.getCasNum()) ? "" : hxpChemicalVo.getCasNum());
         baseViewHolder.setText(R.id.chemicalPurity, TextUtils.isEmpty(hxpChemicalVo.getChemicalPurity()) ? "" : hxpChemicalVo.getChemicalPurity());
     }

+ 3 - 0
app/src/main/java/xn/hxp/ui/adapter/UseLedgerAdapter.kt

@@ -8,6 +8,7 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder
 import xn.hxp.R
 import com.blankj.utilcode.util.LogUtils
 import com.rc.httpcore.bean.UseLedgerListBean
+import xn.hxp.weidith.TextTool
 
 
 //使用台账-列表
@@ -16,6 +17,8 @@ class UseLedgerAdapter :
 
     override fun convert(holder: BaseViewHolder, item: UseLedgerListBean) {
         holder.setText(R.id.chemicalName, item.chemicalName)
+        val chemicalNameView = holder.getView<TextView>(R.id.chemicalName)
+        chemicalNameView.setOnClickListener { TextTool.showPop(context, chemicalNameView) }
         holder.setText(R.id.tagCode, item.tagCode)
         // 截取后5位
         if (item.collectTime != null) {

+ 6 - 0
app/src/main/java/xn/hxp/ui/adapter/UseListAdapter.kt

@@ -1,9 +1,11 @@
 package xn.hxp.ui.adapter
 
+import android.widget.TextView
 import com.chad.library.adapter.base.BaseQuickAdapter
 import com.chad.library.adapter.base.viewholder.BaseViewHolder
 import xn.hxp.R
 import com.rc.httpcore.bean.HxpStockWaitListBean
+import xn.hxp.weidith.TextTool
 
 //可用化学品列表
 class UseListAdapter :
@@ -14,6 +16,10 @@ class UseListAdapter :
         if (item.chemicalPurity != null) {
             holder.setText(R.id.chemicalPurity, "${item.chemicalPurity}")
         }
+        val chemicalNameView = holder.getView<TextView>(R.id.chemicalName);
+        chemicalNameView.setOnClickListener {
+            TextTool.showPop(context, chemicalNameView)
+        }
         holder.setText(R.id.surplus, "${item.surplus}${item.specUnit}")
         holder.setText(R.id.chemicalNumber, "${item.chemicalNumber}")
         holder.setText(R.id.cabinetName_doorName, "${item.cabinetName}-${item.doorName}")

+ 1 - 16
app/src/main/java/xn/hxp/ui/discard/WasteChemicalsActivity.kt

@@ -36,7 +36,6 @@ import xn.hxp.ui.verify.TwoVerificationActivity
 import xn.hxp.utils.*
 import xn.hxp.weidith.CustomDialog
 import xn.hxp.weidith.DiscardDialog
-import xn.hxp.weidith.EdContDialog
 import xn.hxp.weidith.StorageDialog
 import java.net.ConnectException
 import java.net.SocketTimeoutException
@@ -185,20 +184,6 @@ class WasteChemicalsActivity : BaseActivity() {
             getCabinet()
         }
 
-        viewBinding.edCont.setOnClickListener {
-            val edDialog = EdContDialog(this, object : EdContDialog.IClickLit {
-                override fun onClickClo(str: String?) {
-                    if (str != null) {
-                        viewBinding.edCont.text = "$str"
-                    } else {
-                        stockDetailsList()
-                    }
-                }
-
-            })
-            edDialog.show()
-        }
-
         //列表查询  EdContDialog
         viewBinding.reQuy.setOnClickListener {
             page = 1
@@ -210,7 +195,7 @@ class WasteChemicalsActivity : BaseActivity() {
             mCabinetId = null
             mDoorId = null
             viewBinding.cabinetName.text = "化学品柜"
-            viewBinding.edCont.text = ""
+            viewBinding.edCont.setText("")
             stockDetailsList()
         }
 

+ 19 - 23
app/src/main/java/xn/hxp/ui/fragments/QueryOneFragment.kt

@@ -1,6 +1,5 @@
 package xn.hxp.ui.fragments
 
-import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -8,20 +7,17 @@ import android.widget.AdapterView
 import androidx.core.content.ContextCompat
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.viewbinding.ViewBinding
-import xn.hxp.app.ChemicalApp
+import com.blankj.utilcode.util.LogUtils
+import com.rc.core.ui.fragment.BaseFragment
+import com.rc.httpcore.bean.ChemicalTypeBean
+import com.rc.httpcore.client.ApiRepository
 import xn.hxp.R
+import xn.hxp.app.ChemicalApp
 import xn.hxp.databinding.FragmentQueryOneBinding
 import xn.hxp.ui.adapter.CustomSpinnerTwoAdapter
 import xn.hxp.ui.adapter.InquiryItemAdapter
 import xn.hxp.ui.inquiry.InquiryActivity
 import xn.hxp.weidith.ChemicalTypeDialog
-import xn.hxp.weidith.EdContThDialog
-import xn.hxp.weidith.EdContTwoDialog
-import com.blankj.utilcode.util.LogUtils
-import com.rc.core.ui.fragment.BaseFragment
-import com.rc.httpcore.bean.ChemicalTypeBean
-import com.rc.httpcore.bean.HxpStockWaitListBean
-import com.rc.httpcore.client.ApiRepository
 
 
 class QueryOneFragment : BaseFragment() {
@@ -187,19 +183,19 @@ class QueryOneFragment : BaseFragment() {
             }
         }
 
-        viewBinding.edCont.setOnClickListener {
-            val edDialog = EdContThDialog(requireActivity(), object : EdContThDialog.IClickLit {
-                override fun onClickClo(str: String?) {
-                    if (str != null) {
-                        viewBinding.edCont.text = "$str"
-                    } else {
-                        page = 1
-                        getUseList()
-                    }
-                }
-            })
-            edDialog.show()
-        }
+//        viewBinding.edCont.setOnClickListener {
+//            val edDialog = EdContThDialog(requireActivity(), object : EdContThDialog.IClickLit {
+//                override fun onClickClo(str: String?) {
+//                    if (str != null) {
+//                        viewBinding.edCont.setText("$str")
+//                    } else {
+//                        page = 1
+//                        getUseList()
+//                    }
+//                }
+//            })
+//            edDialog.show()
+//        }
         //列表查询  EdContDialog
         viewBinding.reQuy.setOnClickListener {
             page = 1
@@ -213,7 +209,7 @@ class QueryOneFragment : BaseFragment() {
             mChemicalCategory = null
             mChemicalLevel = null
             viewBinding.chemType.text = "类别"
-            viewBinding.edCont.text = ""
+            viewBinding.edCont.setText("")
             sPinner.setSelection(0)
             getUseList()
         }

+ 5 - 0
app/src/main/java/xn/hxp/ui/fragments/QueryTwoFragment.kt

@@ -4,6 +4,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.widget.TextView
 import androidx.core.content.ContextCompat
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.viewbinding.ViewBinding
@@ -16,6 +17,7 @@ import com.rc.core.ui.fragment.BaseFragment
 import com.rc.httpcore.bean.HxpStockWaitListBean
 import com.rc.httpcore.bean.QueryTwoBean
 import com.rc.httpcore.client.ApiRepository
+import xn.hxp.weidith.TextTool
 
 //查询-详情列表
 class QueryTwoFragment : BaseFragment() {
@@ -123,6 +125,9 @@ class QueryTwoFragment : BaseFragment() {
         val surplus = hxpStockWaitListBean.surplus //总量
         val chemicalNumber = hxpStockWaitListBean.chemicalNumber //数量
         viewBinding.chemicalName.text = "$chemicalName"
+        viewBinding.chemicalName.setOnClickListener {
+            TextTool.showPop(requireContext(), viewBinding.chemicalName)
+        }
         viewBinding.chemicalLevelName.text = "$chemicalLevelName"
         viewBinding.chemicalCategoryName.text = "$chemicalCategoryName"
 

+ 665 - 0
app/src/main/java/xn/hxp/ui/inquiry/InquiryActivity.java

@@ -0,0 +1,665 @@
+package xn.hxp.ui.inquiry;
+
+import android.content.IntentFilter;
+import android.hardware.usb.UsbManager;
+import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.os.Handler;
+import android.os.Looper;
+import android.view.KeyEvent;
+import android.view.View;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.viewbinding.ViewBinding;
+
+import com.blankj.utilcode.util.ClickUtils;
+import com.blankj.utilcode.util.LogUtils;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.request.RequestOptions;
+import com.rc.core.ui.activity.BaseActivity;
+import com.rc.core.ui.fragment.BaseFragment;
+import com.rc.httpcore.HttpConfig;
+import com.rc.httpcore.bean.HxpStockWaitListBean;
+import com.rc.httpcore.bean.LockVoListBean;
+import com.rc.httpcore.bean.RuleBean;
+import com.rc.httpcore.bean.UseNoBean;
+import com.rc.httpcore.bean.UseNoTwoBean;
+import com.rc.httpcore.client.ApiRepository;
+import com.rc.httpcore.client.HttpTool;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import kotlin.Unit;
+import kotlin.jvm.functions.Function1;
+import xn.hxp.R;
+import xn.hxp.app.ChemicalApp;
+import xn.hxp.databinding.ActivityInquiryBinding;
+import xn.hxp.receiver.OnSerialScanListener;
+import xn.hxp.receiver.PortScanHelper;
+import xn.hxp.receiver.UsbReceiver;
+import xn.hxp.ui.DoubleDialogBean;
+import xn.hxp.ui.adapter.CabinetDoorAdapter;
+import xn.hxp.ui.adapter.CabinetDoorRighAdapter;
+import xn.hxp.ui.fragments.QueryOneFragment;
+import xn.hxp.ui.fragments.QueryTwoFragment;
+import xn.hxp.ui.login.FaceLoginActivity;
+import xn.hxp.ui.login.FacialCardActivity;
+import xn.hxp.ui.login.ScanLoginActivity;
+import xn.hxp.ui.login.SwipeActivity;
+import xn.hxp.utils.AudioPlayer;
+import xn.hxp.utils.BigDecimalUtils;
+import xn.hxp.utils.HandlerUtil;
+import xn.hxp.utils.SharedPreferencesHelper;
+import xn.hxp.utils.TimeUpdater;
+import xn.hxp.utils.UiManager;
+import xn.hxp.weidith.CustomDialog;
+import xn.hxp.weidith.PromptDialog;
+import xn.hxp.weidith.ScanCodeDialog;
+import xn.hxp.weidith.SwipeViewPager;
+import xn.hxp.weidith.TabFragmentPagerAdapter;
+
+public class InquiryActivity extends BaseActivity {
+
+    private TimeUpdater timeUpdater;
+    private int logIn = 0;
+    private UsbReceiver mUsbReceiver;
+    private boolean mHandleScanEvent = false;
+    private CabinetDoorAdapter mAdapterLeft;
+    private CabinetDoorRighAdapter mAdapterRigh;
+    private SwipeViewPager viewPager;
+    private TabFragmentPagerAdapter pagerAdapter;
+    private int mLeftPosition = 0;
+    private List<LockVoListBean> mCabinetLockVoList;
+    private ArrayList<String> mLockStr = new ArrayList<>();
+    private final HandlerUtil handlerUtil = HandlerUtil.Companion.getInstance();
+    private String mCabinetId;
+    private String mCabinetName;
+    private String mDoorId;
+    private String mDoorName;
+    private List<String> faceList;
+    private String mLoginType;
+    private ActivityInquiryBinding viewBinding;
+    private CountDownTimer countdownTimer;
+    private final Runnable task = new Runnable() {
+        @Override
+        public void run() {
+            if (mCabinetLockVoList != null) {
+                boolean containsFalse = false;
+                for (LockVoListBean it : mCabinetLockVoList) {
+                    if (!it.isOk() && it.getUnlockingMethod() == 2) {
+                        containsFalse = true;
+                        break;
+                    }
+                }
+                if (containsFalse) {
+                    getLocks();
+                } else {
+                    dismissLoading();
+                    customDialogView(1, "柜门已开");
+                    AudioPlayer.getInstance().play(R.raw.gui_men_yi_kai);
+                    handlerUtil.stopAllTasks();
+                    if (countdownTimer != null) {
+                        countdownTimer.cancel();
+                    }
+                }
+            }
+        }
+    };
+
+    private final PortScanHelper mPortScanHelper = new PortScanHelper(this, new OnSerialScanListener() {
+        @Override
+        public void dispatchScanEvent(ScanType type, String content) {
+            if (!mHandleScanEvent && content != null && !content.isEmpty()) {
+                mHandleScanEvent = true;
+                if (content.startsWith("http")) {
+                    try {
+                        LogUtils.i("=======查询扫码  " + content);
+                        String currentDateTimeString = BigDecimalUtils.INSTANCE.extractParameterValue(content, "code");
+                        LogUtils.i("=======查询扫码  " + currentDateTimeString);
+                        handleScanEvent(currentDateTimeString);
+                    } catch (Exception e) {
+                        mHandleScanEvent = false;
+                        showToast("扫描异常,请重操作");
+                    }
+                } else {
+                    handleScanEvent(content);
+                }
+            }
+        }
+    });
+
+    private void initData() {
+        logIn = getIntent().getIntExtra("logIn", 0);
+        String stringExtra = getIntent().getStringExtra("cabinetId");
+        String stringExtra1 = getIntent().getStringExtra("doorId");
+        if (stringExtra != null && !"a".equals(stringExtra)) {
+            mCabinetId = stringExtra;
+            mDoorId = stringExtra1;
+            viewBinding.tvReturn.setText("返回" + ChemicalApp.confs.getBackTime() + "s");
+        }
+        EventBus.getDefault().register(this);
+
+        viewBinding.tvLogin.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                try {
+                    HttpTool.logout();
+                } catch (Exception e) {
+                    LogUtils.e(e.getMessage());
+                }
+            }
+        });
+
+        if (logIn == 1) {
+            viewBinding.loggedIn.setVisibility(View.VISIBLE);
+            viewBinding.tvName.setText(ChemicalApp.userData.getUserName());
+            viewBinding.relOne.setVisibility(View.GONE);
+            getCabinet(ChemicalApp.subjectId);
+            fragmentInView();
+            inAdapter();
+        } else {
+            mLoginType = ChemicalApp.confs.getLoginType();
+            viewBinding.loggedIn.setVisibility(View.GONE);
+            viewBinding.tvName.setVisibility(View.GONE);
+        }
+
+        viewBinding.logIn.setOnClickListener(v -> getUserIds());
+        initTitle();
+        viewBinding.tvReturn.setOnClickListener(v -> finish());
+
+        viewBinding.butOpen.setOnClickListener(v -> {
+            if (ChemicalApp.administrators || ChemicalApp.responsibles) {
+                if (mCabinetLockVoList != null && !mCabinetLockVoList.isEmpty()) {
+                    mLockStr.clear();
+                    for (LockVoListBean it : mCabinetLockVoList) {
+                        if (it.getUnlockingMethod() == 2) {
+                            mLockStr.add(it.getLockNum());
+                        }
+                    }
+                    if (!mLockStr.isEmpty()) {
+                        openLock(mLockStr);
+                    } else {
+                        customDialogView(1, "柜门已开");
+                    }
+                } else {
+                    customDialogView(1, "柜门已开");
+                }
+            } else {
+                showToast("无权限信息");
+            }
+        });
+
+        Handler handler = new Handler(Looper.getMainLooper());
+        timeUpdater = new TimeUpdater(handler, new Function1<String, Unit>() {
+            @Override
+            public Unit invoke(String s) {
+                viewBinding.nowTime.setText(s);
+                return null;
+            }
+        });
+        timeUpdater.startUpdating();
+    }
+
+    private void initTitle() {
+        if (ChemicalApp.userData != null) {
+            viewBinding.logIn.setVisibility(View.GONE);
+            viewBinding.tvName.setText(ChemicalApp.userData.getUserName());
+            Glide.with(this)
+                    .load(HttpConfig.Companion.getAPI_BASE_IMG_URL() + ChemicalApp.userData.getAvatar())
+                    .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
+                    .into(viewBinding.imageName);
+        }
+        viewBinding.deptName.setText(ChemicalApp.confs.getDeptName() + "-" + ChemicalApp.confs.getRoomNum());
+        Glide.with(this)
+                .load(HttpConfig.Companion.getAPI_BASE_IMG_URL() + ChemicalApp.confs.getCircularLogo())
+                .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
+                .into(viewBinding.image);
+    }
+
+    private void fragmentInView() {
+        List<BaseFragment> tabArray = new ArrayList<>();
+        tabArray.add(QueryOneFragment.Companion.newInstance());
+        tabArray.add(QueryTwoFragment.Companion.newInstance());
+        pagerAdapter = new TabFragmentPagerAdapter(getSupportFragmentManager(), tabArray);
+        viewPager = viewBinding.swipePagerView;
+        viewPager.setAdapter(pagerAdapter);
+    }
+
+    private void inAdapter() {
+        mAdapterLeft = new CabinetDoorAdapter(this);
+        mAdapterRigh = new CabinetDoorRighAdapter(this);
+        viewBinding.recyclerViewListLeft.setLayoutManager(new LinearLayoutManager(this));
+        viewBinding.recyclerViewListLeft.setAdapter(mAdapterLeft);
+        viewBinding.recyclerViewListRight.setLayoutManager(new LinearLayoutManager(this));
+        viewBinding.recyclerViewListRight.setAdapter(mAdapterRigh);
+
+        mAdapterLeft.setOnItemClickListener((adapter, view, position) -> {
+            mLeftPosition = position;
+            for (int i = 0; i < mAdapterLeft.getData().size(); i++) {
+                mAdapterLeft.getData().get(i).setType(i == position);
+            }
+            for (int i = 0; i < mAdapterRigh.getData().size(); i++) {
+                mAdapterRigh.getData().get(i).setType(false);
+            }
+            mAdapterLeft.notifyDataSetChanged();
+            if (mAdapterLeft.getData().get(mLeftPosition).getCabinetDoorVoList() != null) {
+                mCabinetId = mAdapterLeft.getData().get(mLeftPosition).getCabinetId();
+                mCabinetName = mAdapterLeft.getData().get(mLeftPosition).getCabinetName();
+                mAdapterRigh.setNewInstance(mAdapterLeft.getData().get(mLeftPosition).getCabinetDoorVoList());
+            }
+        });
+
+        mAdapterRigh.setOnItemClickListener((adapter, view, position) -> {
+            mDoorId = mAdapterRigh.getData().get(position).getDoorUniqueId();
+            mDoorName = mAdapterRigh.getData().get(position).getDoorName();
+            mCabinetLockVoList = mAdapterRigh.getData().get(position).getCabinetLockVoList();
+            for (int i = 0; i < mAdapterRigh.getData().size(); i++) {
+                mAdapterRigh.getData().get(i).setType(i == position);
+            }
+            mAdapterRigh.notifyDataSetChanged();
+            goQueryTwoFragment();
+            if (mCabinetLockVoList != null && !mCabinetLockVoList.isEmpty()) {
+                boolean isLock = false;
+                for (LockVoListBean it : mCabinetLockVoList) {
+                    if (it.getUnlockingMethod() == 2) {
+                        isLock = true;
+                        break;
+                    }
+                }
+                if (ChemicalApp.userData != null && ChemicalApp.userData.getUserValidationBean() != null) {
+                    if (isLock) {
+                        boolean canOpen = ChemicalApp.userData.getUserValidationBean().getCabinetAdmin() ||
+                                ChemicalApp.userData.getUserValidationBean().getSafeUser() ||
+                                ChemicalApp.userData.getUserValidationBean().getCabinetAdmin();
+                        viewBinding.butOpen.setVisibility(canOpen ? View.VISIBLE : View.GONE);
+                    } else {
+                        viewBinding.butOpen.setVisibility(View.GONE);
+                    }
+                } else {
+                    viewBinding.butOpen.setVisibility(isLock ? View.VISIBLE : View.GONE);
+                }
+            }
+        });
+    }
+
+    private void getCabinet(String subId) {
+        showLoading("查询中...");
+        addDisposable(ApiRepository.INSTANCE.getCabinetList(subId).subscribe(
+                data -> {
+                    dismissLoading();
+                    mAdapterLeft.setNewInstance(data);
+
+                    if (mCabinetId != null) {
+                        for (int i = 0; i < mAdapterLeft.getData().size(); i++) {
+                            if (mCabinetId.equals(mAdapterLeft.getData().get(i).getCabinetId())) {
+                                RuleBean cabinetId = mAdapterLeft.getData().get(i);
+                                cabinetId.setType(true);
+                                mAdapterRigh.setNewInstance(cabinetId.getCabinetDoorVoList());
+                                for (int j = 0; j < mAdapterRigh.getData().size(); j++) {
+                                    if (mDoorId.equals(mAdapterRigh.getData().get(j).getDoorUniqueId())) {
+                                        mAdapterRigh.getData().get(j).setType(true);
+                                        break;
+                                    }
+                                }
+                                break;
+                            }
+                        }
+                    } else {
+                        mCabinetId = mAdapterLeft.getData().get(0).getCabinetId();
+                        mCabinetName = mAdapterLeft.getData().get(0).getCabinetName();
+                        mAdapterLeft.getData().get(0).setType(true);
+                        mDoorId = mAdapterRigh.getData().get(0).getDoorUniqueId();
+                        mDoorName = mAdapterRigh.getData().get(0).getDoorName();
+                        mAdapterRigh.getData().get(0).setType(true);
+                        mCabinetLockVoList = mAdapterLeft.getData().get(0).getCabinetDoorVoList().get(0).getCabinetLockVoList();
+                        if (mCabinetLockVoList != null && !mCabinetLockVoList.isEmpty()) {
+                            boolean isLock = false;
+                            for (LockVoListBean it : mCabinetLockVoList) {
+                                if (it.getUnlockingMethod() == 2) {
+                                    isLock = true;
+                                    break;
+                                }
+                            }
+                            if (ChemicalApp.userData != null && ChemicalApp.userData.getUserValidationBean() != null) {
+                                boolean canOpen = ChemicalApp.userData.getUserValidationBean().getCabinetAdmin() ||
+                                        ChemicalApp.userData.getUserValidationBean().getSafeUser() ||
+                                        ChemicalApp.userData.getUserValidationBean().getAdminUser();
+                                viewBinding.butOpen.setVisibility(isLock && canOpen ? View.VISIBLE : View.GONE);
+                            } else {
+                                viewBinding.butOpen.setVisibility(isLock ? View.VISIBLE : View.GONE);
+                            }
+                        }
+                    }
+                    goQueryTwoFragment();
+                },
+                throwable -> {
+                    dismissLoading();
+                    showNetError(throwable);
+                }
+        ));
+    }
+
+    public void goQueryTwoFragment(String stockId, HxpStockWaitListBean hxpStockWaitListBean) {
+        QueryTwoFragment secondFragment = (QueryTwoFragment) pagerAdapter.getItem(1);
+        secondFragment.setData(stockId, hxpStockWaitListBean, mCabinetId, mDoorId);
+        viewPager.setCurrentItem(1);
+    }
+
+    private void goQueryTwoFragment() {
+        QueryOneFragment secondFragment = (QueryOneFragment) pagerAdapter.getItem(0);
+        secondFragment.upDatas(mCabinetId, mDoorId);
+        viewPager.setCurrentItem(0);
+    }
+
+    private void handleScanEvent(String cont) {
+        if (logIn == 1) {
+            showLoading("查询中...");
+            ApiRepository.INSTANCE.getStockDetailsByCode(cont).subscribe(
+                    data -> {
+                        dismissLoading();
+                        upViewTwo(data);
+                    },
+                    throwable -> {
+                        dismissLoading();
+                        showNetError(throwable);
+                        mHandleScanEvent = false;
+                    }
+            );
+        } else {
+            showLoading("查询中...");
+            ApiRepository.INSTANCE.indexDetailbyRfid(cont).subscribe(
+                    data -> {
+                        dismissLoading();
+                        upView(data);
+                    },
+                    throwable -> {
+                        dismissLoading();
+                        showNetError(throwable);
+                        mHandleScanEvent = false;
+                    }
+            );
+        }
+    }
+
+    private void upView(UseNoBean data) {
+        PromptDialog proDialog = new PromptDialog(this, data);
+        if (!this.isFinishing() && !this.isDestroyed()) {
+            proDialog.show();
+        }
+        mHandleScanEvent = false;
+    }
+
+    private void upViewTwo(UseNoTwoBean data) {
+        ScanCodeDialog scanCodeDialog = new ScanCodeDialog(this, data);
+        if (!this.isFinishing() && !this.isDestroyed()) {
+            scanCodeDialog.show();
+        }
+        mHandleScanEvent = false;
+    }
+
+    private void registerUsbBroadcast() {
+        if (mUsbReceiver == null) {
+            IntentFilter filter = new IntentFilter();
+            filter.addAction(UsbReceiver.ACTION_USB_PERMISSION);
+            filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
+            filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
+            filter.addAction(UsbReceiver.ACTION_USB_STATE);
+            mUsbReceiver = new UsbReceiver();
+            registerReceiver(mUsbReceiver, filter);
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mPortScanHelper.onResume();
+        registerUsbBroadcast();
+    }
+
+    @Override
+    public boolean dispatchKeyEvent(KeyEvent event) {
+        mPortScanHelper.dispatchKeyEvent(event);
+        return super.dispatchKeyEvent(event);
+    }
+
+    @Override
+    protected void onPause() {
+        mPortScanHelper.onPause();
+        super.onPause();
+    }
+
+    @Override
+    protected ViewBinding setViewBinding() {
+        return viewBinding = ActivityInquiryBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected void onInit() {
+        initData();
+    }
+
+    @Override
+    protected void onDestroy() {
+        mPortScanHelper.onPause();
+        try {
+            handlerUtil.stopAllTasks();
+            if (countdownTimer != null) {
+                countdownTimer.cancel();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        try {
+            timeUpdater.stopUpdating();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        unregisterReceiver(mUsbReceiver);
+        EventBus.getDefault().unregister(this);
+        super.onDestroy();
+    }
+
+    @Override
+    public void cdFinish() {
+        finish();
+    }
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onUpdateEventEvent(KeyEvent event) {
+        // EventBus event handler
+    }
+
+    @Override
+    public void onBackPressed() {
+        super.onBackPressed();
+        finish();
+    }
+
+    @Override
+    public void cdTime(int cd) {
+        viewBinding.tvReturn.setText("返回" + cd + "s");
+    }
+
+    private void openLock(ArrayList<String> mLockStr) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subId", ChemicalApp.subjectId);
+        map.put("subName", ChemicalApp.subjectName);
+        map.put("cabinetId", mCabinetId);
+        map.put("cabinetName", mCabinetName);
+        map.put("doorId", mDoorId);
+        map.put("doorName", mDoorName);
+        map.put("lockNumList", mLockStr);
+        map.put("operationType", 6);
+        if (ChemicalApp.subRoom != null) {
+            map.put("subRoom", ChemicalApp.subRoom);
+        }
+        map.put("type", true);
+        try {
+            List<DoubleDialogBean> retrievedList = SharedPreferencesHelper.INSTANCE.getList(this);
+            if (retrievedList != null && retrievedList.size() > 1) {
+                map.put("oneUserId", retrievedList.get(0).getUserId());
+                map.put("oneUserName", retrievedList.get(0).getName());
+                map.put("twoUserId", retrievedList.get(1).getUserId());
+                map.put("twoUserName", retrievedList.get(1).getName());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        showLoading("加载中...");
+        ApiRepository.INSTANCE.lockOperate(map).subscribe(
+                data -> {
+                    dismissLoading();
+                    if (mCabinetLockVoList != null) {
+                        boolean containsFalse = false;
+                        for (LockVoListBean it : mCabinetLockVoList) {
+                            if (!it.isOk() && it.getUnlockingMethod() == 2) {
+                                containsFalse = true;
+                                break;
+                            }
+                        }
+                        if (containsFalse) {
+                            showLoading("查询中...");
+                            startCountdownLock();
+                            handlerUtil.startTask(task, 1000);
+                        }
+                    }
+                },
+                throwable -> {
+                    dismissLoading();
+                    showNetError(throwable);
+                }
+        );
+    }
+
+    private void startCountdownLock() {
+        countdownTimer = new CountDownTimer(30000, 1000) {
+            @Override
+            public void onTick(long millisUntilFinished) {
+                long secondsLeft = millisUntilFinished / 1000;
+                System.out.println("剩余时间: " + secondsLeft + " 秒");
+            }
+
+            @Override
+            public void onFinish() {
+                System.out.println("倒计时结束!");
+                mCabinetLockVoList = null;
+                mLockStr.clear();
+                showToast("开锁超时,可重新操作");
+                dismissLoading();
+                handlerUtil.stopAllTasks();
+            }
+        };
+        countdownTimer.start();
+    }
+
+    private void getLocks() {
+        for (int i = 0; i < mCabinetLockVoList.size(); i++) {
+            LockVoListBean fruit = mCabinetLockVoList.get(i);
+            if (!fruit.isOk() && fruit.getUnlockingMethod() == 2) {
+                getLocksDate(i, fruit.getLockNum());
+            }
+        }
+    }
+
+    private void getLocksDate(int index, String fruit) {
+        ApiRepository.INSTANCE.getLocks(ChemicalApp.subjectId, fruit).subscribe(
+                data -> {
+                    if (data) {
+                        mCabinetLockVoList.get(index).setOk(true);
+                    }
+                },
+                throwable -> {
+                    dismissLoading();
+                    showNetError(throwable);
+                }
+        );
+    }
+
+    private void customDialogView(int types, String msg) {
+        CustomDialog customDialog = new CustomDialog(this, types, msg);
+        if (!this.isFinishing() && !this.isDestroyed()) {
+            customDialog.show();
+        }
+    }
+
+    private void getUserIds() {
+        if (ChemicalApp.subjectId != null) {
+            showLoading("查询中...");
+            ApiRepository.INSTANCE.getUserIds(ChemicalApp.subjectId).subscribe(
+                    data -> {
+                        dismissLoading();
+                        faceList = data;
+                        getLogin();
+                    },
+                    throwable -> {
+                        dismissLoading();
+                    }
+            );
+        }
+    }
+
+    private void getLogin() {
+        if (mLoginType == null) {
+            customDialogView(2, "登录方式配置有误");
+        } else {
+            finish();
+            if (mLoginType.contains("4")) {
+                UiManager.INSTANCE.switcher(this, FacialCardActivity.class);
+            } else {
+                Map<String, String> map = new HashMap<>();
+                if (mLoginType.length() == 1) {
+                    switch (mLoginType) {
+                        case "1":
+                            map.put("faceList", faceList.toString());
+                            map.put("mtypes", "1");
+                            UiManager.INSTANCE.switcher(this, map, FaceLoginActivity.class);
+                            break;
+                        case "2":
+                            map.put("mtypes", "1");
+                            UiManager.INSTANCE.switcher(this, map, SwipeActivity.class);
+                            break;
+                        default:
+                            map.put("mtypes", "1");
+                            UiManager.INSTANCE.switcher(this, map, ScanLoginActivity.class);
+                            break;
+                    }
+                } else {
+                    String[] array = mLoginType.split(",");
+                    if (array.length == 2) {
+                        if ("1,2".equals(mLoginType) || "2,1".equals(mLoginType)) {
+                            map.put("faceList", faceList.toString());
+                            map.put("mtypes", "4");
+                            UiManager.INSTANCE.switcher(this, map, FaceLoginActivity.class);
+                        } else if ("1,3".equals(mLoginType) || "3,1".equals(mLoginType)) {
+                            map.put("faceList", faceList.toString());
+                            map.put("mtypes", "5");
+                            UiManager.INSTANCE.switcher(this, map, FaceLoginActivity.class);
+                        } else if ("2,3".equals(mLoginType) || "3,2".equals(mLoginType)) {
+                            map.put("mtypes", "6");
+                            UiManager.INSTANCE.switcher(this, map, SwipeActivity.class);
+                        } else {
+                            showToast("登录方式" + mLoginType);
+                        }
+                    } else {
+                        try {
+                            map.put("mtypes", "0");
+                            map.put("faceList", faceList.toString());
+                            UiManager.INSTANCE.switcher(this, map, FaceLoginActivity.class);
+                        } catch (Exception e) {
+                            map.put("mtypes", "0");
+                            UiManager.INSTANCE.switcher(this, map, SwipeActivity.class);
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 0 - 714
app/src/main/java/xn/hxp/ui/inquiry/InquiryActivity.kt

@@ -1,714 +0,0 @@
-package xn.hxp.ui.inquiry
-
-import android.content.IntentFilter
-import android.hardware.usb.UsbManager
-import android.os.CountDownTimer
-import android.os.Handler
-import android.os.Looper
-import android.view.KeyEvent
-import android.view.View
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.viewbinding.ViewBinding
-import com.blankj.utilcode.util.LogUtils
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.engine.DiskCacheStrategy
-import com.bumptech.glide.request.RequestOptions
-import com.rc.core.ui.activity.BaseActivity
-import com.rc.httpcore.HttpConfig
-import com.rc.httpcore.bean.HxpStockWaitListBean
-import com.rc.httpcore.bean.LockVoListBean
-import com.rc.httpcore.bean.UseNoBean
-import com.rc.httpcore.bean.UseNoTwoBean
-import com.rc.httpcore.client.ApiRepository
-import com.rc.httpcore.client.HttpTool
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-import org.greenrobot.eventbus.ThreadMode
-import xn.hxp.R
-import xn.hxp.app.ChemicalApp
-import xn.hxp.databinding.ActivityInquiryBinding
-import xn.hxp.receiver.OnSerialScanListener
-import xn.hxp.receiver.PortScanHelper
-import xn.hxp.receiver.UsbReceiver
-import xn.hxp.ui.adapter.CabinetDoorAdapter
-import xn.hxp.ui.adapter.CabinetDoorRighAdapter
-import xn.hxp.ui.fragments.QueryOneFragment
-import xn.hxp.ui.fragments.QueryTwoFragment
-import xn.hxp.ui.login.FaceLoginActivity
-import xn.hxp.ui.login.FacialCardActivity
-import xn.hxp.ui.login.ScanLoginActivity
-import xn.hxp.ui.login.SwipeActivity
-import xn.hxp.utils.AudioPlayer
-import xn.hxp.utils.BigDecimalUtils
-import xn.hxp.utils.HandlerUtil
-import xn.hxp.utils.SharedPreferencesHelper
-import xn.hxp.utils.TimeUpdater
-import xn.hxp.utils.UiManager
-import xn.hxp.weidith.CustomDialog
-import xn.hxp.weidith.PromptDialog
-import xn.hxp.weidith.ScanCodeDialog
-import xn.hxp.weidith.SwipeViewPager
-import xn.hxp.weidith.TabFragmentPagerAdapter
-
-//化学品-查询   已登录-未登录   未登录-扫码弹框提示当前某一个信息   已登陆 显示所有列表
-class InquiryActivity : BaseActivity() {
-
-    private lateinit var timeUpdater: TimeUpdater
-    private var logIn = 0  //未登录
-    private var mUsbReceiver: UsbReceiver? = null  // 刷卡广播注册
-    private var mHandleScanEvent = false //当前是否已经获取过 usb返回的参数
-    private val mAdapterLeft by lazy { CabinetDoorAdapter(this) }  //左边柜子
-    private val mAdapterRigh by lazy { CabinetDoorRighAdapter(this) }  //右边柜子
-    private lateinit var viewPager: SwipeViewPager
-    private lateinit var pagerAdapter: TabFragmentPagerAdapter
-    private var mLeftPosition = 0 //左边柜子信息
-    private var mCabinetLockVoList: List<LockVoListBean>? = null  //柜锁会又多个
-    private var mLockStr = ArrayList<String>()  // 需要打开得柜锁数量
-    private val handlerUtil = HandlerUtil.getInstance()
-    private var mCabinetId: String? = null
-    private var mCabinetName: String? = null
-    private var mDoorId: String? = null
-    private var mDoorName: String? = null
-    private lateinit var faceList: List<String>//人员区间值
-    private var mLoginType: String? = null //登录方式
-
-    lateinit var viewBinding: ActivityInquiryBinding
-    override fun setViewBinding(): ViewBinding {
-        viewBinding = ActivityInquiryBinding.inflate(layoutInflater)
-        return viewBinding
-    }
-
-    override fun onInit() {
-        logIn = intent.getIntExtra("logIn", 0)
-        val stringExtra = intent.getStringExtra("cabinetId")
-        val stringExtra1 = intent.getStringExtra("doorId")
-        if (!stringExtra.equals("a")) {
-            mCabinetId = stringExtra
-            mDoorId = stringExtra1
-        }
-        viewBinding.tvReturn.text = "返回${ChemicalApp.confs!!.backTime}s"
-        //注册广播
-        EventBus.getDefault().register(this)
-        viewBinding.tvOutLogin.setOnClickListener {
-            HttpTool.logout()
-        }
-
-        if (logIn == 1) {
-//            mHandleScanEvent = true
-            //已登录
-            viewBinding.loggedIn.visibility = View.VISIBLE
-            viewBinding.tvName.text = "${ChemicalApp.userData!!.userName}"
-            viewBinding.relOne.visibility = View.GONE
-            getCabinet(ChemicalApp.subjectId!!)
-            LogUtils.i("=====$mCabinetId")
-            LogUtils.i("=====$mDoorId")
-            fragmentInView()
-            inAdapter()
-            viewBinding.tvReturn.text = "返回${ChemicalApp.confs!!.backTime}s"
-        } else {
-            mLoginType = ChemicalApp.confs!!.loginType
-            //未登录
-            viewBinding.loggedIn.visibility = View.GONE
-            viewBinding.tvName.visibility = View.GONE
-        }
-
-        viewBinding.logIn.setOnClickListener {
-            getUserIds()
-
-        }
-        initTitle()
-        viewBinding.tvReturn.setOnClickListener {
-            finish()
-        }
-        //校园级管理员-柜门管理员-柜锁管理员-安全负责人-实验室负责人
-        viewBinding.butOpen.setOnClickListener {
-            if (ChemicalApp.administrators || ChemicalApp.responsibles) {
-
-                if (mCabinetLockVoList != null && mCabinetLockVoList!!.size > 0) {
-                    mLockStr.clear()
-                    mCabinetLockVoList!!.forEach { it ->
-                        when (it.unlockingMethod) {
-                            2 -> { //智能锁
-                                mLockStr.add("${it.lockNum}")
-                            }
-                        }
-                    }
-                    if (mLockStr != null && mLockStr.size > 0) {
-                        openLock(mLockStr)
-                    } else {
-                        //无锁
-                        customDialogView(1, "柜门已开")
-                    }
-                } else {
-                    //无锁
-                    customDialogView(1, "柜门已开")
-                }
-            } else {
-                showToast("无权限信息")
-            }
-        }
-
-        val handler = Handler(Looper.getMainLooper())
-        timeUpdater = TimeUpdater(handler) { currentTime ->
-            viewBinding.nowTime.text = "$currentTime"
-        }
-        // 启动定时更新
-        timeUpdater.startUpdating()
-    }
-
-    private fun initTitle() {
-        if (ChemicalApp.userData != null) {
-            viewBinding.logIn.visibility = View.GONE
-            viewBinding.tvName.text = ChemicalApp.userData!!.userName
-            val imageView = viewBinding.imageName
-            // 使用 Glide 加载网络图片
-            Glide.with(this)
-                .load("${HttpConfig.API_BASE_IMG_URL}${ChemicalApp.userData!!.avatar}")
-                .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
-                .into(imageView)
-        }
-        // 使用 Glide 加载网络图片
-        viewBinding.deptName.text = "${ChemicalApp.confs!!.deptName}-${ChemicalApp.confs!!.roomNum}"
-        Glide.with(this)
-            .load("${HttpConfig.API_BASE_IMG_URL}${ChemicalApp.confs!!.circularLogo}")
-            .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
-            .into(viewBinding.image)
-    }
-
-    private fun fragmentInView() {
-        val tabArray = mutableListOf(
-            QueryOneFragment.newInstance(),
-            QueryTwoFragment.newInstance(),
-        )
-        pagerAdapter = TabFragmentPagerAdapter(supportFragmentManager, tabArray)
-        viewPager = viewBinding.swipePagerView
-        viewPager.adapter = pagerAdapter
-    }
-
-    private fun inAdapter() {
-        viewBinding.recyclerViewListLeft?.layoutManager = LinearLayoutManager(this)
-        viewBinding.recyclerViewListLeft?.adapter = mAdapterLeft
-        viewBinding.recyclerViewListRight?.layoutManager = LinearLayoutManager(this)
-        viewBinding.recyclerViewListRight?.adapter = mAdapterRigh
-
-        mAdapterLeft.setOnItemClickListener { adapter, view, position ->
-            mLeftPosition = position
-            mAdapterLeft.data.forEach { it.isType = false }
-            mAdapterLeft.data[position].isType = true
-            mAdapterRigh.data.forEach { it.isType = false }  //柜门初始化
-            mAdapterLeft.notifyDataSetChanged()
-
-            if (mAdapterLeft.data[mLeftPosition].cabinetDoorVoList != null) {
-                mCabinetId = mAdapterLeft.data[mLeftPosition].cabinetId
-                mCabinetName = mAdapterLeft.data[mLeftPosition].cabinetName
-                mAdapterRigh.setNewInstance(mAdapterLeft.data[mLeftPosition].cabinetDoorVoList.toMutableList())
-            }
-        }
-
-
-        mAdapterRigh.setOnItemClickListener { adapter, view, position ->
-            mDoorId = mAdapterRigh.data[position].doorUniqueId
-            mDoorName = mAdapterRigh.data[position].doorName
-            mCabinetLockVoList = mAdapterRigh.data[position].cabinetLockVoList
-            mAdapterRigh.data.forEach { it.isType = false }
-            mAdapterRigh.data[position].isType = true
-            mAdapterRigh.notifyDataSetChanged()
-            //第一个页面
-            goQueryTwoFragment()
-            if (mCabinetLockVoList != null && mCabinetLockVoList!!.size > 0) {
-                var isLock = false
-                mCabinetLockVoList!!.forEach { it ->
-                    if (it.unlockingMethod == 2) {
-                        isLock = true
-                        return@forEach
-                    }
-                }
-
-                val userData = ChemicalApp.userData
-                if (null != userData) {
-                    val userValidation = userData.userValidationBean
-                    if (null != userValidation) {
-                        if (isLock) {
-                            if (userValidation.cabinetAdmin == true || userValidation.safeUser == true || userValidation.adminUser == true) {
-                                viewBinding.butOpen.visibility = View.VISIBLE
-                            } else {
-                                viewBinding.butOpen.visibility = View.GONE
-                            }
-                        } else {
-                            viewBinding.butOpen.visibility = View.GONE
-                        }
-
-                    }
-                } else {
-                    if (isLock) {
-                        viewBinding.butOpen.visibility = View.VISIBLE
-                    } else {
-                        viewBinding.butOpen.visibility = View.GONE
-                    }
-                }
-            }
-        }
-
-
-    }
-
-
-    //查询存储位置  默认第一个
-    private fun getCabinet(subId: String) {
-        showLoading("查询中...")
-        val disposable = ApiRepository.getCabinetList(subId)
-            .subscribe({ data ->
-                dismissLoading()
-
-                mAdapterLeft.setNewInstance(data.toMutableList())
-                mAdapterRigh.setNewInstance(data[0].cabinetDoorVoList.toMutableList())
-                if (mCabinetId != null) {
-                    mAdapterLeft.data.forEachIndexed { index, ruleBean ->
-                        if (mCabinetId.equals(ruleBean.cabinetId)) {
-                            mAdapterLeft.data[index].isType = true
-                            mAdapterLeft.data[index].cabinetDoorVoList.forEachIndexed { index, ruleBean ->
-                                if (mDoorId.equals(ruleBean.doorUniqueId)) {
-                                    mAdapterRigh.data[index].isType = true
-                                    return@forEachIndexed
-                                }
-                            }
-                            return@forEachIndexed
-                        }
-                    }
-                } else {
-                    //初始化第一把锁
-                    mCabinetId = mAdapterLeft.data[0].cabinetId
-                    mCabinetName = mAdapterLeft.data[0].cabinetName
-                    mAdapterLeft.data[0].isType = true
-                    mDoorId = mAdapterRigh.data[0].doorUniqueId
-                    mDoorName = mAdapterRigh.data[0].doorName
-                    mAdapterRigh.data[0].isType = true
-                    mCabinetLockVoList = mAdapterLeft.data[0].cabinetDoorVoList[0].cabinetLockVoList
-
-                    if (mCabinetLockVoList != null && mCabinetLockVoList!!.size > 0) {
-                        var isLock = false
-                        mCabinetLockVoList!!.forEach { it ->
-                            if (it.unlockingMethod == 2) {
-                                isLock = true
-                                return@forEach
-                            }
-                        }
-                        val userData = ChemicalApp.userData
-                        if (null != userData) {
-                            val userValidation = userData.userValidationBean
-                            if (null != userValidation) {
-                                if (isLock) {
-                                    if (userValidation.cabinetAdmin == true || userValidation.safeUser == true || userValidation.adminUser == true) {
-                                        viewBinding.butOpen.visibility = View.VISIBLE
-                                    } else {
-                                        viewBinding.butOpen.visibility = View.GONE
-                                    }
-                                } else {
-                                    viewBinding.butOpen.visibility = View.GONE
-                                }
-
-                            }
-                        } else {
-                            if (isLock) {
-                                viewBinding.butOpen.visibility = View.VISIBLE
-                            } else {
-                                viewBinding.butOpen.visibility = View.GONE
-                            }
-                        }
-                    }
-                }
-                //第一个页面
-                goQueryTwoFragment()
-            }, { throwable ->
-                dismissLoading()
-                showNetError(throwable)
-
-            })
-        addDisposable(disposable)
-    }
-
-    fun goQueryTwoFragment(stockId: String, hxpStockWaitListBean: HxpStockWaitListBean) {
-        val secondFragment = pagerAdapter.getItem(1) as QueryTwoFragment
-        secondFragment.setData(stockId, hxpStockWaitListBean, mCabinetId, mDoorId)
-        viewPager.currentItem = 1
-    }
-
-    private fun goQueryTwoFragment() {
-        val secondFragment = pagerAdapter.getItem(0) as QueryOneFragment
-        secondFragment.upDatas(mCabinetId, mDoorId)
-        viewPager.currentItem = 0
-    }
-
-    //=========================刷卡start================
-    //刷卡信息  调用当前化学品信息 进行归还
-    private fun handleScanEvent(cont: String) {
-        if (logIn == 1) {
-            //已登录
-            showLoading("查询中...")
-            val disposable = ApiRepository.getStockDetailsByCode(cont)
-                .subscribe({ data ->
-                    dismissLoading()
-                    upViewTwo(data)
-                }, { throwable ->
-                    dismissLoading()
-                    showNetError(throwable)
-                    mHandleScanEvent = false
-                })
-            addDisposable(disposable)
-        } else {
-            //未登录
-            showLoading("查询中...")
-            val disposable = ApiRepository.indexDetailbyRfid(cont)
-                .subscribe({ data ->
-                    dismissLoading()
-                    upView(data)
-                }, { throwable ->
-                    dismissLoading()
-                    showNetError(throwable)
-                    mHandleScanEvent = false
-                })
-            addDisposable(disposable)
-        }
-    }
-
-    //未登录
-    private fun upView(data: UseNoBean) {
-        val proDialog = PromptDialog(this, data)
-        if (!this.isFinishing && !this.isDestroyed) {
-            proDialog.show()
-        }
-        mHandleScanEvent = false
-    }
-
-    //已登录
-    private fun upViewTwo(data: UseNoTwoBean) {
-        val scanCodeDialog = ScanCodeDialog(this, data)
-        if (!this.isFinishing && !this.isDestroyed) {
-            scanCodeDialog.show()
-        }
-        mHandleScanEvent = false
-    }
-
-    private val mPortScanHelper by lazy {
-        PortScanHelper(this, object : OnSerialScanListener {
-            override fun dispatchScanEvent(type: OnSerialScanListener.ScanType, content: String) {
-                if (!mHandleScanEvent) {
-                    if (content.isNotBlank()) {
-                        mHandleScanEvent = true
-                        //所有通过查询二维码的参数 需要先判断  http开头的  然后进行截取
-                        if (content.startsWith("http")) {
-                            try {
-                                LogUtils.i("=======查询扫码  $content")
-                                val currentDateTimeString =
-                                    BigDecimalUtils.extractParameterValue(content, "code")
-                                LogUtils.i("=======查询扫码  $currentDateTimeString")
-                                handleScanEvent(currentDateTimeString!!)
-                            } catch (e: Exception) {
-                                mHandleScanEvent = false
-                                showToast("扫描异常,请重操作")
-                            }
-                        } else {
-                            handleScanEvent(content)
-                        }
-                    }
-
-                }
-            }
-
-        })
-    }
-
-    //刷卡usb链接
-    private fun registerUsbBroadcast() {
-        if (null == mUsbReceiver) {
-            val filter = IntentFilter().apply {
-                addAction(UsbReceiver.ACTION_USB_PERMISSION)
-                addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED)
-                addAction(UsbManager.ACTION_USB_DEVICE_DETACHED)
-                addAction(UsbReceiver.ACTION_USB_STATE) // usb连接状态广播
-            }
-            mUsbReceiver = UsbReceiver()
-            registerReceiver(mUsbReceiver, filter)
-        }
-    }
-
-    override fun onResume() {
-        super.onResume()
-        mPortScanHelper.onResume()
-        registerUsbBroadcast()
-    }
-
-    //获取刷卡信息
-    override fun dispatchKeyEvent(event: KeyEvent): Boolean {
-        mPortScanHelper.dispatchKeyEvent(event)
-        return super.dispatchKeyEvent(event)
-    }
-
-    //停止 销毁广播传递
-    override fun onPause() {
-        mPortScanHelper.onPause()
-        super.onPause()
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        mPortScanHelper.onPause()
-        try {
-            handlerUtil.stopAllTasks()
-            countdownTimer?.cancel()
-        } catch (e: Exception) {
-
-        }
-        try {
-            timeUpdater.stopUpdating()
-        } catch (e: Exception) {
-        }
-        // 停止定时更新
-        unregisterReceiver(mUsbReceiver)
-        EventBus.getDefault().unregister(this) //关闭广播
-    }
-
-    override fun cdFinish() {
-        finish()
-    }
-
-    //必须写这个方法  防止注册失败
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    fun onUpdateEventEvent(event: KeyEvent) {
-
-    }
-
-    //=========================刷卡end==================
-    override fun onBackPressed() {
-        super.onBackPressed()
-        finish()
-    }
-
-    override fun cdTime(cd: Int) {
-        viewBinding.tvReturn.text = "返回${cd}s"
-    }
-
-
-    //==========================开锁信息===================
-
-    //=================开锁流程================
-
-    private fun openLock(mLockStr: ArrayList<String>) {
-        val map = mutableMapOf<String, Any>()
-        map["subId"] = ChemicalApp.subjectId!!
-        map["subName"] = ChemicalApp.subjectName!!
-        map["cabinetId"] = "$mCabinetId"
-        map["cabinetName"] = "$mCabinetName"
-        map["doorId"] = "$mDoorId"
-        map["doorName"] = "$mDoorName"
-        map["lockNumList"] = mLockStr
-        map["operationType"] = 6
-        if (ChemicalApp.subRoom != null) {
-            map["subRoom"] = ChemicalApp.subRoom!!
-        }
-        map["type"] = true
-        try {// 从 SharedPreferences 中取出集合
-            val retrievedList = SharedPreferencesHelper.getList(this)
-            if (retrievedList != null && retrievedList.size > 0) {
-                LogUtils.i("从本地取出得双人信息${retrievedList[0].name}")
-                map["oneUserId"] = "${retrievedList[0].userId}"
-                map["oneUserName"] = "${retrievedList[0].name}"
-                map["twoUserId"] = "${retrievedList[1].userId}"
-                map["twoUserName"] = "${retrievedList[1].name}"
-                // 清空 SharedPreferences 中的集合
-//                SharedPreferencesHelper.clearList(this)
-            }
-        } catch (e: Exception) {
-
-        }
-        showLoading("加载中...")
-        val disposable = ApiRepository.lockOperate(map)
-            .subscribe({ data ->
-                dismissLoading()
-                val containsFalse =
-                    mCabinetLockVoList!!.any { it.isOk == false && it.unlockingMethod == 2 }
-                if (containsFalse) {
-                    showLoading("查询中...")
-                    startCountdownLock()
-                    // 开始执行任务,每 1 秒执行一次
-                    handlerUtil.startTask(task, 1000)
-                }
-            }, { throwable ->
-                dismissLoading()
-                showNetError(throwable)
-            })
-        addDisposable(disposable)
-    }
-
-    private var countdownTimer: CountDownTimer? = null
-    private fun startCountdownLock() {
-        val totalTime = 30 * 1000 // 30秒
-        val interval = 1000 // 每秒更新一次
-
-        countdownTimer = object : CountDownTimer(totalTime.toLong(), interval.toLong()) {
-            override fun onTick(millisUntilFinished: Long) {
-                val secondsLeft = millisUntilFinished / 1000
-                println("剩余时间: $secondsLeft 秒")
-            }
-
-            override fun onFinish() {
-                println("倒计时结束!")
-                mCabinetLockVoList = null
-                mLockStr.clear()
-                showToast("开锁超时,可重新操作")
-                dismissLoading()
-                handlerUtil.stopAllTasks()
-                // 在这里执行合适的操作,比如退出应用程序
-            }
-        }
-
-        println("倒计时开始...")
-        countdownTimer?.start()
-    }
-
-    private val task = Runnable {
-        //判断所有的锁开锁成功
-        val containsFalse = mCabinetLockVoList!!.any { it.isOk == false && it.unlockingMethod == 2 }
-        if (containsFalse) {
-            getLocks()
-        } else {
-            dismissLoading()
-            //开锁成功
-            customDialogView(1, "柜门已开")
-            AudioPlayer.getInstance().play(R.raw.gui_men_yi_kai)
-            handlerUtil.stopAllTasks()
-            countdownTimer?.cancel()
-        }
-    }
-
-
-    //查询开锁信息
-    private fun getLocks() {
-        mCabinetLockVoList!!.forEachIndexed { index, fruit ->
-            if (fruit.isOk == false && fruit.unlockingMethod == 2) {
-                getLocksDate(index, fruit.lockNum)
-            }
-        }
-    }
-
-    //查询开锁状态
-    private fun getLocksDate(index: Int, fruit: String) {
-        val disposable = ApiRepository.getLocks(ChemicalApp.subjectId!!, fruit)
-            .subscribe({ data ->
-                if (data) {
-                    mCabinetLockVoList!![index].isOk = true
-                }
-            }, { throwable ->
-                dismissLoading()
-                showNetError(throwable)
-            })
-        addDisposable(disposable)
-    }
-
-    /**
-     * 0  没有图标 1 绿色(成功)   2红色(失败)
-     *   失败或者成功的弹框
-     */
-    private fun customDialogView(types: Int, msg: String) {
-        val customDialog = CustomDialog(this, types, msg)
-        if (!this.isFinishing && !this.isDestroyed) {
-            customDialog.show()
-        }
-    }
-
-    private fun getUserIds() {
-        if (ChemicalApp.subjectId != null) {
-            showLoading("查询中...")
-            val disposable = ApiRepository.getUserIds(ChemicalApp.subjectId!!)
-                .subscribe({ data ->
-                    dismissLoading()
-                    faceList = data
-                    getLogin()
-                }, { throwable ->
-                    dismissLoading()
-//                throwableView(throwable)
-                })
-            addDisposable(disposable)
-        }
-    }
-
-    //登录方式
-    private fun getLogin() {
-        if (mLoginType == null) {
-            customDialogView(2, "登录方式配置有误")
-        } else {
-            finish()
-            if (mLoginType!!.contains("4")) {
-                //需要刷卡+人脸
-                UiManager.switcher(this, FacialCardActivity::class.java)
-            } else {
-                val map = mutableMapOf<String, String>()
-                //1人脸 2刷卡 3扫码   4人脸+刷卡
-                if (mLoginType!!.length == 1) {
-                    when (mLoginType) {
-                        "1" -> {
-                            //人脸
-                            map["faceList"] = faceList.toString()
-                            map["mtypes"] = "1"
-                            UiManager.switcher(this, map, FaceLoginActivity::class.java)
-                        }
-
-                        "2" -> {
-                            //刷卡
-                            map["mtypes"] = "1"
-                            UiManager.switcher(this, map, SwipeActivity::class.java)
-                        }
-
-                        else -> {
-                            //扫码
-                            map["mtypes"] = "1"
-                            UiManager.switcher(this, map, ScanLoginActivity::class.java)
-                        }
-                    }
-
-                } else {
-                    val array = mLoginType!!.split(",").toTypedArray()
-                    when (array.size) {
-                        2 -> {
-                            //1-2(人脸+刷卡)  1-3(人脸+扫码)  2-3(刷卡+扫码)
-                            if (mLoginType == "1,2" || mLoginType == "2,1") {
-                                //人脸+刷卡
-                                map["faceList"] = faceList.toString()
-                                map["mtypes"] = "4"  //隐藏扫码
-                                UiManager.switcher(this, map, FaceLoginActivity::class.java)
-                            } else if (mLoginType == "1,3" || mLoginType == "3,1") {
-                                //人脸+扫码
-                                map["faceList"] = faceList.toString()
-                                map["mtypes"] = "5"  //隐藏刷卡
-                                UiManager.switcher(this, map, FaceLoginActivity::class.java)
-                            } else if (mLoginType == "2,3" || mLoginType == "3,2") {
-                                //刷卡+扫码
-                                map["mtypes"] = "6"  //隐藏人脸
-                                UiManager.switcher(this, map, SwipeActivity::class.java)
-                            } else {
-                                showToast("登录方式$mLoginType")
-                            }
-
-                        }
-
-                        else -> {
-                            //3条
-                            try {
-                                map["mtypes"] = "0"
-                                map["faceList"] = faceList.toString()
-                                UiManager.switcher(this, map, FaceLoginActivity::class.java)
-                            } catch (e: Exception) {
-                                map["mtypes"] = "0"
-                                UiManager.switcher(this, map, SwipeActivity::class.java)
-                            }
-                        }
-                    }
-                }
-
-            }
-        }
-
-    }
-
-
-}

+ 3 - 0
app/src/main/java/xn/hxp/ui/login/SwipeActivity.kt

@@ -171,6 +171,7 @@ class SwipeActivity : BaseActivity() {
                 val allFalse =
                     java.lang.Boolean.TRUE == data.cabinetAdmin || java.lang.Boolean.TRUE == data.belongUser || java.lang.Boolean.TRUE == data.toipcUser || java.lang.Boolean.TRUE == data.safeUser || java.lang.Boolean.TRUE == data.collegeAdmin || java.lang.Boolean.TRUE == data.schoolLevelAdmin || java.lang.Boolean.TRUE == data.adminUser || java.lang.Boolean.TRUE == data.apply || java.lang.Boolean.TRUE == data.white
                 if (!allFalse) {
+                    LogUtils.d("当前身份不符合")
                     HttpClient.token = null
                     ChemicalApp.userData = null
                     customDialogView(2, "当前身份不符合")
@@ -193,6 +194,7 @@ class SwipeActivity : BaseActivity() {
                     } else if (data.white == true || data.apply == true) {// 白名单和实验室准入
                         authenticationDialog(data.faceImg, data.userName)
                     } else {
+                        LogUtils.d("当前身份不符合")
                         HttpClient.token = null
                         ChemicalApp.userData = null
                         customDialogView(2, "当前身份不符合")
@@ -202,6 +204,7 @@ class SwipeActivity : BaseActivity() {
                 }
 
             }, { throwable ->
+                LogUtils.d("登录异常", throwable.message)
                 dismissLoading()
                 throwableView(throwable)
                 HttpClient.token = null

+ 8 - 0
app/src/main/java/xn/hxp/ui/plan/PlanAdapter.java

@@ -8,12 +8,14 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 
+import com.blankj.utilcode.util.ClickUtils;
 import com.blankj.utilcode.util.LogUtils;
 import xn.hxp.databinding.ItemInStorageBinding;
 import xn.hxp.ui.plan.room.RoomTool;
 import xn.hxp.ui.plan.room.dao.HxpInventoryDAO;
 import com.rc.httpcore.bean.HxpChemicalVo;
 import xn.hxp.ui.plan.room.bean.input_add.InventoryItemBean;
+import xn.hxp.weidith.TextTool;
 
 import java.util.List;
 
@@ -75,6 +77,12 @@ public class PlanAdapter extends BaseAdapter {
             // 化学品名字
             String chemicalName = hxpChemicalVo.getChemicalName();
             binding.itemNameTV.setText(TextUtils.isEmpty(chemicalName) ? "" : chemicalName);
+            binding.itemNameTV.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+                @Override
+                public void onDebouncingClick(View v) {
+                    TextTool.showPop(context,binding.itemNameTV);
+                }
+            });
             // cas
             String casNum = hxpChemicalVo.getCasNum();
             binding.casTV.setText(TextUtils.isEmpty(casNum) ? "" : casNum);

+ 2 - 1
app/src/main/java/xn/hxp/ui/plan/PlanAddActivity.java

@@ -210,6 +210,7 @@ public class PlanAddActivity extends BaseActivity {
 
                     @Override
                     public void onSuccess(PlanAddData planAddData) {
+                        dismissLoading();
                         List<HxpCabinetVo> cabinetList = planAddData.getCabinetList();
                         List<HxpCabinetDoorVo> doorList = planAddData.getDoorList();
                         // 不需要开门
@@ -218,7 +219,6 @@ public class PlanAddActivity extends BaseActivity {
                             return;
                         }
                         String json = GsonUtils.toJson(planAddData);
-                        dismissLoading();
                         Intent intent = new Intent(PlanAddActivity.this, UnlockActivity.class);
                         intent.putExtra("data", json);
                         startActivity(intent);
@@ -228,6 +228,7 @@ public class PlanAddActivity extends BaseActivity {
                     @Override
                     public void onFail(Throwable t) {
                         super.onFail(t);
+                        dismissLoading();
                         PopTip.show(t.getMessage());
                         binding.subAdd.setEnabled(true);
                     }

+ 14 - 0
app/src/main/java/xn/hxp/ui/plan/already/AlreadyAdapter.java

@@ -25,6 +25,7 @@ import xn.hxp.databinding.ItemAlreadyBinding;
 import xn.hxp.ui.PrintBean;
 import xn.hxp.ui.plan.change.ChangeCabinetActivity;
 import xn.hxp.utils.PrintTool;
+import xn.hxp.weidith.TextTool;
 
 public class AlreadyAdapter extends BaseAdapter {
     private AlreadyActivity context;
@@ -76,6 +77,12 @@ public class AlreadyAdapter extends BaseAdapter {
             // 化学品名称
             String chemicalName = recordsBean.getChemicalName();
             binding.name.setText(TextUtils.isEmpty(chemicalName) ? "" : chemicalName);
+            binding.name.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+                @Override
+                public void onDebouncingClick(View v) {
+                    TextTool.showPop(context, binding.name);
+                }
+            });
             // 类别
             String chemicalCategoryName = recordsBean.getChemicalCategoryName();
             binding.type.setText(TextUtils.isEmpty(chemicalCategoryName) ? "" : chemicalCategoryName);
@@ -101,6 +108,12 @@ public class AlreadyAdapter extends BaseAdapter {
             } else {
                 binding.belongTV.setText(TextUtils.isEmpty(applyUserName) ? "" : applyUserName);
             }
+            binding.belongTV.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+                @Override
+                public void onDebouncingClick(View v) {
+                    TextTool.showPop(context, binding.belongTV);
+                }
+            });
             // 编码
             String labels = recordsBean.getLabels();
             binding.code.setText(TextUtils.isEmpty(labels) ? "" : labels);
@@ -110,6 +123,7 @@ public class AlreadyAdapter extends BaseAdapter {
             int doorLayers = recordsBean.getDoorLayers();
             binding.save.setText(cabinetName + "-" + doorName + "-" + doorLayers + "层");
             binding.selectCB.setChecked(recordsBean.isSelect());
+
             if (0 == type) {
                 binding.save.setTextColor(Color.parseColor("#ff0183FA"));
                 binding.operate.setTextColor(Color.parseColor("#ff0183FA"));

+ 8 - 0
app/src/main/java/xn/hxp/ui/plan/save_list/SaveListAdapter.java

@@ -8,6 +8,7 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 
+import com.blankj.utilcode.util.ClickUtils;
 import com.blankj.utilcode.util.LogUtils;
 import com.kongzue.dialogx.dialogs.PopTip;
 import com.rc.httpcore.bean.BelongingPersonBean;
@@ -29,6 +30,7 @@ import xn.hxp.ui.plan.room.bean.locker.HxpCabinetDoorVo;
 import xn.hxp.ui.plan.room.bean.locker.HxpCabinetLockVo;
 import xn.hxp.ui.plan.room.bean.locker.HxpCabinetVo;
 import xn.hxp.ui.plan.room.dao.HxpDoorDAO;
+import xn.hxp.weidith.TextTool;
 
 public class SaveListAdapter extends BaseAdapter {
 
@@ -136,6 +138,12 @@ public class SaveListAdapter extends BaseAdapter {
                         // 化学品名称
                         String chemicalName = chemicalVo.getChemicalName();
                         viewHolder.binding.name.setText(TextUtils.isEmpty(chemicalName) ? "" : cabinetName);
+                        viewHolder.binding.name.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+                            @Override
+                            public void onDebouncingClick(View v) {
+                                TextTool.showPop(activity, viewHolder.binding.name);
+                            }
+                        });
                         // CAS
                         String casNum = chemicalVo.getCasNum();
                         viewHolder.binding.cas.setText(TextUtils.isEmpty(casNum) ? "" : casNum);

+ 39 - 36
app/src/main/java/xn/hxp/ui/plan/unlock/UnlockAdapter.java

@@ -9,11 +9,13 @@ import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 
 import com.blankj.utilcode.util.LogUtils;
+
 import xn.hxp.R;
 import xn.hxp.databinding.ItemDoorUnlockBinding;
 import xn.hxp.ui.plan.room.bean.locker.HxpCabinetDoorVo;
 import xn.hxp.ui.plan.room.bean.locker.HxpCabinetLockVo;
 import xn.hxp.ui.plan.room.bean.locker.HxpCabinetVo;
+
 import com.kongzue.dialogx.dialogs.PopTip;
 
 import java.util.ArrayList;
@@ -55,42 +57,6 @@ public class UnlockAdapter extends BaseAdapter {
             convertView = binding.getRoot();
             viewHolder = new ViewHolder(binding);
             convertView.setTag(viewHolder);
-            // 上门
-            binding.upDoorUnlockBT.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    if (null != cabinet) {
-                        List<HxpCabinetDoorVo> hxpCabinetDoorVoList = findDoorByCabinetId(cabinet.getCabinetId());
-                        if (!hxpCabinetDoorVoList.isEmpty()) {
-                            HxpCabinetDoorVo upDoor = hxpCabinetDoorVoList.get(0);
-                            List<HxpCabinetLockVo> lockVoList = upDoor.getCabinetLockVoList();
-                            if (null != lockVoList && !lockVoList.isEmpty()) {
-                                activity.activityHelp.unlock(lockVoList.get(0));
-                                return;
-                            }
-                        }
-                        PopTip.show("开门失败!");
-                    }
-                }
-            });
-            // 下门
-            binding.downDoorUnlockBT.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    if (null != cabinet) {
-                        List<HxpCabinetDoorVo> hxpCabinetDoorVoList = findDoorByCabinetId(cabinet.getCabinetId());
-                        if (!hxpCabinetDoorVoList.isEmpty()) {
-                            HxpCabinetDoorVo downDoor = hxpCabinetDoorVoList.get(1);
-                            List<HxpCabinetLockVo> lockVoList = downDoor.getCabinetLockVoList();
-                            if (null != lockVoList && !lockVoList.isEmpty()) {
-                                activity.activityHelp.unlock(lockVoList.get(0));
-                                return;
-                            }
-                        }
-                        PopTip.show("开门失败!");
-                    }
-                }
-            });
         } else {
             viewHolder = (ViewHolder) convertView.getTag();
         }
@@ -189,6 +155,43 @@ public class UnlockAdapter extends BaseAdapter {
                     }
                 }
 
+                // 上门
+                viewHolder.binding.upDoorUnlockBT.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        if (null != cabinet) {
+                            List<HxpCabinetDoorVo> hxpCabinetDoorVoList = findDoorByCabinetId(cabinet.getCabinetId());
+                            if (!hxpCabinetDoorVoList.isEmpty()) {
+                                HxpCabinetDoorVo upDoor = hxpCabinetDoorVoList.get(0);
+                                List<HxpCabinetLockVo> lockVoList = upDoor.getCabinetLockVoList();
+                                if (null != lockVoList && !lockVoList.isEmpty()) {
+                                    activity.activityHelp.unlock(lockVoList.get(0));
+                                    return;
+                                }
+                            }
+                            PopTip.show("开门失败!");
+                        }
+                    }
+                });
+                // 下门
+                viewHolder.binding.downDoorUnlockBT.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        if (null != cabinet) {
+                            List<HxpCabinetDoorVo> hxpCabinetDoorVoList = findDoorByCabinetId(cabinet.getCabinetId());
+                            if (!hxpCabinetDoorVoList.isEmpty()) {
+                                HxpCabinetDoorVo downDoor = hxpCabinetDoorVoList.get(1);
+                                List<HxpCabinetLockVo> lockVoList = downDoor.getCabinetLockVoList();
+                                if (null != lockVoList && !lockVoList.isEmpty()) {
+                                    activity.activityHelp.unlock(lockVoList.get(0));
+                                    return;
+                                }
+                            }
+                            PopTip.show("开门失败!");
+                        }
+                    }
+                });
+
             } catch (Exception e) {
                 LogUtils.e(Log.getStackTraceString(e));
             }

+ 8 - 21
app/src/main/java/xn/hxp/ui/still/ChemicalsAlsoActivity.kt

@@ -3,13 +3,11 @@ package xn.hxp.ui.still
 import android.bluetooth.BluetoothDevice
 import android.content.IntentFilter
 import android.hardware.usb.UsbManager
-import android.os.Bundle
 import android.os.CountDownTimer
 import android.os.Handler
 import android.os.Looper
 import android.text.TextUtils
 import android.view.KeyEvent
-import android.view.LayoutInflater
 import android.view.View
 import android.widget.EditText
 import android.widget.Toast
@@ -20,8 +18,6 @@ import androidx.viewbinding.ViewBinding
 import com.blankj.utilcode.util.ActivityUtils
 import com.blankj.utilcode.util.LogUtils
 import com.blankj.utilcode.util.SPUtils
-import com.blankj.utilcode.util.ThreadUtils
-import com.blankj.utilcode.util.ThreadUtils.SimpleTask
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy
 import com.bumptech.glide.request.RequestOptions
@@ -58,7 +54,6 @@ import xn.hxp.weidith.*
 import java.lang.Runnable
 import java.net.ConnectException
 import java.net.SocketTimeoutException
-import java.nio.charset.StandardCharsets
 
 //化学品-归还   StorageDialog  柜字信息
 class ChemicalsAlsoActivity : BaseActivity() {
@@ -326,19 +321,6 @@ class ChemicalsAlsoActivity : BaseActivity() {
 
         }
 
-        viewBinding.edCont.setOnClickListener {
-            val edDialog = EdContDialog(this, object : EdContDialog.IClickLit {
-                override fun onClickClo(str: String?) {
-                    if (str != null) {
-                        viewBinding.edCont.text = "$str"
-                    } else {
-                        useList()
-                    }
-                }
-            })
-            edDialog.show()
-        }
-
         //列表查询  EdContDialog
         viewBinding.reQuy.setOnClickListener {
             page = 1
@@ -349,7 +331,7 @@ class ChemicalsAlsoActivity : BaseActivity() {
             page = 1
             mCabinetId = null
             mDoorId = null
-            viewBinding.edCont.text = ""
+            viewBinding.edCont.setText("")
             viewBinding.cabinetName.text = "化学品柜"
             useList()
         }
@@ -418,7 +400,7 @@ class ChemicalsAlsoActivity : BaseActivity() {
             }
             //
             print.types = "${mDataBean.chemicalCategoryName}"
-            PrintTool.INSTANCE.print(mDataBean.isGr,mDataBean.belongType == 2, print)
+            PrintTool.INSTANCE.print(mDataBean.isGr, mDataBean.belongType == 2, print)
         }, { throwable ->
             dismissLoading()
             showNetError(throwable)
@@ -1337,7 +1319,12 @@ class ChemicalsAlsoActivity : BaseActivity() {
         viewBinding.revert.isChecked = true
         viewBinding.revert.isEnabled = true
         viewBinding.chemicalName.text = "${mDataBean.chemicalName}"
-        viewBinding.chemicalName.isSelected = true
+        viewBinding.chemicalName.setOnClickListener {
+            TextTool.showPop(
+                this,
+                viewBinding.chemicalName
+            )
+        }
         viewBinding.chemicalLevelName.text = "${mDataBean.chemicalLevelName}"
         viewBinding.chemicalCategoryName.text = "${mDataBean.chemicalCategoryName}"
         viewBinding.tagCode.text = "编码${mDataBean.tagCode}"

+ 13 - 0
app/src/main/java/xn/hxp/ui/uses/ProcessedActivity.kt

@@ -21,6 +21,7 @@ import com.rc.httpcore.HttpConfig
 import com.rc.httpcore.apk.ProcessedBean
 import com.rc.httpcore.client.ApiRepository
 import com.rc.httpcore.client.HttpTool
+import xn.hxp.weidith.TextTool
 import java.util.*
 
 
@@ -234,6 +235,12 @@ class ProcessedActivity : BaseActivity() {
                 viewBinding.collectTimeAging.text = "${datas.collectTimeAging}小时"
                 if (datas.chemicalName != null) {
                     viewBinding.chemicalName.text = "${datas.chemicalName}"
+                    viewBinding.chemicalName.setOnClickListener {
+                        TextTool.showPop(
+                            this,
+                            viewBinding.chemicalName
+                        )
+                    }
                 }
 
                 viewBinding.position.text = "${datas.position}层"
@@ -275,6 +282,12 @@ class ProcessedActivity : BaseActivity() {
                 } else {
                     viewBinding.warnContent.text = "超时未归还"
                 }
+                viewBinding.warnContent.setOnClickListener {
+                    TextTool.showPop(
+                        this,
+                        viewBinding.warnContent
+                    )
+                }
                 if (datas.rfidCode != null) {
                     viewBinding.chemicalCode.visibility = View.VISIBLE
                     viewBinding.chemicalCode.text = "-${datas.rfidCode}"

+ 38 - 29
app/src/main/java/xn/hxp/ui/warehousing/ChemicalLabelingActivity.kt

@@ -1,38 +1,43 @@
 package xn.hxp.ui.warehousing
 
-import android.os.Bundle
 import android.os.CountDownTimer
 import android.os.Handler
 import android.os.Looper
-import android.view.LayoutInflater
 import android.view.View
 import android.widget.AdapterView
 import androidx.core.content.ContextCompat
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.viewbinding.ViewBinding
+import com.blankj.utilcode.util.LogUtils
 import com.bumptech.glide.Glide
 import com.bumptech.glide.load.engine.DiskCacheStrategy
 import com.bumptech.glide.request.RequestOptions
-import com.caysn.autoreplyprint.AutoReplyPrint
-import xn.hxp.R
-import xn.hxp.comm.Constants
-import xn.hxp.databinding.ActivityChemicalLabelingBinding
-import xn.hxp.ui.PrintBean
-import xn.hxp.ui.adapter.ChemicalLabelingAdapter
-import xn.hxp.ui.adapter.CustomSpinnerTwoAdapter
-import xn.hxp.ui.verify.TwoVerificationActivity
-import xn.hxp.utils.*
-import xn.hxp.weidith.*
-import com.blankj.utilcode.util.LogUtils
 import com.rc.core.ui.activity.BaseActivity
-import com.rc.httpcore.HttpClient
 import com.rc.httpcore.HttpConfig
 import com.rc.httpcore.bean.LockVoListBean
 import com.rc.httpcore.bean.ReturnDetailsBean
 import com.rc.httpcore.client.ApiRepository
 import com.rc.httpcore.client.HttpTool
 import com.sun.jna.Pointer
+import xn.hxp.R
 import xn.hxp.app.ChemicalApp
+import xn.hxp.comm.Constants
+import xn.hxp.databinding.ActivityChemicalLabelingBinding
+import xn.hxp.ui.PrintBean
+import xn.hxp.ui.adapter.ChemicalLabelingAdapter
+import xn.hxp.ui.adapter.CustomSpinnerTwoAdapter
+import xn.hxp.ui.verify.TwoVerificationActivity
+import xn.hxp.utils.AudioPlayer
+import xn.hxp.utils.HandlerUtil
+import xn.hxp.utils.PrintTool
+import xn.hxp.utils.SharedPreferencesHelper
+import xn.hxp.utils.TimeUpdater
+import xn.hxp.utils.UiManager
+import xn.hxp.weidith.AirBottleDialog
+import xn.hxp.weidith.AirBottleNewDialog
+import xn.hxp.weidith.CustomDialog
+import xn.hxp.weidith.StorageDialog
+import xn.hxp.weidith.TextTool
 
 //标签列表
 class ChemicalLabelingActivity : BaseActivity() {
@@ -91,24 +96,11 @@ class ChemicalLabelingActivity : BaseActivity() {
             page = 1
             labelingData()
         }
-        viewBinding.edCont.setOnClickListener {
-            val edDialog = EdContTwoDialog(this, object : EdContTwoDialog.IClickLit {
-                override fun onClickClo(str: String?) {
-                    if (str != null) {
-                        viewBinding.edCont.text = "$str"
-                    } else {
-                        page = 1
-                        labelingData()
-                    }
-                }
-            })
-            edDialog.show()
-        }
         viewBinding.resetting.setOnClickListener {
             page = 1
             mCabinetId = null
             mDoorId = null
-            viewBinding.edCont.text = ""
+            viewBinding.edCont.setText("")
             viewBinding.cabinetName.text = "化学品柜"
             sPinner.setSelection(0)
             labelingData()
@@ -273,6 +265,18 @@ class ChemicalLabelingActivity : BaseActivity() {
         sPrinDate.add("级别")
         sPrinDate.add("管控")
         sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
+        sPrinDate.add("非管控")
         LogUtils.i("=======当前级别条数${sPrinDate.size}")
 
         val customAdapter = CustomSpinnerTwoAdapter(this, sPrinDate!!)
@@ -870,7 +874,12 @@ class ChemicalLabelingActivity : BaseActivity() {
         viewBinding.relOne.visibility = View.GONE
         viewBinding.linTow.visibility = View.VISIBLE
         viewBinding.chemicalName.text = "${data.chemicalName}"
-        viewBinding.chemicalName.isSelected = true
+        viewBinding.chemicalName.setOnClickListener {
+            TextTool.showPop(
+                this,
+                viewBinding.chemicalName
+            )
+        }
         viewBinding.tagCode.text = "编码${data.tagCode}"
         viewBinding.chemicalLevelName.text = "${data.chemicalLevelName}"
         viewBinding.chemicalCategoryName.text = "${data.chemicalCategoryName}"

+ 44 - 0
app/src/main/java/xn/hxp/weidith/CustomAttachPopup.java

@@ -0,0 +1,44 @@
+package xn.hxp.weidith;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.blankj.utilcode.util.ClickUtils;
+import com.lxj.xpopup.core.AttachPopupView;
+
+import xn.hxp.R;
+
+public class CustomAttachPopup extends AttachPopupView {
+    private String msg;
+
+    public CustomAttachPopup(@NonNull Context context, String msg) {
+        super(context);
+        this.msg = msg;
+    }
+
+    @Override
+    protected int getImplLayoutId() {
+        return R.layout.custom_bubble_attach_popup;
+    }
+
+    @Override
+    protected void onCreate() {
+        super.onCreate();
+        if (TextUtils.isEmpty(msg)) {
+            dismiss();
+            return;
+        }
+        TextView textView = findViewById(R.id.tv);
+        textView.setText(msg);
+        textView.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                dismiss();
+            }
+        });
+    }
+}

+ 0 - 52
app/src/main/java/xn/hxp/weidith/EdContDialog.kt

@@ -1,52 +0,0 @@
-package xn.hxp.weidith
-
-import android.app.Dialog
-import android.content.Context
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.os.Handler
-import android.os.Looper
-import android.view.Gravity
-import android.view.Window
-import android.view.WindowManager
-import android.widget.Button
-import android.widget.EditText
-import xn.hxp.R
-
-//所有的搜索框
-class EdContDialog(private val ct: Context, private var iLint: IClickLit) : Dialog(ct) {
-    private var mHandler: Handler = Handler(Looper.getMainLooper())
-    init {
-        requestWindowFeature(Window.FEATURE_NO_TITLE)
-        setContentView(R.layout.ed_cont_dialog)
-        window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        window?.setGravity(Gravity.CENTER)
-        window?.setLayout(
-            WindowManager.LayoutParams.MATCH_PARENT,
-            WindowManager.LayoutParams.WRAP_CONTENT
-        )
-    }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        findViewById<Button>(R.id.comt).setOnClickListener {
-            val toString = findViewById<EditText>(R.id.edCont).text.toString()
-            dismiss()
-            iLint.onClickClo(toString)
-        }
-        mHandler.postDelayed({
-            dismiss()
-        }, 1000 * 15) // 15秒后关闭对话框
-
-    }
-
-    interface IClickLit {
-        fun onClickClo(str: String?)
-    }
-
-    override fun onStop() {
-        super.onStop()
-        mHandler.removeCallbacksAndMessages(null)
-    }
-}

+ 0 - 51
app/src/main/java/xn/hxp/weidith/EdContThDialog.kt

@@ -1,51 +0,0 @@
-package xn.hxp.weidith
-
-import android.app.Dialog
-import android.content.Context
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.os.Handler
-import android.os.Looper
-import android.view.Gravity
-import android.view.Window
-import android.view.WindowManager
-import android.widget.Button
-import android.widget.EditText
-import xn.hxp.R
-
-class EdContThDialog (private val ct: Context, private var iLint: IClickLit) : Dialog(ct) {
-    private var mHandler: Handler = Handler(Looper.getMainLooper())
-    init {
-        requestWindowFeature(Window.FEATURE_NO_TITLE)
-        setContentView(R.layout.ed_cont_th_dialog)
-        window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        window?.setGravity(Gravity.CENTER)
-        window?.setLayout(
-            WindowManager.LayoutParams.MATCH_PARENT,
-            WindowManager.LayoutParams.WRAP_CONTENT
-        )
-    }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        findViewById<Button>(R.id.comt).setOnClickListener {
-            val toString = findViewById<EditText>(R.id.edCont).text.toString()
-            dismiss()
-            iLint.onClickClo(toString)
-        }
-        mHandler.postDelayed({
-            dismiss()
-        }, 1000 * 15) // 15秒后关闭对话框
-
-    }
-
-    interface IClickLit {
-        fun onClickClo(str: String?)
-    }
-
-    override fun onStop() {
-        super.onStop()
-        mHandler.removeCallbacksAndMessages(null)
-    }
-}

+ 0 - 51
app/src/main/java/xn/hxp/weidith/EdContTwoDialog.kt

@@ -1,51 +0,0 @@
-package xn.hxp.weidith
-
-import android.app.Dialog
-import android.content.Context
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.os.Handler
-import android.os.Looper
-import android.view.Gravity
-import android.view.Window
-import android.view.WindowManager
-import android.widget.Button
-import android.widget.EditText
-import xn.hxp.R
-
-class EdContTwoDialog (private val ct: Context, private var iLint: IClickLit) : Dialog(ct) {
-    private var mHandler: Handler = Handler(Looper.getMainLooper())
-    init {
-        requestWindowFeature(Window.FEATURE_NO_TITLE)
-        setContentView(R.layout.ed_cont_two_dialog)
-        window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        window?.setGravity(Gravity.CENTER)
-        window?.setLayout(
-            WindowManager.LayoutParams.MATCH_PARENT,
-            WindowManager.LayoutParams.WRAP_CONTENT
-        )
-    }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        findViewById<Button>(R.id.comt).setOnClickListener {
-            val toString = findViewById<EditText>(R.id.edCont).text.toString()
-            dismiss()
-            iLint.onClickClo(toString)
-        }
-        mHandler.postDelayed({
-            dismiss()
-        }, 1000 * 15) // 15秒后关闭对话框
-
-    }
-
-    interface IClickLit {
-        fun onClickClo(str: String?)
-    }
-
-    override fun onStop() {
-        super.onStop()
-        mHandler.removeCallbacksAndMessages(null)
-    }
-}

+ 40 - 0
app/src/main/java/xn/hxp/weidith/MyTextView.java

@@ -0,0 +1,40 @@
+//package xn.hxp.weidith;
+//
+//import android.annotation.SuppressLint;
+//import android.content.Context;
+//import android.util.AttributeSet;
+//import android.view.View;
+//import android.widget.TextView;
+//
+//import androidx.annotation.Nullable;
+//
+//import com.blankj.utilcode.util.ClickUtils;
+//import com.lxj.xpopup.XPopup;
+//
+//@SuppressLint("AppCompatCustomView")
+//public class MyTextView extends TextView {
+//    public MyTextView(Context context, @Nullable AttributeSet attrs) {
+//        super(context, attrs);
+//    }
+//
+//    public MyTextView(Context context) {
+//        super(context);
+//        setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+//            @Override
+//            public void onDebouncingClick(View v) {
+//                new XPopup.Builder(getContext())
+//                        .hasShadowBg(false)
+//                        .isTouchThrough(true)
+//                        .isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
+//                        .atView(v)
+//                        .isCenterHorizontal(true)
+//                        .hasShadowBg(false) // 去掉半透明背景
+//                        .asCustom(new CustomBubbleAttachPopup(context, getText().toString()))
+//                        .show();
+//            }
+//        });
+//    }
+//
+//
+//
+//}

+ 33 - 0
app/src/main/java/xn/hxp/weidith/TextTool.java

@@ -0,0 +1,33 @@
+package xn.hxp.weidith;
+
+import android.content.Context;
+import android.text.Layout;
+import android.text.TextUtils;
+import android.widget.TextView;
+
+import com.lxj.xpopup.XPopup;
+
+public class TextTool {
+    // 判断TextView是否因溢出而显示省略号
+    public static boolean isTextOverflow(TextView textView) {
+        Layout layout = textView.getLayout();
+        if (layout == null) return false;
+        // 检查最后一行是否被截断
+        int lineCount = layout.getLineCount();
+        return lineCount > 0 && layout.getEllipsisCount(lineCount - 1) > 0;
+    }
+
+    public static void showPop(Context context, TextView textView) {
+        String text = textView.getText().toString();
+        if (!TextUtils.isEmpty(text)) {
+            new XPopup.Builder(context)
+                    .hasShadowBg(false)
+                    .isTouchThrough(true)
+                    .isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
+                    .atView(textView)
+                    .hasShadowBg(false) // 去掉半透明背景
+                    .asCustom(new CustomAttachPopup(context, text))
+                    .show();
+        }
+    }
+}

+ 26 - 0
app/src/main/res/drawable/attach_popup.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- 底部阴影层(偏移 1dp 模拟阴影) -->
+    <item android:top="1dp"> <!-- shadowDy=1 的偏移效果 -->
+        <shape android:shape="rectangle">
+            <!-- 阴影颜色 #4d000000(半透明黑) -->
+            <solid android:color="#4d000000" />
+            <!-- 圆角 3dp(与主体一致) -->
+            <corners android:radius="3dp" />
+        </shape>
+    </item>
+
+    <!-- 主体层(白色矩形) -->
+    <item>
+        <shape android:shape="rectangle">
+            <!-- 填充白色 #ffffffff -->
+            <solid android:color="#ffffffff" />
+            <!-- 四角圆角 3dp -->
+            <corners
+                android:bottomLeftRadius="3dp"
+                android:bottomRightRadius="3dp"
+                android:topLeftRadius="3dp"
+                android:topRightRadius="3dp" />
+        </shape>
+    </item>
+</layer-list>

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

@@ -207,7 +207,6 @@
                         android:gravity="center_vertical"
                         android:hint="输入化学品名称搜索"
                         android:imeOptions="actionSearch"
-                        android:maxLines="1"
                         android:paddingHorizontal="10px"
                         android:textAppearance="@style/input_hint_text_size" />
 
@@ -752,7 +751,7 @@
                         android:layout_width="260px"
                         android:layout_height="50px"
                         android:layout_marginStart="10px"
-                        android:ellipsize="marquee"
+
                         android:focusable="true"
                         android:focusableInTouchMode="true"
                         android:gravity="center"

+ 1 - 1
app/src/main/res/layout/activity_already.xml

@@ -247,7 +247,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:layout_marginStart="15px"
-                    android:ellipsize="marquee"
+
                     android:focusable="true"
                     android:focusableInTouchMode="true"
                     android:marqueeRepeatLimit="marquee_forever"

+ 0 - 1
app/src/main/res/layout/activity_checklists.xml

@@ -55,7 +55,6 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="6dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
                 android:textColor="@color/white" />
 
         </LinearLayout>

+ 1 - 7
app/src/main/res/layout/activity_chemical_labeling.xml

@@ -55,7 +55,6 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="6dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
                 android:textColor="@color/white" />
 
         </LinearLayout>
@@ -208,7 +207,7 @@
 
                         </RelativeLayout>
 
-                        <TextView
+                        <EditText
                             android:id="@+id/edCont"
                             android:layout_width="160dp"
                             android:layout_height="30dp"
@@ -472,11 +471,6 @@
                     android:layout_width="300px"
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
-                    android:ellipsize="marquee"
-                    android:focusable="true"
-                    android:focusableInTouchMode="true"
-                    android:marqueeRepeatLimit="marquee_forever"
-                    android:singleLine="true"
                     android:text="化学品名称化学品名称"
                     android:textColor="@color/black"
                     android:textSize="15sp" />

+ 2 - 6
app/src/main/res/layout/activity_chemicals_also.xml

@@ -181,7 +181,7 @@
                         </RelativeLayout>
 
 
-                        <TextView
+                        <EditText
                             android:id="@+id/edCont"
                             android:layout_width="214dp"
                             android:layout_height="30dp"
@@ -431,11 +431,7 @@
                     android:layout_width="180px"
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
-                    android:ellipsize="marquee"
-                    android:focusable="true"
-                    android:focusableInTouchMode="true"
-                    android:marqueeRepeatLimit="marquee_forever"
-                    android:singleLine="true"
+
                     android:text="化学品名称化学品名称"
                     android:textColor="@color/black"
                     android:textSize="15sp" />

+ 1 - 1
app/src/main/res/layout/activity_demonstrate.xml

@@ -53,7 +53,7 @@
                 android:layout_marginLeft="15dp"
                 android:layout_marginTop="10dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/activity_electronic_ledger.xml

@@ -55,7 +55,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="6dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </LinearLayout>

+ 1 - 1
app/src/main/res/layout/activity_facial_card.xml

@@ -55,7 +55,7 @@
                 android:layout_marginLeft="15dp"
                 android:layout_marginTop="10dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/activity_inquiry.xml

@@ -56,7 +56,6 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="6dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
                 android:textColor="@color/white" />
 
         </LinearLayout>
@@ -154,6 +153,7 @@
         <RelativeLayout
             android:id="@+id/relOne"
             android:layout_width="match_parent"
+            android:visibility="gone"
             android:layout_height="match_parent">
 
             <LinearLayout

+ 1 - 1
app/src/main/res/layout/activity_ledger.xml

@@ -55,7 +55,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="6dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </LinearLayout>

+ 28 - 10
app/src/main/res/layout/activity_main.xml

@@ -28,35 +28,52 @@
                 android:layout_height="match_parent"
                 android:layout_weight="0.4">
 
-                <RelativeLayout
+                <LinearLayout
                     android:id="@+id/gst"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_centerHorizontal="true"
                     android:layout_gravity="center"
-                    android:layout_marginRight="8dp">
+                    android:layout_marginEnd="8dp"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal">
 
-                    <TextView
-                        android:id="@+id/tvNoName"
+                    <LinearLayout
+                        android:id="@+id/levelLL"
                         android:layout_width="20dp"
                         android:layout_height="35dp"
                         android:background="@drawable/round_button_gb"
-                        android:gravity="center"
-                        android:textColor="@color/white"
-                        android:textSize="9sp" />
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:id="@+id/tvNoName"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:textColor="@color/white"
+                            android:textSize="9sp" />
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:text="级"
+                            android:textColor="@color/white"
+                            android:textSize="9sp" />
+                    </LinearLayout>
 
                     <TextView
                         android:id="@+id/subName"
                         android:layout_width="248dp"
                         android:layout_height="30dp"
-                        android:layout_centerVertical="true"
-                        android:layout_toRightOf="@+id/tvNoName"
                         android:background="@drawable/bg_hua_bei"
                         android:gravity="center_vertical"
                         android:padding="6dp"
                         android:textColor="@color/white" />
 
-                </RelativeLayout>
+                </LinearLayout>
 
                 <LinearLayout
                     android:id="@+id/gs"
@@ -586,6 +603,7 @@
                 android:layout_below="@id/caozuo"
                 android:layout_centerHorizontal="true"
                 android:layout_marginTop="6px"
+                android:gravity="center_horizontal"
                 android:text="操\n作\n教\n程"
                 android:textColor="@color/white"
                 android:textSize="20px" />

+ 1 - 1
app/src/main/res/layout/activity_msds.xml

@@ -55,7 +55,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="6dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
         </LinearLayout>
     </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/activity_query_details.xml

@@ -55,7 +55,7 @@
                 android:layout_marginLeft="15dp"
                 android:layout_marginTop="10dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/activity_scan_code_two.xml

@@ -56,7 +56,7 @@
                 android:layout_marginLeft="15dp"
                 android:layout_marginTop="10dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </RelativeLayout>

+ 2 - 2
app/src/main/res/layout/activity_setting.xml

@@ -292,7 +292,7 @@
                             android:drawablePadding="20dp"
                             android:hint="密码"
                             android:maxLength="11"
-                            android:maxLines="1"
+
                             android:paddingEnd="20dp" />
 
                     </LinearLayout>
@@ -341,7 +341,7 @@
                             android:drawableStart="@drawable/ic_ble"
                             android:drawablePadding="20dp"
                             android:hint="MAC地址"
-                            android:maxLines="1"
+
                             android:paddingEnd="20dp" />
 
                     </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/activity_swipe_code_two.xml

@@ -57,7 +57,7 @@
                 android:layout_marginLeft="15dp"
                 android:layout_marginTop="10dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/activity_two_person.xml

@@ -56,7 +56,7 @@
                 android:layout_marginLeft="15dp"
                 android:layout_marginTop="10dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/activity_use.xml

@@ -55,7 +55,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="6dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </LinearLayout>

+ 1 - 1
app/src/main/res/layout/activity_warehousing.xml

@@ -54,7 +54,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="6dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </LinearLayout>

+ 1 - 1
app/src/main/res/layout/activity_warning_events.xml

@@ -55,7 +55,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="6dp"
                 android:layout_toRightOf="@+id/tvTitle"
-                android:maxLines="1"
+
                 android:textColor="@color/white" />
 
         </LinearLayout>

+ 1 - 6
app/src/main/res/layout/activity_waste_chemicals.xml

@@ -179,7 +179,7 @@
                         </RelativeLayout>
 
 
-                        <TextView
+                        <EditText
                             android:id="@+id/edCont"
                             android:layout_width="214dp"
                             android:layout_height="30dp"
@@ -438,12 +438,7 @@
                     android:layout_width="300px"
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
-                    android:ellipsize="marquee"
-                    android:focusable="true"
-                    android:focusableInTouchMode="true"
                     android:gravity="center"
-                    android:marqueeRepeatLimit="marquee_forever"
-                    android:singleLine="true"
                     android:textColor="@color/black"
                     android:textSize="15sp" />
 

+ 18 - 0
app/src/main/res/layout/custom_bubble_attach_popup.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="60px"
+    android:background="@drawable/attach_popup"
+    android:gravity="center"
+    android:paddingHorizontal="120px">
+
+    <TextView
+        android:id="@+id/tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="#333"
+        android:textSize="20px" />
+
+
+</LinearLayout>

+ 35 - 8
app/src/main/res/layout/custom_spinner_item.xml

@@ -1,11 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/spinnerItemText"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="30dp"
-    android:background="@color/white"
-    android:gravity="center"
-    android:textColor="@color/black"
-    android:textSize="12sp">
+    android:layout_height="match_parent"
+    tools:ignore="PxUsage">
 
-</TextView>
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:orientation="vertical"
+        android:paddingHorizontal="20px">
+
+        <TextView
+            android:id="@+id/spinnerItemText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="10px"
+            android:layout_marginBottom="12px"
+            android:background="@color/white"
+            android:gravity="center"
+            android:text="文字文字"
+            android:textColor="#333"
+            android:textSize="20px" />
+
+        <View
+            android:id="@+id/line"
+            android:layout_width="180px"
+            android:layout_height="1px"
+            android:layout_gravity="center_horizontal"
+            android:background="#D8D8D8" />
+
+
+    </LinearLayout>
+
+</RelativeLayout>

+ 1 - 3
app/src/main/res/layout/custom_spinner_tow_item.xml

@@ -6,6 +6,4 @@
     android:background="@color/white"
     android:gravity="center"
     android:textColor="@color/black"
-    android:textSize="12sp">
-
-</TextView>
+    android:textSize="12sp"></TextView>

+ 9 - 11
app/src/main/res/layout/fragment_query_one.xml

@@ -34,8 +34,8 @@
                     android:layout_centerVertical="true"
                     android:layout_marginLeft="7.5dp"
                     android:text="类别"
-                    android:textSize="12sp"
-                    android:textColor="@color/black" />
+                    android:textColor="@color/black"
+                    android:textSize="12sp" />
 
                 <ImageView
                     android:layout_width="wrap_content"
@@ -49,8 +49,8 @@
             <RelativeLayout
                 android:layout_width="75dp"
                 android:layout_height="30dp"
-                android:layout_marginRight="6dp"
                 android:layout_marginLeft="6dp"
+                android:layout_marginRight="6dp"
                 android:background="@drawable/bg_shu_ru_kuang_twoe">
 
                 <Spinner
@@ -59,8 +59,8 @@
                     android:layout_height="30dp"
                     android:layout_centerVertical="true"
                     android:background="@null"
-                    android:gravity="center"
                     android:entries="@array/spinner_spLev"
+                    android:gravity="center"
                     android:padding="2dp"
                     android:text="级别"
                     android:textColor="@color/black" />
@@ -74,18 +74,16 @@
 
             </RelativeLayout>
 
-
-
-            <TextView
+            <EditText
                 android:id="@+id/edCont"
                 android:layout_width="261dp"
                 android:layout_height="30dp"
                 android:layout_marginLeft="5dp"
                 android:layout_toLeftOf="@+id/re3"
                 android:background="@drawable/bg_shu_ru_kuang_twoe"
+                android:gravity="center_vertical"
                 android:hint="化学品名/拼音首字母/CAS"
                 android:imeOptions="actionDone"
-                android:gravity="center_vertical"
                 android:padding="4dp"
                 android:singleLine="true"
                 android:textSize="12sp" />
@@ -115,10 +113,10 @@
 
             <RelativeLayout
                 android:id="@+id/re3"
-                android:visibility="gone"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignParentRight="true">
+                android:layout_alignParentRight="true"
+                android:visibility="gone">
 
                 <ImageView
                     android:layout_width="35dp"
@@ -296,8 +294,8 @@
             android:id="@+id/butNext"
             android:layout_width="65dp"
             android:layout_height="25dp"
-            android:layout_marginLeft="10dp"
             android:layout_centerVertical="true"
+            android:layout_marginLeft="10dp"
             android:layout_toRightOf="@+id/rvPage"
             android:background="@drawable/bg_sou_suo_page"
             android:text="下一页"

+ 24 - 23
app/src/main/res/layout/item_already.xml

@@ -2,7 +2,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
+    android:layout_height="70px"
     tools:ignore="PxUsage">
 
     <CheckBox
@@ -22,8 +22,8 @@
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/selectCB"
-        android:ellipsize="middle"
-        android:maxLines="2"
+
+
         android:paddingStart="15px"
         android:text="申领单号"
         android:textColor="#333333"
@@ -32,11 +32,11 @@
     <TextView
         android:id="@+id/name"
         android:layout_width="200px"
-        android:layout_height="wrap_content"
+        android:layout_height="match_parent"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/alreadyCodeTV"
-        android:ellipsize="middle"
-        android:maxLines="2"
+        android:gravity="center_vertical"
+
         android:paddingStart="15px"
         android:text="名称"
         android:textColor="#333333"
@@ -48,8 +48,8 @@
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/name"
-        android:ellipsize="middle"
-        android:maxLines="2"
+
+
         android:paddingStart="15px"
         android:text="类别"
         android:textColor="#333333"
@@ -61,8 +61,8 @@
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/type"
-        android:ellipsize="middle"
-        android:maxLines="2"
+
+
         android:paddingStart="15px"
         android:text="CAS"
         android:textColor="#333333"
@@ -74,8 +74,8 @@
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/cas"
-        android:ellipsize="middle"
-        android:maxLines="2"
+
+
         android:paddingStart="15px"
         android:text="纯度"
         android:textColor="#333333"
@@ -87,8 +87,8 @@
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/purity"
-        android:ellipsize="middle"
-        android:maxLines="2"
+
+
         android:paddingStart="15px"
         android:text="规格"
         android:textColor="#333333"
@@ -97,11 +97,12 @@
     <TextView
         android:id="@+id/belongTV"
         android:layout_width="120px"
-        android:layout_height="wrap_content"
+        android:layout_height="match_parent"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/specs"
-        android:ellipsize="middle"
-        android:maxLines="2"
+        android:gravity="center_vertical"
+
+
         android:paddingStart="15px"
         android:text="归属人"
         android:textColor="#333333"
@@ -113,8 +114,8 @@
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/belongTV"
-        android:ellipsize="middle"
-        android:maxLines="2"
+
+
         android:paddingStart="15px"
         android:text="申领人"
         android:textColor="#333333"
@@ -126,8 +127,8 @@
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/applicantTV"
-        android:ellipsize="middle"
-        android:maxLines="2"
+
+
         android:paddingStart="15px"
         android:text="编码"
         android:textColor="#333333"
@@ -139,8 +140,8 @@
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
         android:layout_toEndOf="@id/code"
-        android:ellipsize="middle"
-        android:maxLines="2"
+
+
         android:paddingStart="15px"
         android:text="存储位置"
         android:textColor="#0183FA"

+ 2 - 2
app/src/main/res/layout/item_door_unlock.xml

@@ -59,7 +59,7 @@
                         android:layout_width="150px"
                         android:layout_height="match_parent"
                         android:gravity="center_vertical"
-                        android:maxLines="2"
+
                         android:text="名称"
                         android:textColor="#ff333333"
                         android:textSize="20px" />
@@ -98,7 +98,7 @@
                         android:layout_width="150px"
                         android:layout_height="match_parent"
                         android:gravity="center_vertical"
-                        android:maxLines="2"
+
                         android:text="名称"
                         android:textColor="#ff333333"
                         android:textSize="20px" />

+ 2 - 4
app/src/main/res/layout/item_in_storage.xml

@@ -14,7 +14,7 @@
         android:layout_marginStart="10dp"
         android:layout_weight="1"
         android:duplicateParentState="true"
-        android:ellipsize="marquee"
+
         android:focusable="true"
         android:focusableInTouchMode="true"
         android:marqueeRepeatLimit="marquee_forever"
@@ -28,7 +28,6 @@
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:duplicateParentState="true"
-        android:ellipsize="marquee"
         android:focusable="true"
         android:focusableInTouchMode="true"
         android:marqueeRepeatLimit="marquee_forever"
@@ -42,7 +41,6 @@
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:duplicateParentState="true"
-        android:ellipsize="marquee"
         android:focusable="true"
         android:focusableInTouchMode="true"
         android:marqueeRepeatLimit="marquee_forever"
@@ -64,7 +62,7 @@
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:duplicateParentState="true"
-        android:ellipsize="marquee"
+
         android:focusable="true"
         android:focusableInTouchMode="true"
         android:marqueeRepeatLimit="marquee_forever"

+ 1 - 1
app/src/main/res/layout/item_inquiry.xml

@@ -15,7 +15,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_weight="1"
-            android:ellipsize="marquee"
+
             android:focusable="true"
             android:focusableInTouchMode="true"
             android:gravity="center"

+ 1 - 1
app/src/main/res/layout/item_usage_label_dialog.xml

@@ -15,7 +15,7 @@
             android:layout_width="match_parent"
             android:layout_height="25dp"
             android:layout_weight="1"
-            android:ellipsize="marquee"
+
             android:focusable="true"
             android:focusableInTouchMode="true"
             android:gravity="center"

+ 39 - 37
app/src/main/res/layout/usage_label_dialog.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:tools="http://schemas.android.com/tools"
     android:gravity="center_vertical"
     android:orientation="vertical">
 
@@ -32,9 +32,9 @@
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
                 android:layout_marginLeft="8dp"
                 android:layout_toRightOf="@+id/imgA"
-                android:layout_centerVertical="true"
                 android:text="柜门已开,取出要领用的化学品"
                 android:textColor="@color/black"
                 android:textSize="15sp" />
@@ -54,8 +54,8 @@
                     android:id="@+id/cabinet"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:textSize="12sp"
-                    android:textColor="@color/black" />
+                    android:textColor="@color/black"
+                    android:textSize="12sp" />
 
                 <Button
                     android:id="@+id/butOpen"
@@ -63,15 +63,15 @@
                     android:layout_height="30dp"
                     android:layout_alignParentRight="true"
                     android:layout_centerVertical="true"
+                    android:layout_marginLeft="6dp"
+                    android:background="@drawable/bg_sou_suo"
                     android:paddingLeft="10dp"
-                    android:paddingRight="10dp"
                     android:paddingTop="5dp"
-                    android:visibility="gone"
+                    android:paddingRight="10dp"
                     android:paddingBottom="5dp"
-                    android:layout_marginLeft="6dp"
-                    android:background="@drawable/bg_sou_suo"
                     android:text="再次开门"
-                    android:textColor="@color/white" />
+                    android:textColor="@color/white"
+                    android:visibility="gone" />
 
             </LinearLayout>
 
@@ -81,8 +81,8 @@
                 android:layout_alignParentRight="true"
                 android:layout_centerVertical="true"
                 android:text="请扫描化学品标签"
-                android:textSize="12sp"
-                android:textColor="@color/black" />
+                android:textColor="@color/black"
+                android:textSize="12sp" />
         </RelativeLayout>
 
         <View
@@ -104,62 +104,63 @@
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:textSize="12sp"
                 android:text="化学品名称"
-                android:textColor="@color/black" />
+                android:textColor="@color/black"
+                android:textSize="12sp" />
 
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:textSize="12sp"
                 android:text="编码"
-                android:textColor="@color/black" />
+                android:textColor="@color/black"
+                android:textSize="12sp" />
 
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:textSize="12sp"
                 android:text="规格"
-                android:textColor="@color/black" />
+                android:textColor="@color/black"
+                android:textSize="12sp" />
 
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:textSize="12sp"
                 android:text="领用量"
-                android:textColor="@color/black" />
+                android:textColor="@color/black"
+                android:textSize="12sp" />
 
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                android:textSize="12sp"
                 android:gravity="center"
                 android:text="领用时效"
-                android:textColor="@color/black" />
+                android:textColor="@color/black"
+                android:textSize="12sp" />
 
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:textSize="12sp"
                 android:text="整瓶领用"
-                android:textColor="@color/black" />
+                android:textColor="@color/black"
+                android:textSize="12sp" />
+
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:gravity="center"
                 android:text=" "
-                android:textSize="12sp"
-                android:textColor="@color/black" />
+                android:textColor="@color/black"
+                android:textSize="12sp" />
         </LinearLayout>
 
         <ImageView
@@ -168,36 +169,37 @@
             android:layout_height="wrap_content"
             android:layout_gravity="center"
             android:layout_marginTop="22dp"
-            android:visibility="gone"
-            android:background="@mipmap/img_gh_smsb" />
+            android:background="@mipmap/img_gh_smsb"
+            android:visibility="gone" />
 
         <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/reView"
             android:layout_width="match_parent"
             android:layout_height="200dp"
-            tools:listitem="@layout/item_usage_label_dialog"
-            android:visibility="visible" />
+            android:visibility="visible"
+            tools:listitem="@layout/item_usage_label_dialog" />
     </LinearLayout>
 
     <Button
         android:id="@+id/butClos"
-        android:layout_width="110dp"
-        android:layout_height="30dp"
+        android:layout_width="250px"
+        android:layout_height="70px"
         android:layout_gravity="center"
-        android:layout_marginTop="17dp"
+        android:layout_marginTop="15dp"
         android:background="@drawable/bg_quan_xin_twoe"
         android:gravity="center"
         android:text="关闭"
-        android:textColor="@color/white" />
+        android:textColor="@color/white"
+        android:textSize="30px" />
 
     <LinearLayout
         android:id="@+id/linTow"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
-        android:visibility="gone"
         android:layout_marginTop="17dp"
-        android:orientation="horizontal">
+        android:orientation="horizontal"
+        android:visibility="gone">
 
         <Button
             android:id="@+id/cloe"
@@ -212,8 +214,8 @@
             android:layout_width="110dp"
             android:layout_height="30dp"
             android:layout_marginLeft="10dp"
-            android:textColor="@color/white"
             android:background="@drawable/bg_quan_xin_twoe"
-            android:text="领用" />
+            android:text="领用"
+            android:textColor="@color/white" />
     </LinearLayout>
 </LinearLayout>

+ 27 - 27
app/src/main/res/layout/weigh_dialog.xml

@@ -66,8 +66,8 @@
                         android:layout_marginLeft="10dp"
                         android:layout_toRightOf="@+id/img"
                         android:text="规格"
-                        android:textSize="12sp"
-                        android:textColor="@color/black" />
+                        android:textColor="@color/black"
+                        android:textSize="12sp" />
                 </RelativeLayout>
 
                 <TextView
@@ -107,18 +107,18 @@
                         android:layout_marginLeft="10dp"
                         android:layout_toRightOf="@+id/imgB"
                         android:text="总重量"
-                        android:textSize="12sp"
-                        android:textColor="@color/black" />
+                        android:textColor="@color/black"
+                        android:textSize="12sp" />
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_alignParentRight="true"
-                        android:text="量程0~3kg"
-                        android:layout_marginRight="10dp"
-                        android:textSize="9sp"
                         android:layout_centerVertical="true"
-                        android:textColor="@color/purple_99999" />
+                        android:layout_marginRight="10dp"
+                        android:text="量程0~3kg"
+                        android:textColor="@color/purple_99999"
+                        android:textSize="9sp" />
                 </RelativeLayout>
 
                 <RelativeLayout
@@ -128,35 +128,35 @@
 
                     <EditText
                         android:id="@+id/weigh"
-                        android:singleLine="true"
                         android:layout_width="wrap_content"
                         android:layout_height="22dp"
-                        android:layout_marginLeft="8dp"
-                        android:textColor="@color/black"
                         android:layout_centerVertical="true"
+                        android:layout_marginLeft="8dp"
                         android:background="@null"
-                        android:textStyle="bold"
+                        android:hint="请输入重量"
                         android:imeOptions="actionDone"
                         android:inputType="numberDecimal"
-                        android:hint="请输入重量"
-                        android:textSize="15sp" />
+                        android:singleLine="true"
+                        android:textColor="@color/black"
+                        android:textSize="15sp"
+                        android:textStyle="bold" />
 
                     <TextView
-                        android:layout_toRightOf="@+id/weigh"
                         android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_toRightOf="@+id/weigh"
                         android:text="g"
-                        android:textStyle="bold"
                         android:textColor="@color/black"
-                        android:layout_centerVertical="true"
-                        android:layout_height="wrap_content"/>
+                        android:textStyle="bold" />
 
                     <ImageView
                         android:id="@+id/imgType"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
                         android:layout_marginLeft="20dp"
                         android:layout_marginTop="6dp"
-                        android:layout_centerVertical="true"
                         android:layout_toRightOf="@+id/weigh"
                         android:background="@mipmap/icon_cz_bj" />
 
@@ -168,8 +168,8 @@
                         android:padding="8dp"
                         android:singleLine="true"
                         android:text="归零"
-                        android:visibility="gone"
-                        android:textColor="@color/white" />
+                        android:textColor="@color/white"
+                        android:visibility="gone" />
 
                 </RelativeLayout>
             </LinearLayout>
@@ -181,14 +181,14 @@
 
     <TextView
         android:id="@+id/tvClose"
-        android:layout_width="110dp"
-        android:layout_height="32dp"
-        android:layout_marginTop="18dp"
+        android:layout_width="250px"
+        android:layout_height="70px"
         android:layout_gravity="center"
-        android:textColor="@color/white"
-        android:gravity="center"
+        android:layout_marginTop="18dp"
         android:background="@drawable/bg_quan_xin_twoe"
+        android:gravity="center"
         android:text="确定"
-        android:textSize="16sp" />
+        android:textColor="@color/white"
+        android:textSize="30px" />
 
 </LinearLayout>

+ 11 - 0
app/src/main/res/values/styles.xml

@@ -34,6 +34,7 @@
     <style name="input_hint_text_size" parent="TextAppearance.AppCompat">
         <item name="android:textSize">12sp</item>
     </style>
+
     <style name="LoadingDialog" parent="Theme.AppCompat.Light.Dialog">
         <item name="android:windowNoTitle">true</item>
         <item name="android:windowBackground">@android:color/transparent</item>
@@ -59,4 +60,14 @@
         <item name="android:windowEnterAnimation">@anim/bottom_enter</item>
         <item name="android:windowExitAnimation">@anim/bottom_exit</item>
     </style>
+
+    <style name="AppTextViewStyle" parent="Widget.AppCompat.TextView">
+        <item name="android:maxLines">1</item>
+        <item name="android:ellipsize">end</item>
+    </style>
+
+    <style name="CustomSpinnerStyle" parent="Widget.AppCompat.Spinner">
+        <item name="overlapAnchor">false</item>
+
+    </style>
 </resources>

+ 0 - 1
app/src/main/res/values/themes.xml

@@ -22,5 +22,4 @@
     </style>
 
 
-
 </resources>