Pārlūkot izejas kodu

翻译执行完成

bjb 5 mēneši atpakaļ
vecāks
revīzija
e1b2db08c1
32 mainītis faili ar 495 papildinājumiem un 290 dzēšanām
  1. 3 0
      app/build.gradle
  2. 2 1
      app/src/main/java/com/grkj/iscs_mars/BusinessManager.kt
  3. 1 4
      app/src/main/java/com/grkj/iscs_mars/MyApplication.kt
  4. 1 0
      app/src/main/java/com/grkj/iscs_mars/can/CanCommand.kt
  5. 3 2
      app/src/main/java/com/grkj/iscs_mars/can/CanHardwareHelper.kt
  6. 10 14
      app/src/main/java/com/grkj/iscs_mars/view/fragment/DockTestFragment.kt
  7. 60 33
      app/src/main/java/com/grkj/iscs_mars/view/fragment/JobProgressFragment.kt
  8. 14 9
      app/src/main/java/com/grkj/iscs_mars/view/fragment/StepFragment.kt
  9. 6 3
      app/src/main/java/com/grkj/iscs_mars/view/fragment/TechnologySopFragment.kt
  10. 16 16
      app/src/main/java/com/grkj/iscs_mars/view/fragment/WorkerFragment.kt
  11. 33 0
      app/src/main/java/com/grkj/iscs_mars/view/fragment/WorkshopFragment.kt
  12. 13 13
      app/src/main/java/com/grkj/iscs_mars/view/presenter/WorkerPresenter.kt
  13. 39 31
      app/src/main/res/layout-land/item_rv_login.xml
  14. 1 1
      app/src/main/res/layout/activity_widget_test.xml
  15. 1 1
      app/src/main/res/layout/dialog_create_temp_job.xml
  16. 2 2
      app/src/main/res/layout/dialog_locker_select.xml
  17. 4 4
      app/src/main/res/layout/dialog_tip.xml
  18. 14 14
      app/src/main/res/layout/fragment_job_progress.xml
  19. 1 1
      app/src/main/res/layout/fragment_login.xml
  20. 9 8
      app/src/main/res/layout/fragment_step.xml
  21. 6 6
      app/src/main/res/layout/fragment_technology_sop.xml
  22. 1 1
      app/src/main/res/layout/fragment_temp_job.xml
  23. 4 4
      app/src/main/res/layout/fragment_worker.xml
  24. 5 4
      app/src/main/res/layout/fragment_workshop.xml
  25. 43 32
      app/src/main/res/layout/item_rv_login.xml
  26. 1 4
      app/src/main/res/layout/item_rv_menu.xml
  27. 44 12
      app/src/main/res/layout/item_rv_point_list.xml
  28. 1 1
      app/src/main/res/layout/item_rv_step_list.xml
  29. 16 0
      app/src/main/res/layout/tips_workshop_layout.xml
  30. 85 61
      app/src/main/res/values-en/strings.xml
  31. 28 4
      app/src/main/res/values-zh/strings.xml
  32. 28 4
      app/src/main/res/values/strings.xml

+ 3 - 0
app/build.gradle

@@ -172,4 +172,7 @@ dependencies {
     implementation 'com.github.liangjingkanji:BRV:1.6.1'
     implementation("com.github.SilverIceKey:SIKCronJob:1.0.5")
     implementation("com.github.SilverIceKey:SIKComm:1.0.20")
+
+    // 引导式交互
+    implementation("com.github.takusemba:spotlight:2.0.5")
 }

+ 2 - 1
app/src/main/java/com/grkj/iscs_mars/BusinessManager.kt

@@ -424,6 +424,7 @@ object BusinessManager {
                         val ctrl = CanCommands.forDevice(keyBean.nodeId).controlLatch(keyBean.id, 1)
                         CanHelper.writeTo(ctrl) { _ ->
                             NetApi.getKeyInfo(rfid) {
+                                LogUtil.i("查询钥匙信息:$it")
                                 HardwareMode.getCurrentHardwareMode().updateKeyNewHardware(keyBean.nodeId, keyBean.id, it == null)
                                 if (it != null && !it.macAddress.isNullOrEmpty()) {
                                     keyBean.mac = it.macAddress ?: ""
@@ -1973,7 +1974,7 @@ object BusinessManager {
         reConnectKey()
         NetApi.logout()
         // 关所有有设备的卡扣
-        HardwareMode.getCurrentHardwareMode().allSlotOff()
+        // HardwareMode.getCurrentHardwareMode().allSlotOff()
         BleSendDispatcher.disconnectAll(60_0000L)
         sendLoadingEventMsg(null, false)
         context.startActivity(Intent(context, LoginActivity::class.java).apply {

+ 1 - 4
app/src/main/java/com/grkj/iscs_mars/MyApplication.kt

@@ -2,6 +2,7 @@ package com.grkj.iscs_mars
 
 import android.app.Application
 import android.content.Context
+import android.util.Log
 import androidx.multidex.MultiDex
 import com.grkj.iscs_mars.ble.BleUtil
 import com.grkj.iscs_mars.extentions.serialNo
@@ -39,7 +40,6 @@ class MyApplication : Application() {
         LogUtil.init(this, "${FileUtil.getRootFolder(this)?.absolutePath}$LOG_DIR")
         BleUtil.instance?.initBle(this)
         NetHttpManager.getInstance().initCtx(this)
-
         BusinessManager.initMsgEventBus()
         try {
             ArcSoftUtil.checkActiveStatus(SIKCore.getApplication())
@@ -47,17 +47,14 @@ class MyApplication : Application() {
         } catch (e: Exception) {
 
         }
-
         NetApi.logout()
         SPUtils.clearLoginUser(this)
         Token.clear(this)
 
         Executor.runOnIO {
-            // BusinessManager.registerMainListener()
             WebSocketConfig.instance.connect()
         }
         LogUtil.i("App start : ${serialNo()}")
-
         Thread.setDefaultUncaughtExceptionHandler(MyCrashHandler())
     }
 

+ 1 - 0
app/src/main/java/com/grkj/iscs_mars/can/CanCommand.kt

@@ -1,5 +1,6 @@
 package com.grkj.iscs_mars.can
 
+import android.util.Log
 import com.sik.comm.impl_can.SdoDialect
 import com.sik.comm.impl_can.SdoRequest
 import kotlin.math.max

+ 3 - 2
app/src/main/java/com/grkj/iscs_mars/can/CanHardwareHelper.kt

@@ -1,6 +1,7 @@
 package com.grkj.iscs_mars.can
 
 import com.grkj.iscs_mars.extentions.toHexFromLe
+import com.grkj.iscs_mars.extentions.toHexStrings
 import com.grkj.iscs_mars.model.DeviceConst
 import com.grkj.iscs_mars.model.vo.hardware.CabinetSlotsRecord
 import com.grkj.iscs_mars.util.log.LogUtil
@@ -206,6 +207,7 @@ class CanHardwareHelper : IHardwareHelper {
             val rightOn = if (idx == 1 && isOpen) true else if (idx == 1) false else null
             val req = CanCommands.forDevice(slaveAddress)
                 .setCharge(leftOn, rightOn)
+            LogUtil.i("controlKeyCharge $isOpen $idx ${req.payload.toHexStrings()}")
             CanHelper.writeTo(req) {
                 done?.invoke(it.toCommMessage().payload)
             }
@@ -222,8 +224,7 @@ class CanHardwareHelper : IHardwareHelper {
         keyDevice?.let {
             val leftOn = if (it.id == 0 && isOpen) true else if (it.id == 0) false else null
             val rightOn = if (it.id == 1 && isOpen) true else if (it.id == 1) false else null
-            val req = CanCommands.forDevice(it.nodeId)
-                .setCharge(leftOn, rightOn)
+            val req = CanCommands.forDevice(it.nodeId).setCharge(leftOn, rightOn)
             CanHelper.writeTo(req) {
                 done?.invoke(it.toCommMessage().payload)
             }

+ 10 - 14
app/src/main/java/com/grkj/iscs_mars/view/fragment/DockTestFragment.kt

@@ -6,6 +6,7 @@ import com.google.gson.reflect.TypeToken
 import com.grkj.iscs_mars.R
 import com.grkj.iscs_mars.can.CanHardwareHelper
 import com.grkj.iscs_mars.databinding.FragmentDockTestBinding
+import com.grkj.iscs_mars.enums.HardwareMode
 import com.grkj.iscs_mars.extentions.removeLeadingZeros
 import com.grkj.iscs_mars.extentions.toHexStrings
 import com.grkj.iscs_mars.modbus.ModBusController
@@ -70,24 +71,19 @@ class DockTestFragment : BaseFragment<FragmentDockTestBinding>() {
                     override fun convert(holder: ViewHolder, deviceIndex: Int, position: Int) {
                         holder.setText(R.id.tv_name, getString(R.string.device_index, deviceIndex))
                         holder.setOnClickListener(R.id.tv_turn_on) {
-                            CanHardwareHelper().apply {
-                                controlKeyBuckle(true, deviceIndex - 1, dock.address.toInt())
-                                controlKeyCharge(false, deviceIndex - 1, dock.address.toInt())
-                            }
+                            val opt = HardwareMode.getCurrentHardwareMode()
+                            opt.controlKeyBuckle(true, deviceIndex - 1, dock.address.toInt())
+                            opt.controlKeyCharge(false, deviceIndex - 1, dock.address.toInt())
                         }
                         holder.setOnClickListener(R.id.tv_turn_off) {
-                            CanHardwareHelper().apply {
-                                controlKeyBuckle(false, deviceIndex - 1, dock.address.toInt())
-                                controlKeyCharge(true, deviceIndex - 1, dock.address.toInt())
-                            }
+                            val opt = HardwareMode.getCurrentHardwareMode()
+                            opt.controlKeyBuckle(false, deviceIndex - 1, dock.address.toInt())
+                            opt.controlKeyCharge(true, deviceIndex - 1, dock.address.toInt())
+
                         }
                         holder.setOnClickListener(R.id.tv_read) {
-                            ModBusController.readKeyRfid(
-                                dock.address,
-                                if (deviceIndex == 1) 0 else 1
-                            ) { isLeft, res ->
-                                val rfid = res.copyOfRange(3, 11).toHexStrings(false)
-                                    .removeLeadingZeros()
+                            ModBusController.readKeyRfid(dock.address, if (deviceIndex == 1) 0 else 1) { isLeft, res ->
+                                val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                                 ToastUtils.tip("RFID: ${rfid}")
                             }
                         }

+ 60 - 33
app/src/main/java/com/grkj/iscs_mars/view/fragment/JobProgressFragment.kt

@@ -1,13 +1,14 @@
 package com.grkj.iscs_mars.view.fragment
 
 import android.view.View
-import android.widget.ImageView
 import android.widget.LinearLayout
 import androidx.lifecycle.Observer
+import androidx.lifecycle.lifecycleScope
 import com.grkj.iscs_mars.BusinessManager
 import com.grkj.iscs_mars.R
 import com.grkj.iscs_mars.databinding.FragmentJobProgressBinding
 import com.grkj.iscs_mars.extentions.debounce
+import com.grkj.iscs_mars.model.Constants
 import com.grkj.iscs_mars.model.bo.PageChangeBO
 import com.grkj.iscs_mars.model.eventmsg.MsgEvent
 import com.grkj.iscs_mars.model.eventmsg.MsgEventConstants
@@ -25,6 +26,9 @@ import com.grkj.iscs_mars.view.iview.IJobProgressView
 import com.grkj.iscs_mars.view.presenter.JobProgressPresenter
 import com.zhy.adapter.recyclerview.CommonAdapter
 import com.zhy.adapter.recyclerview.base.ViewHolder
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
 
 /**
  * 作业票工作进度页
@@ -66,50 +70,44 @@ class JobProgressFragment(val goBack: () -> Unit, val changePage: (PageChangeBO)
                 override fun convert(holder: ViewHolder, point: TicketDetailMonitorRespVO.IsJobTicketPointsVO, position: Int) {
                     holder.setText(R.id.tv_position, point.pointName)
                     holder.setText(R.id.tv_func, point.effect)
-                }
-            }
-
-        
-        mBinding?.tvCancel?.setOnClickListener { goBack() }
-        
-        
-        mBinding?.rvPoint?.adapter =
-            object : CommonAdapter<TicketDetailMonitorRespVO.IsJobTicketPointsVO>(requireActivity(), R.layout.item_rv_point, mPointList) {
-                override fun convert(holder: ViewHolder, point: TicketDetailMonitorRespVO.IsJobTicketPointsVO, position: Int) {
-                    holder.setText(R.id.tv_name, point.pointName)
-                    holder.setText(R.id.tv_function, point.effect)
-                    holder.setVisible(R.id.iv_status, point.switchStatus != null)
-                    holder.getView<ImageView>(R.id.iv_status)
-                        .setImageResource(if (point.switchStatus == "0") R.mipmap.switch_off else R.mipmap.switch_on)
+                    // 设置电机状态
+                    holder.setVisible(R.id.iv_switch_status, point.switchStatus != null)
+                    holder.setImageResource(R.id.iv_switch_status, if (point.switchStatus == "0") R.mipmap.switch_off else R.mipmap.switch_on)
+                    // 设置上锁状态
                     when (point.pointStatus) {
                         "1" -> {
-                            holder.setVisible(R.id.ll_lock_status, true)
-                            holder.getView<LinearLayout>(R.id.ll_lock_status).isSelected = false
+                            holder.setVisible(R.id.ll_lock_status_root, true)
+                            holder.getView<LinearLayout>(R.id.ll_lock_status_root).isSelected = false
                             holder.setText(R.id.tv_lock_status, getString(R.string.has_locked))
                         }
 
                         "2" -> {
-                            holder.setVisible(R.id.ll_lock_status, true)
-                            holder.getView<LinearLayout>(R.id.ll_lock_status).isSelected = true
+                            holder.setVisible(R.id.ll_lock_status_root, true)
+                            holder.getView<LinearLayout>(R.id.ll_lock_status_root).isSelected = true
                             holder.setText(R.id.tv_lock_status, getString(R.string.unlocked))
                         }
 
                         else -> {
-                            holder.setVisible(R.id.ll_lock_status, false)
+                            holder.setVisible(R.id.ll_lock_status_root, false)
                         }
                     }
                 }
             }
 
-        mBinding?.rvTogetherList?.adapter = object : CommonAdapter<TicketDetailMonitorRespVO.IsJobTicketUser>(requireActivity(), R.layout.item_rv_worker_status_list, mUserList) {
-            override fun convert(holder: ViewHolder, user: TicketDetailMonitorRespVO.IsJobTicketUser, position: Int) {
-                holder.setText(R.id.tv_personal, user.userName)
-                 holder.setVisible(R.id.iv_wait_lock, presenter?.needShowReadyToLock(requireContext(), mPointList, mStep) == true)
-                holder.setVisible(R.id.iv_locked, user.jobStatus!! >= 4)
-                holder.setVisible(R.id.iv_unlocked, user.jobStatus >= 5)
+
+        mBinding?.tvCancel?.setOnClickListener { goBack() }
+
+        mBinding?.rvTogetherList?.adapter =
+            object : CommonAdapter<TicketDetailMonitorRespVO.IsJobTicketUser>(requireActivity(), R.layout.item_rv_worker_status_list, mUserList) {
+                override fun convert(holder: ViewHolder, user: TicketDetailMonitorRespVO.IsJobTicketUser, position: Int) {
+                    holder.setText(R.id.tv_personal, user.userName)
+                    holder.setVisible(R.id.iv_wait_lock, presenter?.needShowReadyToLock(requireContext(), mPointList, mStep) == true)
+                    holder.setVisible(R.id.iv_locked, user.jobStatus!! >= 4)
+                    holder.setVisible(R.id.iv_unlocked, user.jobStatus >= 5)
+                }
             }
-        }
 
+        // 确认去上锁按钮的点击事件
         mBinding?.tvConfirm?.debounce(2000) {
             if (mStep == 4) {
                 presenter?.getTicketDetail(mPageChangeBO?.ticketId!!) {
@@ -231,8 +229,8 @@ class JobProgressFragment(val goBack: () -> Unit, val changePage: (PageChangeBO)
         BusinessManager.mEventBus.observe(this) {
             when (it.code) {
                 MSG_EVENT_SWITCH_COLLECTION_UPDATE -> {
-                    mBinding?.rvPoint?.adapter?.notifyDataSetChanged()
                     mBinding?.rvLockPositionList?.adapter?.notifyDataSetChanged()
+                    mBinding?.rvTogetherList?.adapter?.notifyDataSetChanged()
                 }
             }
         }
@@ -240,9 +238,7 @@ class JobProgressFragment(val goBack: () -> Unit, val changePage: (PageChangeBO)
     }
 
     override fun refreshPage(pageChangeBO: PageChangeBO) {
-//        clearPage()
         mPageChangeBO = pageChangeBO
-
         presenter?.getTicketDetail(pageChangeBO.ticketId) {
             mBinding?.tvTitle?.text = it?.ticketName
             mTicketDetail = it
@@ -255,9 +251,8 @@ class JobProgressFragment(val goBack: () -> Unit, val changePage: (PageChangeBO)
                 mUserList.clear()
                 mPointList.addAll(it?.ticketPointsList!!)
                 mUserList.addAll(it.colockUserList!!)
-                mBinding?.rvPoint?.adapter?.notifyDataSetChanged()
                 mBinding?.rvLockPositionList?.adapter?.notifyDataSetChanged()
-                mBinding?.rvColocker?.adapter?.notifyDataSetChanged()
+                mBinding?.rvTogetherList?.adapter?.notifyDataSetChanged()
                 handleActionBtnVisibility()
             }
         }
@@ -415,6 +410,22 @@ class JobProgressFragment(val goBack: () -> Unit, val changePage: (PageChangeBO)
                         mBinding?.tvTip?.text = ""
                     }
                 }
+                // 如果是待共锁人处理,默认导航到待共锁列表
+                if (ticketDetail?.ticketPointsVOList?.any { it.pointStatus == "0" } == true) {
+                    // 上锁人执行上锁操作
+                    lifecycleScope.launch(Dispatchers.Main) {
+                        delay(500)
+                        // 这里执行一次切换导航,共锁处理切换到共锁页面
+                        mBinding?.llLockInfo?.performClick()
+                    }
+                } else if (ticketDetail?.ticketUserVOList?.filter { it.userRole == Constants.USER_ROLE_COLOCKER }?.any { it.jobStatus!! < 4 } == true) {
+                    // 共锁人操作提示
+                    lifecycleScope.launch(Dispatchers.Main) {
+                        delay(500)
+                        // 这里执行一次切换导航,共锁处理切换到共锁页面
+                        mBinding?.llTogetherInfo?.performClick()
+                    }
+                }
             }
 
             6 -> {
@@ -437,6 +448,22 @@ class JobProgressFragment(val goBack: () -> Unit, val changePage: (PageChangeBO)
                         mBinding?.tvTip?.text = ""
                     }
                 }
+                // 如果是待共锁人处理,默认导航到待共锁列表
+                if (ticketDetail?.ticketUserVOList?.filter { it.userRole == Constants.USER_ROLE_COLOCKER }?.any { it.jobStatus!! != 5 } == true) {
+                    // 上锁人执行解锁操作
+                    lifecycleScope.launch(Dispatchers.Main) {
+                        delay(500)
+                        // 这里执行一次切换导航,共锁处理切换到共锁页面
+                        mBinding?.llLockInfo?.performClick()
+                    }
+                }
+                else if (ticketDetail?.ticketUserVOList?.filter { it.userRole == Constants.USER_ROLE_COLOCKER }?.any { it.jobStatus!! != 5 } == true) {
+                    lifecycleScope.launch(Dispatchers.Main) {
+                        delay(500)
+                        // 这里执行一次切换导航,共锁处理切换到共锁页面
+                        mBinding?.llTogetherInfo?.performClick()
+                    }
+                }
             }
 
             else -> {

+ 14 - 9
app/src/main/java/com/grkj/iscs_mars/view/fragment/StepFragment.kt

@@ -1,6 +1,5 @@
 package com.grkj.iscs_mars.view.fragment
 
-import android.util.Log
 import android.view.GestureDetector
 import android.view.MotionEvent
 import android.view.View
@@ -171,7 +170,7 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
             }
         }
 
-        mBinding?.llDetail?.setOnClickListener {
+        mBinding?.tvDetail?.setOnClickListener {
             mCanHandle ?: return@setOnClickListener
             if (mCanHandle == false) {
                 ToastUtils.tip(R.string.no_permission_to_handle)
@@ -278,20 +277,24 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
 
         presenter?.getStepDetail(pageChangeBO.ticketId!!) {
             BusinessManager.sendLoadingEventMsg(null, false)
-
             // 新设置锁信息和人员信息
-            mBinding?.tvLockPersonal?.text = "${it?.get(2)?.userNum}/${it?.get(4)?.userNum}/${it?.get(7)?.userNum} (带上锁/已上锁/已解锁)"
-            mBinding?.tvTogetherPersonal?.text = "${it?.get(2)?.lockNum}/${it?.get(4)?.lockNum}/${it?.get(7)?.lockNum} (待共锁/已共锁/已解除共锁)"
+            val lockStr = "${getString(R.string.ready_to_lock)}/${getString(R.string.has_locked)}/${getString(R.string.unlocked)}"
+            val togetherStr =
+                "${getString(R.string.ready_to_colock_sample)}/${getString(R.string.colocked_sample)}/${getString(R.string.group_unlocked_sample)}"
+            mBinding?.tvLockPersonal?.text = "${it?.get(2)?.userNum}/${it?.get(4)?.userNum}/${it?.get(7)?.userNum} ($lockStr)"
+            mBinding?.tvTogetherPersonal?.text = "${it?.get(2)?.lockNum}/${it?.get(4)?.lockNum}/${it?.get(7)?.lockNum} ($togetherStr)"
 
             mStepList.forEach { step ->
                 step.stepDetail = it?.find { it.stepIndex == step.index }
-                step.title =
-                    it?.find { it.stepIndex == step.index }?.androidStepContent ?: step.title
+                // TODO 这里的内容需要服务端修改
+                step.title = it?.find { it.stepIndex == step.index }?.androidStepContent ?: step.title
             }
             mBinding?.rvStep?.adapter?.notifyDataSetChanged()
             mBinding?.stepList?.adapter?.notifyDataSetChanged()
             it?.filter { it.stepStatus == "1" }?.maxByOrNull { it.stepIndex!! }?.stepIndex?.let {
                 mStep = it
+                // 只有步骤4及以后可以查看上锁状态
+                mBinding?.tvDetail?.visibility = if (mStep >= 4) View.VISIBLE else View.GONE
             }
             if (mStep <= 5) {
                 mBinding?.tvCancel?.visibility = View.VISIBLE
@@ -355,10 +358,12 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
 
             4, 5, 6, 7, 8 -> {
                 if (mStep != step - 1) {
-                    ToastUtils.tip(getString(
+                    ToastUtils.tip(
+                        getString(
                             R.string.please_done_operation,
                             mStepList.find { it.index == mStep + 1 }?.title
-                        ))
+                        )
+                    )
                     return
                 }
                 updateStep(step)

+ 6 - 3
app/src/main/java/com/grkj/iscs_mars/view/fragment/TechnologySopFragment.kt

@@ -1,5 +1,6 @@
 package com.grkj.iscs_mars.view.fragment
 
+import android.util.Log
 import android.widget.ImageView
 import android.widget.LinearLayout
 import androidx.recyclerview.widget.RecyclerView
@@ -141,7 +142,9 @@ class TechnologySopFragment(val changePage: (PageChangeBO) -> Unit) :
                     holder.setText(R.id.tv_positon, t.workstationName)
                     holder.setText(R.id.tv_sop_name, t.machineryName)
                     holder.setOnClickListener(R.id.root) {
+                        if (mMachineryIdx == position) return@setOnClickListener
                         mMachineryIdx = position
+                        mSopTypeIdx = -1
                         // 将当前选中的机器图片加载出来
                         Glide.with(this@TechnologySopFragment).load(t.machineryImg).into(mBinding!!.ivMachinery!!)
                         // 处理当前SOP支持的类型
@@ -162,10 +165,10 @@ class TechnologySopFragment(val changePage: (PageChangeBO) -> Unit) :
                     val colorId = if (mSopTypeIdx == position) R.color.dialog_card_login_bg_no_alpha else R.color.common_bg_black_10
                     holder.getView<MaterialCardView>(R.id.cv_sop_type).setCardBackgroundColor(context!!.getColor(colorId))
                     // 设置工艺图标
-                    mSopTypeList.find { it.type.toString() == t.dictValue }?.icon?.let { icon ->
-                        holder.getView<ImageView>(R.id.iv_sop_type).setImageResource(icon)
+                    mSopTypeList.find { it.type.toString() == t.dictValue }?.let { info ->
+                        holder.getView<ImageView>(R.id.iv_sop_type).setImageResource(info.icon)
+                        holder.setText(R.id.sop_type_name, info.title)
                     }
-                    holder.setText(R.id.sop_type_name, t.dictLabel)
                     holder.setOnClickListener(R.id.cv_sop_type) {
                         mSopTypeIdx = position
                         notifyDataSetChanged()

+ 16 - 16
app/src/main/java/com/grkj/iscs_mars/view/fragment/WorkerFragment.kt

@@ -46,7 +46,7 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
 
     override fun initView() {
         mLockerSelectDialog = LockerSelectDialog(requireContext(), presenter)
-        mBinding?.layoutLocker?.ivPhoto?.isSelected = true
+        // mBinding?.layoutLocker?.ivPhoto?.isSelected = true
         // 设置取消和确定按钮的点击事件
         mBinding?.tvCancel?.setOnClickListener { goBack() }
         mBinding?.tvConfirm?.setOnClickListener {
@@ -92,7 +92,7 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
         }
         // 选择共锁人
         mBinding?.tvTogetherSelect?.setOnClickListener {
-            mLockerSelectDialog.setTitle("请选择共锁人")
+            mLockerSelectDialog.setTitle(getString(R.string.select_group_locker))
             mLockerSelectDialog.setSelectList(ArrayList(mColockerSelectedShowList), mStep)
             mLockerSelectDialog.setListData(mColockerInsideList, mColockerOutsideList)
             mLockerSelectDialog.show()
@@ -114,13 +114,13 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
                 }
             }
 
-        mBinding?.layoutLocker?.root?.setOnClickListener {
-            if (mBinding?.layoutLocker?.root?.visibility == View.VISIBLE) {
-                mBinding?.layoutLocker?.root?.visibility = View.INVISIBLE
-                mLockerSelectedList.removeIf { it.userRole == USER_ROLE_LOCKER }
-                mBinding?.rvLockPersonal?.adapter?.notifyDataSetChanged()
-            }
-        }
+//        mBinding?.layoutLocker?.root?.setOnClickListener {
+//            if (mBinding?.layoutLocker?.root?.visibility == View.VISIBLE) {
+//                mBinding?.layoutLocker?.root?.visibility = View.INVISIBLE
+//                mLockerSelectedList.removeIf { it.userRole == USER_ROLE_LOCKER }
+//                mBinding?.rvLockPersonal?.adapter?.notifyDataSetChanged()
+//            }
+//        }
     }
 
     override fun refreshPage(pageChangeBO: PageChangeBO) {
@@ -138,7 +138,7 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
         mBinding?.llColockerOutside?.visibility = View.GONE
 
         mPageChangeBO = pageChangeBO
-        mBinding?.layoutLocker?.root?.visibility = View.INVISIBLE
+        //mBinding?.layoutLocker?.root?.visibility = View.INVISIBLE
 
         presenter?.getTicketDetail(pageChangeBO.ticketId) {
             ticketUserVOList.clear()
@@ -151,8 +151,8 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
             it?.ticketUserVOList?.let { it1 -> mOriginalUserList.addAll(it1) }
             it?.ticketUserVOList?.forEach { user ->
                 if (user.userRole == USER_ROLE_LOCKER) {
-                    mBinding?.layoutLocker?.root?.visibility = View.VISIBLE
-                    mBinding?.layoutLocker?.tvName?.text = user.userName
+                    //mBinding?.layoutLocker?.root?.visibility = View.VISIBLE
+                    //mBinding?.layoutLocker?.tvName?.text = user.userName
                 }
                 mLockerSelectedList.add(
                     TicketUserReqVO(
@@ -178,8 +178,8 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
                             user.jobStatus
                         )
                     )
-                    mBinding?.layoutLocker?.root?.visibility = View.VISIBLE
-                    mBinding?.layoutLocker?.tvName?.text = it.userName
+                    //mBinding?.layoutLocker?.root?.visibility = View.VISIBLE
+                    //mBinding?.layoutLocker?.tvName?.text = it.userName
                 }
             }
             mColockerSelectedShowList.addAll(mCoLockerSelectedList.filter { it.userRole == USER_ROLE_COLOCKER }
@@ -209,8 +209,8 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
                             ticketUserVOList.find { ticketUser -> ticketUser.userId == it.userId }?.jobStatus
                         )
                     )
-                    mBinding?.layoutLocker?.root?.visibility = View.VISIBLE
-                    mBinding?.layoutLocker?.tvName?.text = it.nickName
+                    //mBinding?.layoutLocker?.root?.visibility = View.VISIBLE
+                    //mBinding?.layoutLocker?.tvName?.text = it.nickName
                 }
             }
             mBinding?.rvLockPersonal?.adapter?.notifyDataSetChanged()

+ 33 - 0
app/src/main/java/com/grkj/iscs_mars/view/fragment/WorkshopFragment.kt

@@ -1,6 +1,9 @@
 package com.grkj.iscs_mars.view.fragment
 
+import android.graphics.Color
 import android.graphics.PointF
+import android.view.animation.DecelerateInterpolator
+import android.widget.FrameLayout
 import android.widget.ImageView
 import androidx.lifecycle.lifecycleScope
 import com.grkj.iscs_mars.R
@@ -18,6 +21,9 @@ import com.grkj.iscs_mars.view.iview.IWorkshopView
 import com.grkj.iscs_mars.view.presenter.WorkshopPresenter
 import com.grkj.iscs_mars.view.widget.CustomMarkLayerSample
 import com.onlylemi.mapview.library.MapViewListener
+import com.takusemba.spotlight.Spotlight
+import com.takusemba.spotlight.Target
+import com.takusemba.spotlight.shape.RoundedRectangle
 import com.zhy.adapter.recyclerview.CommonAdapter
 import com.zhy.adapter.recyclerview.base.ViewHolder
 import kotlinx.coroutines.Dispatchers
@@ -77,6 +83,33 @@ class WorkshopFragment(val changePage: (PageChangeBO) -> Unit) :
             }
         }
 
+        mBinding?.tvCreate?.setOnClickListener {
+            val bind = mBinding ?: return@setOnClickListener
+            val targets = ArrayList<Target>()
+
+            val tipsRoot = FrameLayout(requireContext())
+            val tips = layoutInflater.inflate(R.layout.tips_workshop_layout, tipsRoot)
+            val tipsTarget = Target.Builder()
+                .setAnchor(bind.mapRoot!!)
+                .setShape(RoundedRectangle(295f, 540f, 20f))
+                .setOverlay(tips)
+                .build()
+
+            targets.add(tipsTarget)
+
+            // 做引导提示
+            val spotlight = Spotlight.Builder(requireActivity())
+                .setTargets(targets)
+                .setBackgroundColor(Color.parseColor("#DD000000"))
+                .setDuration(1000L)
+                .setAnimation(DecelerateInterpolator(2f))
+                .build()
+
+            spotlight.start()
+            // 点击背景认为结束演示
+            tips.setOnClickListener { spotlight.finish() }
+        }
+
         initMap()
         refreshPage()
     }

+ 13 - 13
app/src/main/java/com/grkj/iscs_mars/view/presenter/WorkerPresenter.kt

@@ -132,18 +132,18 @@ class WorkerPresenter : BasePresenter<IWorkerView>() {
      * 预打开钥匙的充电
      */
     fun preOpenKeyCharge() {
-        ThreadUtils.runOnIO {
-            val opt = HardwareMode.getCurrentHardwareMode()
-            opt.getKeyDockData().forEach { dock ->
-                val canUseKeys = dock.keyData.filter { key -> key.isExist }
-                canUseKeys.forEach {
-                    opt.controlKeyCharge(false, it.idx, dock.addr)
-                    ThreadUtils.runOnIO {
-                        delay(3000)
-                        opt.controlKeyCharge(true, it.idx, dock.addr)
-                    }
-                }
-            }
-        }
+//        ThreadUtils.runOnIO {
+//            val opt = HardwareMode.getCurrentHardwareMode()
+//            opt.getKeyDockData().forEach { dock ->
+//                val canUseKeys = dock.keyData.filter { key -> key.isExist }
+//                canUseKeys.forEach {
+//                    opt.controlKeyCharge(false, it.idx, dock.addr)
+//                    ThreadUtils.runOnIO {
+//                        delay(3000)
+//                        opt.controlKeyCharge(true, it.idx, dock.addr)
+//                    }
+//                }
+//            }
+//        }
     }
 }

+ 39 - 31
app/src/main/res/layout-land/item_rv_login.xml

@@ -1,38 +1,46 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/root"
-    android:layout_width="@dimen/item_rv_login_width"
-    android:layout_height="@dimen/item_rv_login_height"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
     android:layout_margin="@dimen/item_rv_login_margin"
-    android:background="@drawable/item_rv_login_bg">
+    app:strokeWidth="0dp">
 
-    <ImageView
-        android:id="@+id/iv_icon"
-        android:layout_width="@dimen/item_rv_login_icon_size"
-        android:layout_height="@dimen/item_rv_login_icon_size"
-        app:layout_constraintBottom_toTopOf="@id/tv_name"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="@dimen/item_rv_login_width"
+        android:layout_height="@dimen/item_rv_login_height"
+        android:background="@drawable/item_rv_login_bg">
 
-    <TextView
-        android:id="@+id/tv_name"
-        style="@style/CommonTextView"
-        android:layout_marginTop="8dp"
-        android:textSize="@dimen/common_text_size_big"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/iv_icon" />
+        <ImageView
+            android:id="@+id/iv_icon"
+            android:layout_width="@dimen/item_rv_login_icon_size"
+            android:layout_height="@dimen/item_rv_login_icon_size"
+            app:layout_constraintBottom_toTopOf="@id/tv_name"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
 
-    <ImageView
-        android:id="@+id/iv_dot"
-        android:layout_width="8dp"
-        android:layout_height="8dp"
-        android:layout_marginTop="@dimen/common_spacing"
-        android:layout_marginRight="@dimen/common_spacing"
-        android:background="@drawable/login_item_dot_bg"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-</androidx.constraintlayout.widget.ConstraintLayout>
+        <TextView
+            android:id="@+id/tv_name"
+            style="@style/CommonTextView"
+            android:layout_marginTop="8dp"
+            android:textSize="@dimen/common_text_size_big"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/iv_icon" />
+
+        <ImageView
+            android:id="@+id/iv_dot"
+            android:layout_width="8dp"
+            android:layout_height="8dp"
+            android:layout_marginTop="@dimen/common_spacing"
+            android:layout_marginRight="@dimen/common_spacing"
+            android:background="@drawable/login_item_dot_bg"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+</com.google.android.material.card.MaterialCardView>

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

@@ -24,7 +24,7 @@
         android:drawableLeft="@drawable/pwd_toggle_bg_selector"
         android:gravity="center"
         android:padding="3dp"
-        android:text="已解锁"
+        android:text="@string/unlocked"
         android:textColor="@drawable/test_status_color_selector" />
 
     <androidx.recyclerview.widget.RecyclerView

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

@@ -37,7 +37,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginBottom="10dp"
-            android:text="创建" />
+            android:text="@string/common_create" />
 
         <TextView
             android:id="@+id/tv_cancel"

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

@@ -31,7 +31,7 @@
             android:layout_height="wrap_content"
             android:layout_gravity="start"
             android:layout_marginBottom="10dp"
-            android:text="内部"
+            android:text="@string/select_coloker_mars"
             android:textColor="@color/white"
             android:textSize="16sp" />
 
@@ -51,7 +51,7 @@
             android:layout_gravity="start"
             android:layout_marginTop="20dp"
             android:layout_marginBottom="10dp"
-            android:text="外部"
+            android:text="@string/select_coloker_outside"
             android:textColor="@color/white"
             android:textSize="16sp" />
 

+ 4 - 4
app/src/main/res/layout/dialog_tip.xml

@@ -6,8 +6,8 @@
     app:cardCornerRadius="20dp">
 
     <RelativeLayout
-        android:layout_width="350dp"
-        android:layout_height="200dp">
+        android:layout_width="380dp"
+        android:layout_height="220dp">
 
         <TextView
             android:id="@+id/tv_title"
@@ -25,8 +25,8 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerInParent="true"
-            android:textColor="@color/black"
             android:layout_marginHorizontal="20dp"
+            android:textColor="@color/black"
             android:textSize="18sp"
             android:textStyle="bold" />
 
@@ -35,7 +35,7 @@
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
             android:layout_centerHorizontal="true"
-            android:layout_marginBottom="@dimen/common_spacing"
+            android:layout_marginBottom="20dp"
             android:orientation="horizontal">
 
             <TextView

+ 14 - 14
app/src/main/res/layout/fragment_job_progress.xml

@@ -28,7 +28,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_centerVertical="true"
-                android:text="工作进度"
+                android:text="@string/job_progress"
                 android:textColor="@color/white"
                 android:textSize="20sp" />
 
@@ -71,7 +71,7 @@
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="上锁信息"
+                    android:text="@string/lock_info"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
 
@@ -96,7 +96,7 @@
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="共锁信息"
+                    android:text="@string/together_info"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
 
@@ -123,7 +123,7 @@
 
             <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="40dp"
+                android:layout_height="50dp"
                 android:gravity="center_vertical"
                 android:orientation="horizontal">
 
@@ -133,7 +133,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="1"
                     android:gravity="center"
-                    android:text="隔离点"
+                    android:text="@string/isolation_point"
                     android:textStyle="bold"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
@@ -150,7 +150,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="1"
                     android:gravity="center"
-                    android:text="作用"
+                    android:text="@string/effect"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
 
@@ -166,7 +166,7 @@
                     android:layout_weight="1"
                     android:gravity="center"
                     android:textStyle="bold"
-                    android:text="开关状态"
+                    android:text="@string/switch_status"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
 
@@ -182,7 +182,7 @@
                     android:layout_weight="2"
                     android:gravity="center"
                     android:textStyle="bold"
-                    android:text="上锁状态"
+                    android:text="@string/lock_status"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
 
@@ -221,7 +221,7 @@
 
             <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="40dp"
+                android:layout_height="50dp"
                 android:gravity="center_vertical"
                 android:orientation="horizontal">
 
@@ -231,7 +231,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="2"
                     android:gravity="center"
-                    android:text="共锁人"
+                    android:text="@string/colocker"
                     android:textStyle="bold"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
@@ -248,7 +248,7 @@
                     android:layout_weight="1"
                     android:textStyle="bold"
                     android:gravity="center"
-                    android:text="待共锁"
+                    android:text="@string/ready_to_colock"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
 
@@ -264,7 +264,7 @@
                     android:layout_weight="1"
                     android:gravity="center"
                     android:textStyle="bold"
-                    android:text="已共锁"
+                    android:text="@string/colocked"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
 
@@ -279,7 +279,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="1"
                     android:gravity="center"
-                    android:text="已解锁"
+                    android:text="@string/unlocked"
                     android:textStyle="bold"
                     android:textColor="@color/white"
                     android:textSize="18sp" />
@@ -326,7 +326,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginLeft="20dp"
-            android:background="@drawable/common_btn_blue_bg"
+            android:background="@drawable/common_btn_bg"
             android:paddingHorizontal="20dp"
             android:paddingVertical="10dp"
             android:text="@string/back"

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

@@ -62,7 +62,7 @@
         android:layout_alignParentBottom="true"
         android:layout_centerHorizontal="true"
         android:layout_marginBottom="@dimen/page_padding"
-        android:text="温州博士安全⽤品有限公司"
+        android:text="@string/copyright"
         android:textColor="@color/white"
         android:textSize="18sp" />
 

+ 9 - 8
app/src/main/res/layout/fragment_step.xml

@@ -29,7 +29,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_centerVertical="true"
-                android:text="作业执行步骤"
+                android:text="@string/job_exec_steps"
                 android:textColor="@color/white"
                 android:textSize="20sp" />
 
@@ -80,7 +80,7 @@
                     android:layout_height="wrap_content"
                     android:textColor="@color/white"
                     android:textSize="18sp"
-                    tools:text="5/0/0 (带上锁/以上锁/已解锁)" />
+                    tools:text="5/0/0 (待上锁/已上锁/已解锁)" />
 
             </LinearLayout>
 
@@ -111,14 +111,15 @@
             </LinearLayout>
 
             <TextView
+                android:id="@+id/tv_detail"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentEnd="true"
                 android:layout_centerVertical="true"
                 android:background="@drawable/common_btn_blue_bg"
                 android:paddingHorizontal="20dp"
-                android:paddingVertical="10dp"
-                android:text="详情"
+                android:paddingVertical="5dp"
+                android:text="@string/common_detail"
                 android:textColor="@color/white"
                 android:textSize="20sp" />
 
@@ -150,7 +151,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="1"
                     android:gravity="center"
-                    android:text="步骤"
+                    android:text="@string/common_steps"
                     android:textColor="@color/white"
                     android:textSize="18sp"
                     android:textStyle="bold" />
@@ -165,7 +166,7 @@
                     android:layout_width="60dp"
                     android:layout_height="wrap_content"
                     android:gravity="center"
-                    android:text="图标"
+                    android:text="@string/common_icon"
                     android:textColor="@color/white"
                     android:textSize="18sp"
                     android:textStyle="bold" />
@@ -181,7 +182,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="4"
                     android:gravity="center"
-                    android:text="步骤名称"
+                    android:text="@string/step_name"
                     android:textColor="@color/white"
                     android:textSize="18sp"
                     android:textStyle="bold" />
@@ -197,7 +198,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="2"
                     android:gravity="center"
-                    android:text="状态"
+                    android:text="@string/common_status"
                     android:textColor="@color/white"
                     android:textSize="18sp"
                     android:textStyle="bold" />

+ 6 - 6
app/src/main/res/layout/fragment_technology_sop.xml

@@ -30,7 +30,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_centerVertical="true"
-                android:text="选择工艺SOP"
+                android:text="@string/select_process_sop"
                 android:textColor="@color/white"
                 android:textSize="20sp" />
 
@@ -45,7 +45,7 @@
         android:layout_gravity="start"
         android:layout_marginLeft="5dp"
         android:layout_marginBottom="5dp"
-        android:text="请选择工艺/设备"
+        android:text="@string/select_process_or_device"
         android:textColor="@color/white"
         android:textSize="18sp" />
 
@@ -65,7 +65,7 @@
 
             <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="40dp"
+                android:layout_height="50dp"
                 android:gravity="center_vertical"
                 android:orientation="horizontal">
 
@@ -75,7 +75,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="1"
                     android:gravity="center"
-                    android:text="岗位"
+                    android:text="@string/workstation"
                     android:textColor="@color/white"
                     android:textSize="18sp"
                     android:textStyle="bold" />
@@ -91,7 +91,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="3"
                     android:gravity="center"
-                    android:text="⼯艺/设备名称"
+                    android:text="@string/process_device_name"
                     android:textColor="@color/white"
                     android:textSize="18sp"
                     android:textStyle="bold" />
@@ -119,7 +119,7 @@
         android:layout_gravity="start"
         android:layout_marginLeft="5dp"
         android:layout_marginBottom="5dp"
-        android:text="请选择SOP"
+        android:text="@string/select_sop"
         android:textColor="@color/white"
         android:textSize="18sp" />
 

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

@@ -41,7 +41,7 @@
                 style="@style/CommonTextView"
                 android:layout_width="0dp"
                 android:layout_weight="1"
-                android:text="作业名称" />
+                android:text="@string/sop_name" />
 
             <View
                 android:layout_width="@dimen/divider_line_width"

+ 4 - 4
app/src/main/res/layout/fragment_worker.xml

@@ -29,7 +29,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_centerVertical="true"
-                android:text="确认人员"
+                android:text="@string/confirm_personal"
                 android:textColor="@color/white"
                 android:textSize="18sp" />
 
@@ -161,9 +161,9 @@
             android:id="@+id/tv_confirm"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:background="@drawable/common_btn_blue_bg"
+            android:background="@drawable/common_btn_bg"
             android:paddingHorizontal="20dp"
-            android:paddingVertical="5dp"
+            android:paddingVertical="10dp"
             android:text="@string/confirm"
             android:textColor="@color/white"
             android:textSize="20sp" />
@@ -175,7 +175,7 @@
             android:layout_marginLeft="20dp"
             android:background="@drawable/common_btn_red_bg"
             android:paddingHorizontal="20dp"
-            android:paddingVertical="5dp"
+            android:paddingVertical="10dp"
             android:text="@string/cancel"
             android:textColor="@color/white"
             android:textSize="20sp" />

+ 5 - 4
app/src/main/res/layout/fragment_workshop.xml

@@ -33,6 +33,7 @@
                 android:textSize="20sp" />
 
             <TextView
+                android:id="@+id/tv_create"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentEnd="true"
@@ -40,7 +41,7 @@
                 android:background="@drawable/common_btn_bg"
                 android:paddingHorizontal="20dp"
                 android:paddingVertical="10dp"
-                android:text="创建"
+                android:text="@string/common_create"
                 android:textColor="@color/white"
                 android:textSize="20sp" />
 
@@ -91,7 +92,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="1"
                     android:gravity="center"
-                    android:text="岗位"
+                    android:text="@string/workstation"
                     android:textColor="@color/white"
                     android:textSize="18sp"
                     android:textStyle="bold" />
@@ -106,7 +107,7 @@
                     android:layout_width="80dp"
                     android:layout_height="wrap_content"
                     android:gravity="center"
-                    android:text="类型"
+                    android:text="@string/type"
                     android:textColor="@color/white"
                     android:textSize="18sp"
                     android:textStyle="bold" />
@@ -122,7 +123,7 @@
                     android:layout_height="wrap_content"
                     android:layout_weight="3"
                     android:gravity="center"
-                    android:text="作业名称"
+                    android:text="@string/sop_name"
                     android:textColor="@color/white"
                     android:textSize="18sp"
                     android:textStyle="bold" />

+ 43 - 32
app/src/main/res/layout/item_rv_login.xml

@@ -1,39 +1,50 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/root"
-    android:layout_width="180dp"
-    android:layout_height="220dp"
-    android:layout_margin="12dp"
-    android:background="@drawable/item_rv_login_bg">
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_margin="20dp"
+    app:cardBackgroundColor="#11000000"
+    app:strokeColor="#66FFFFFF"
+    app:cardCornerRadius="40dp"
+    app:strokeWidth="5dp">
 
-    <ImageView
-        android:id="@+id/iv_icon"
-        android:layout_width="64dp"
-        android:layout_height="64dp"
-        android:layout_marginTop="-40dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="180dp"
+        android:layout_height="220dp">
 
-    <TextView
-        android:id="@+id/tv_name"
-        style="@style/CommonTextView"
-        android:textSize="16sp"
-        android:layout_marginBottom="20dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent" />
+        <ImageView
+            android:id="@+id/iv_icon"
+            android:layout_width="64dp"
+            android:layout_height="64dp"
+            android:layout_marginTop="-40dp"
+            android:tint="@color/white"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
 
-    <ImageView
-        android:id="@+id/iv_dot"
-        android:layout_width="15dp"
-        android:layout_height="15dp"
-        android:layout_marginTop="@dimen/common_spacing"
-        android:layout_marginRight="@dimen/common_spacing"
-        android:background="@drawable/login_item_dot_bg"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        <TextView
+            android:id="@+id/tv_name"
+            style="@style/CommonTextView"
+            android:layout_marginBottom="40dp"
+            android:textSize="18sp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent" />
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+        <ImageView
+            android:id="@+id/iv_dot"
+            android:layout_width="15dp"
+            android:layout_height="15dp"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:background="@drawable/login_item_dot_bg"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+</com.google.android.material.card.MaterialCardView>

+ 1 - 4
app/src/main/res/layout/item_rv_menu.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/root"
-    android:layout_width="110dp"
+    android:layout_width="130dp"
     android:layout_height="match_parent"
     android:layout_marginEnd="10dp"
     android:gravity="center"
@@ -17,8 +17,5 @@
         android:id="@+id/tv_name"
         style="@style/CommonTextView"
         android:layout_marginTop="10dp"
-        android:ellipsize="middle"
-        android:maxLines="1"
-        android:singleLine="true"
         android:textSize="18sp" />
 </LinearLayout>

+ 44 - 12
app/src/main/res/layout/item_rv_point_list.xml

@@ -41,30 +41,62 @@
             android:layout_height="match_parent"
             android:background="#23FFFFFF" />
 
-        <TextView
-            android:id="@+id/tv_switch_status"
+        <RelativeLayout
+            android:id="@+id/rl_switch_status"
             android:layout_width="0dp"
             android:layout_height="match_parent"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:textColor="@color/white"
-            android:textSize="18sp"
-            tools:text="开关状态" />
+            android:layout_weight="1">
+
+            <ImageView
+                android:id="@+id/iv_switch_status"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+
+        </RelativeLayout>
 
         <View
             android:layout_width="2dp"
             android:layout_height="match_parent"
             android:background="#23FFFFFF" />
 
-        <TextView
-            android:id="@+id/tv_lock_status"
+        <LinearLayout
+            android:id="@+id/ll_lock_status"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="2"
             android:gravity="center"
-            android:textColor="@color/white"
-            android:textSize="18sp"
-            tools:text="上锁状态" />
+            android:orientation="horizontal">
+
+            <LinearLayout
+                android:id="@+id/ll_lock_status_root"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@drawable/lock_status_bg_selector"
+                android:gravity="center_vertical"
+                android:orientation="horizontal"
+                android:paddingHorizontal="10dp"
+                android:paddingVertical="5dp">
+
+                <ImageView
+                    android:id="@+id/iv_lock_icon"
+                    android:layout_width="20dp"
+                    android:layout_height="20dp"
+                    android:layout_marginRight="5dp"
+                    android:src="@drawable/lock_status_icon_selector"
+                    android:tint="@color/white" />
+
+                <TextView
+                    android:id="@+id/tv_lock_status"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:textColor="@color/white"
+                    android:textSize="18sp"
+                    tools:text="上锁状态" />
+
+            </LinearLayout>
+
+        </LinearLayout>
 
     </LinearLayout>
 

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

@@ -71,7 +71,7 @@
                 android:paddingHorizontal="10dp"
                 android:paddingVertical="5dp"
                 android:visibility="gone"
-                android:text="去设置"
+                android:text="@string/common_go_settings"
                 android:textColor="@color/white"
                 android:textSize="18sp" />
 

+ 16 - 0
app/src/main/res/layout/tips_workshop_layout.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="400dp"
+        android:text="@string/guide_create_job"
+        android:textColor="@color/white"
+        android:textSize="22sp" />
+
+</RelativeLayout>

+ 85 - 61
app/src/main/res/values-en/strings.xml

@@ -7,7 +7,7 @@
     <string name="common_token_expired">Token expired, please login again!</string>
     <string name="common_net_timeout">Network request timeout, please check your network connection and try again!</string>
 
-    <string name="title_bar_current_work_ticket_num">Current permits: %d</string>
+    <string name="title_bar_current_work_ticket_num">Current Jobs: %d</string>
     <string name="home_page">Home</string>
 
     <string name="enter_system">Enter System</string>
@@ -18,71 +18,71 @@
 
     <string name="selectable_input_prefix">*</string>
 
-    <string name="sop_number">Permit Number</string>
-    <string name="sop_name">Permit Name</string>
-    <string name="sop_type">Permit Type</string>
+    <string name="sop_number">Job Number</string>
+    <string name="sop_name">Job Name</string>
+    <string name="sop_type">Job Type</string>
     <string name="start_time">Start Time</string>
     <string name="end_time">End Time</string>
     <string name="current_time">Current Time</string>
-    <string name="current_sop_number">Current Permits Count</string>
+    <string name="current_sop_number">Current Job Count</string>
 
     <string name="ble_no_device_found">No devices found</string>
     <string name="ble_connecting">Connecting, please wait...</string>
     <string name="ble_connect_fail">Connection failed, please try again!</string>
     <string name="ble_disconnect">Connection disconnected, please try again!</string>
 
-    <string name="ticket_code_is_null">Please enter permit number</string>
-    <string name="ticket_name_is_null">Please enter permit name</string>
+    <string name="ticket_code_is_null">Please enter Job number</string>
+    <string name="ticket_name_is_null">Please enter Job name</string>
     <string name="work_shop_is_null">Please select workshop</string>
     <string name="work_area_is_null">Please select work area</string>
     <string name="sop_is_null">Please select SOP</string>
-    <string name="ticket_type_is_null">Please select permit type</string>
+    <string name="ticket_type_is_null">Please select Job type</string>
 
     <string name="login_tip">Please enter username/password or swipe card to login</string>
-    <string name="please_input_account">Please enter username</string>
+    <string name="please_input_account">Please enter account</string>
     <string name="please_input_password">Please enter password</string>
     <string name="account_or_password_error">Incorrect username or password</string>
     <string name="device_is_initializing">Initializing device...</string>
-    <string name="create_ticket">Create Permit</string>
-    <string name="current_tickets">Current Permits</string>
-    <string name="history_tickets">Permit History</string>
+    <string name="create_ticket">Create Job</string>
+    <string name="current_tickets">Current Jobs</string>
+    <string name="history_tickets">Job History</string>
     <string name="please_login">Please login</string>
 
     <string name="exit">Exit</string>
 
     <string name="not_started">Not Started</string>
-    <string name="ready_to_lock">Ready to Lock</string>
+    <string name="ready_to_lock">Pending Lockout</string>
     <string name="on_process">In Progress</string>
     <string name="ready_to_unlock">Ready to Unlock</string>
     <string name="finished">Finished</string>
-    <string name="key_return_confirm_tip">Permit not completed, confirm to return key?</string>
-    <string name="ticket_id_is_null">Permit ID cannot be empty</string>
+    <string name="key_return_confirm_tip">Job not completed, confirm to return key?</string>
+    <string name="ticket_id_is_null">Job ID cannot be empty</string>
     <string name="lock_is_not_enough">Insufficient locks</string>
     <string name="key_is_not_enough">Insufficient keys</string>
     <string name="no_available_key">No available keys</string>
     <string name="get_key_info_fail">Failed to get key information</string>
 
-    <string name="ticket_is_finished">Permit completed</string>
+    <string name="ticket_is_finished">Job completed</string>
     <string name="ticket_is_locker_part_finished">Locker part completed</string>
-    <string name="ticket_is_colocker_part_finished">Co-locker part completed</string>
+    <string name="ticket_is_colocker_part_finished">group lock member part completed</string>
 
     <string name="key_not_exists">Key does not exist</string>
 
-    <string name="make_sure_to_colock">Confirm to co-lock?</string>
+    <string name="make_sure_to_colock">Confirm to group lock?</string>
     <string name="make_sure_to_unlock">Confirm to unlock?</string>
-    <string name="key_return_tip">Permit not completed, key return prohibited</string>
+    <string name="key_return_tip">Job not completed, key return prohibited</string>
     <string name="key_return_force_tip">The work order has not been completed. Do you want to force data upload</string>
 
     <!--  Presentation Page  -->
     <string name="presentation_select_sop">Select SOP</string>
     <string name="presentation_select_workshop">Select Workshop</string>
     <string name="presentation_select_line">Select Production Line</string>
-    <string name="presentation_ticket_name">Permit Name</string>
-    <string name="presentation_ticket_number">Permit Number</string>
-    <string name="presentation_ticket_type">Permit Type</string>
+    <string name="presentation_ticket_name">Job Name</string>
+    <string name="presentation_ticket_number">Job Number</string>
+    <string name="presentation_ticket_type">Job Type</string>
     <string name="presentation_segregation_point">Isolation Point</string>
     <string name="presentation_person_lock">Locker</string>
-    <string name="presentation_person_lock_together">Co-locker</string>
+    <string name="presentation_person_lock_together">group lock member</string>
     <string name="presentation_person_safety">Safety Officer</string>
     <string name="presentation_ticket_content">Work Content</string>
 
@@ -90,11 +90,11 @@
     <string name="presentation_hint_line">Please select production line</string>
     <string name="presentation_hint_sop">Please select...</string>
     <string name="presentation_hint_name">Please select</string>
-    <string name="presentation_hint_number">Please enter permit number</string>
-    <string name="presentation_hint_type">Please select permit type</string>
+    <string name="presentation_hint_number">Please enter Job number</string>
+    <string name="presentation_hint_type">Please select Job type</string>
     <string name="presentation_hint_point">Please enter isolation point</string>
-    <string name="presentation_hint_locker">Please select locker</string>
-    <string name="presentation_hint_together">Please enter co-locker</string>
+    <string name="presentation_hint_locker">Select Locker</string>
+    <string name="presentation_hint_together">Please enter group lock member</string>
     <string name="presentation_hint_safety">Please select safety officer</string>
     <string name="presentation_hint_content">Please enter work content</string>
 
@@ -102,16 +102,16 @@
 
 
     <!--  Design  -->
-    <string name="loto">Intelligent Lock Control Cabinet</string>
+    <string name="loto">Smart Lockout Cabinet</string>
     <string name="app_title">Intelligent LOTO</string>
-    <string name="job_management">Job Management</string>
+    <string name="job_management">Job\nManagement</string>
     <string name="settings">Settings</string>
     <string name="workshop">Workstation</string>
-    <string name="technology_sop">Technical SOP</string>
+    <string name="technology_sop">Process SOP</string>
     <string name="job_execution">Job Execution</string>
-    <string name="repair">Maintenance</string>
+    <string name="repair">Repair</string>
     <string name="pre_maintenance">PM</string>
-    <string name="change_shifts">Shift Change</string>
+    <string name="change_shifts">Shift Handover</string>
     <string name="switch_product">Changeover</string>
     <string name="clean">Cleaning</string>
     <string name="back">Back</string>
@@ -134,7 +134,7 @@
     <string name="login_face">Face Login</string>
     <string name="login_fingerprint">Fingerprint Login</string>
     <string name="login_card">Card Login</string>
-    <string name="login_account">Username Login</string>
+    <string name="login_account">Account Login</string>
     <string name="please_swipe_card">Please swipe card</string>
     <string name="please_scan_face">Please scan face</string>
     <string name="please_scan_fingerprint">Please scan fingerprint</string>
@@ -143,20 +143,22 @@
     <string name="machinery_pic">Technology Diagram</string>
     <string name="lock_station">LOTO Station</string>
     <string name="locker">Locker</string>
-    <string name="colocker">Co-locker</string>
+    <string name="colocker">group lock member</string>
     <string name="select">Select</string>
     <string name="select_locker">Select Locker</string>
-    <string name="select_coloker_mars">Select Co-locker (Internal)</string>
-    <string name="select_coloker_outside">Select Co-locker (External)</string>
+    <string name="select_coloker_mars">Select Internal Member</string>
+    <string name="select_coloker_outside">Select External Member</string>
     <string name="isolation_point">Isolation Point</string>
-    <string name="effect">Effect</string>
-    <string name="switch_status">Switch Status</string>
+    <string name="effect">Function</string>
+    <string name="switch_status">Device State</string>
     <string name="lock_status">Lock Status</string>
-    <string name="ready_to_colock">Ready to Co-lock</string>
-    <string name="colocked">Co-locked</string>
+    <string name="ready_to_colock">Pending Group Lock</string>
+    <string name="ready_to_colock_sample">Pending G-Lock</string>
+    <string name="colocked">Group Locked</string>
+    <string name="colocked_sample">G-Locked</string>
     <string name="unlocked">Unlocked</string>
     <string name="locked">Locked</string>
-    <string name="go_locking">Go to Lock</string>
+    <string name="go_locking">Lock</string>
     <string name="go_unlocking">Unlock</string>
     <string name="please_select_machinery">Please select process</string>
     <string name="please_select_sop_type">Please select SOP type</string>
@@ -168,13 +170,13 @@
     <string name="action_confirm_power_isolation">Confirm to verify energy isolation?</string>
     <string name="action_confirm_check_before_unlocking">Confirm to perform pre-unlock check?</string>
     <string name="action_confirm_restore">Confirm to unlock and restore switch?</string>
-    <string name="action_confirm_finish_ticket">Other permits still lock isolation points, confirm to finish?</string>
+    <string name="action_confirm_finish_ticket">Other Jobs still lock isolation points, confirm to finish?</string>
     <string name="logout">Logout</string>
     <string name="cancel">Cancel</string>
     <string name="cancel_countdown">Cancel (%d seconds)</string>
-    <string name="confirm_to_colock">Confirm %s to co-lock?</string>
-    <string name="confirm_to_uncolock">Confirm %s to remove co-lock?</string>
-    <string name="not_involved_in_ticket">You are not involved in this permit</string>
+    <string name="confirm_to_colock">Confirm %s to group lock?</string>
+    <string name="confirm_to_uncolock">Confirm %s to remove group lock?</string>
+    <string name="not_involved_in_ticket">You are not involved in this Job</string>
     <string name="you_are_not_locker_tip">You are not the locker, cannot perform this operation</string>
     <string name="open_all_docks">Open All Docks</string>
     <string name="close_all_docks">Close All Docks</string>
@@ -208,7 +210,7 @@
     <string name="no_board_responses">No board responses</string>
     <string name="no_response_board_exists">There are unresponsive boards</string>
     <string name="please_take_out_ready_device_first">Please take out the ready devices first</string>
-    <string name="can_not_do_colock_action">Co-lock operations are currently unavailable</string>
+    <string name="can_not_do_colock_action">group lock operations are currently unavailable</string>
     <string name="key_is_in_failure_mode">Key is in failure mode</string>
     <string name="uncaught_exception_tip">Sorry, an exception occurred, the app will exit</string>
     <string name="submit">Submit</string>
@@ -248,13 +250,13 @@
     <string name="face_delete_confirm_tip">Confirm to delete face data?</string>
     <string name="my_face">My Face</string>
     <string name="loading_msg_return_key_start">Connecting to key, please wait...</string>
-    <string name="loading_msg_get_ticket_status_start">Reading permit from key</string>
+    <string name="loading_msg_get_ticket_status_start">Reading Job from key</string>
     <string name="key_return_success">Key returned successfully</string>
-    <string name="continue_the_ticket">Please continue to complete the permit</string>
+    <string name="continue_the_ticket">Please continue to complete the Job</string>
     <string name="can_not_lock_in_current_step">Locking not allowed at current step</string>
     <string name="take_out_rest_locks">Please take out remaining unlocked padlocks</string>
     <string name="take_out_key">Please take out the key</string>
-    <string name="ticket_is_starting">Starting permit...</string>
+    <string name="ticket_is_starting">Starting Job...</string>
     <string name="system_is_processing">System processing...</string>
     <string name="take_out_lock_tip">Please take locks from open dock, %d remaining</string>
     <string name="take_out_key_tip">Please take the key from open key dock</string>
@@ -266,28 +268,28 @@
     <string name="waiting_for_checking_before_unlocking">Waiting to perform pre-unlock check</string>
     <string name="waiting_for_restoring_switch_before_unlocking">Waiting to restore switch before unlocking</string>
     <string name="waiting_for_finishing">Waiting to finish current job</string>
-    <string name="allocating_worker_tip">Please assign locker and co-locker</string>
+    <string name="allocating_worker_tip">Please assign locker and group lock member</string>
     <string name="please_go_locking">Please have locker perform locking operation</string>
     <string name="please_return_key_after_locking">Please have locker return the key after locking</string>
-    <string name="please_do_colock_and_remove_colock">Please have co-locker perform co-lock and remove co-lock after work</string>
-    <string name="please_do_colock">Please have co-locker perform co-lock</string>
-    <string name="please_do_remove_colock">Please have co-locker remove co-lock</string>
+    <string name="please_do_colock_and_remove_colock">Please have group lock member perform group lock and remove group lock after work</string>
+    <string name="please_do_colock">Please have group lock member perform group lock</string>
+    <string name="please_do_remove_colock">Please have group lock member remove group lock</string>
     <string name="please_go_unlocking">Please have locker perform unlocking operation</string>
     <string name="please_return_key_after_unlocking">Please have locker return the key after unlocking</string>
     <string name="face_active_fail">Face recognition activation failed</string>
     <string name="face_can_not_process">Face engine activation failed, recognition unavailable</string>
     <string name="face_detected_do_login">Face detected, logging in...</string>
     <string name="current_step_can_not_be_process">Current step cannot be processed temporarily</string>
-    <string name="no_permission_to_handle">You do not have permission for this permit</string>
+    <string name="no_permission_to_handle">You do not have permission for this Job</string>
     <string name="can_not_change_locker">Cannot change locker currently</string>
     <string name="please_add_at_least_colockers">Please add at least %1$d colockers</string>
-    <string name="can_not_change_colocker">Cannot change co-locker currently</string>
+    <string name="can_not_change_colocker">Cannot change group lock member currently</string>
     <string name="is_processing_please_wait">Processing, please wait...</string>
     <string name="doing_login">Logging in...</string>
-    <string name="start_to_send_ticket">Starting to issue permit...</string>
-    <string name="sending_ticket">Issuing permit...</string>
-    <string name="send_ticket_fail">Failed to issue permit</string>
-    <string name="login_method_tip">● You can login directly via fingerprint or card</string>
+    <string name="start_to_send_ticket">Starting to issue Job...</string>
+    <string name="sending_ticket">Issuing Job...</string>
+    <string name="send_ticket_fail">Failed to issue Job</string>
+    <string name="login_method_tip">● Scan Card to login derectly.</string>
     <string name="use_default_cabinet_id">Will use default CabinetId</string>
     <string name="please_set_url">Please enter URL, empty will use default</string>
     <string name="url_format_error">Please start with http:// or https://</string>
@@ -318,7 +320,7 @@
     <string name="icon">icons</string>
     <string name="ticket_name">Ticket Name</string>
     <string name="check">view</string>
-    <string name="ticket_processing">operation in progress</string>
+    <string name="ticket_processing">Jobs In Progress</string>
     <string name="has_no_point_can_unlock">has no point can unlock</string>
     <string name="all_point_already_locked">all point already locked</string>
     <string name="please_done_lock_action_and_colock_action">please done lock action and colock action</string>
@@ -385,7 +387,7 @@
     <string name="already_registration_device_tip">%1$d keys and %2$d padlocks have been entered</string>
     <string name="registration_device_error">entered error</string>
     <string name="device_registration_scan_result_tip">Identified unrecorded keys (%1$d) and padlocks (%2$d).</string>
-    <string name="current_step_can_not_modify_colocker">Current step can not modify co-locker</string>
+    <string name="current_step_can_not_modify_colocker">Current step can not modify group lock member</string>
     <string name="please_done_operation">Please done operation %s first</string>
     <string name="please_press_fingerprint_again">Please press fingerprint again</string>
     <string name="detect_face_tip">Detected face, about to shoot</string>
@@ -415,4 +417,26 @@
     <string name="motor_map">Motor Switch Map</string>
     <string name="apk_downloading">Apk downloading……</string>
     <string name="restart_after_install">Auto start after install</string>
+    <string name="copyright">Wenzhou BoShi Safety Products Co., Ltd.</string>
+    <string name="common_create">Create</string>
+    <string name="workstation">Workstation</string>
+    <string name="select_process_sop">Select Process SOP</string>
+    <string name="select_process_or_device">Select Process/Equipment</string>
+    <string name="select_sop">Select SOP</string>
+    <string name="process_device_name">Process/Equipment Name</string>
+    <string name="job_exec_steps">Execution Steps</string>
+    <string name="common_detail">Details</string>
+    <string name="common_steps">Step</string>
+    <string name="common_icon">Icon</string>
+    <string name="step_name">Step Name</string>
+    <string name="common_status">Status</string>
+    <string name="group_unlocked">Group Lock Removed</string>
+    <string name="group_unlocked_sample">G-Unlocked</string>
+    <string name="common_go_settings">Setup</string>
+    <string name="select_group_locker">Select Group Member</string>
+    <string name="confirm_personal">Verify Personnel</string>
+    <string name="job_progress">Job Progress</string>
+    <string name="lock_info">Lockout Info</string>
+    <string name="together_info">Group Lock Info</string>
+    <string name="guide_create_job">Click a workstation on the map to create.</string>
 </resources>

+ 28 - 4
app/src/main/res/values-zh/strings.xml

@@ -133,8 +133,8 @@
     <string name="unlock_and_restore_switch">拆锁恢复开关</string>
     <string name="login_face">人脸登录</string>
     <string name="login_fingerprint">指纹登录</string>
-    <string name="login_card">卡登录</string>
-    <string name="login_account">用户名登录</string>
+    <string name="login_card">卡登录</string>
+    <string name="login_account">账号登录</string>
     <string name="please_swipe_card">请刷卡</string>
     <string name="please_scan_face">请刷脸</string>
     <string name="please_scan_fingerprint">请刷指纹</string>
@@ -150,10 +150,12 @@
     <string name="select_coloker_outside">选择共锁人(外部)</string>
     <string name="isolation_point">隔离点</string>
     <string name="effect">作用</string>
-    <string name="switch_status">电机状态</string>
+    <string name="switch_status">开关状态</string>
     <string name="lock_status">上锁状态</string>
     <string name="ready_to_colock">待共锁</string>
+    <string name="ready_to_colock_sample">待共锁</string>
     <string name="colocked">已共锁</string>
+    <string name="colocked_sample">已共锁</string>
     <string name="unlocked">已解锁</string>
     <string name="locked">未解锁</string>
     <string name="go_locking">去上锁</string>
@@ -287,7 +289,7 @@
     <string name="start_to_send_ticket">开始下发工作票······</string>
     <string name="sending_ticket">工作票下发中······</string>
     <string name="send_ticket_fail">作业票下发失败</string>
-    <string name="login_method_tip">● 您可以通过指纹或刷卡直接进行登录</string>
+    <string name="login_method_tip">● 刷卡可以直接进行登录</string>
     <string name="use_default_cabinet_id">将使用默认锁柜id</string>
     <string name="please_set_url">请输入地址,清空保存将使用默认地址</string>
     <string name="url_format_error">请以http://或https://开头</string>
@@ -415,4 +417,26 @@
     <string name="motor_map">电机开关布局图</string>
     <string name="apk_downloading">安装包下载中……</string>
     <string name="restart_after_install">安装完成之后自动启动</string>
+    <string name="copyright">温州博士安全⽤品有限公司</string>
+    <string name="common_create">创建</string>
+    <string name="workstation">岗位</string>
+    <string name="select_process_sop">选择工艺SOP</string>
+    <string name="select_process_or_device">请选择工艺/设备</string>
+    <string name="select_sop">请选择SOP</string>
+    <string name="process_device_name">⼯艺/设备名称</string>
+    <string name="job_exec_steps">作业执行步骤</string>
+    <string name="common_detail">详情</string>
+    <string name="common_steps">步骤</string>
+    <string name="common_icon">图标</string>
+    <string name="step_name">步骤名称</string>
+    <string name="common_status">状态</string>
+    <string name="group_unlocked">已解除共锁</string>
+    <string name="group_unlocked_sample">已解除共锁</string>
+    <string name="common_go_settings">设置</string>
+    <string name="select_group_locker">选择共锁人</string>
+    <string name="confirm_personal">确认人员</string>
+    <string name="job_progress">工作进度</string>
+    <string name="lock_info">上锁信息</string>
+    <string name="together_info">共锁信息</string>
+    <string name="guide_create_job">请点击地图中的岗位进行创建</string>
 </resources>

+ 28 - 4
app/src/main/res/values/strings.xml

@@ -133,8 +133,8 @@
     <string name="unlock_and_restore_switch">拆锁恢复开关</string>
     <string name="login_face">人脸登录</string>
     <string name="login_fingerprint">指纹登录</string>
-    <string name="login_card">卡登录</string>
-    <string name="login_account">用户名登录</string>
+    <string name="login_card">卡登录</string>
+    <string name="login_account">账号登录</string>
     <string name="please_swipe_card">请刷卡</string>
     <string name="please_scan_face">请刷脸</string>
     <string name="please_scan_fingerprint">请刷指纹</string>
@@ -150,10 +150,12 @@
     <string name="select_coloker_outside">选择共锁人(外部)</string>
     <string name="isolation_point">隔离点</string>
     <string name="effect">作用</string>
-    <string name="switch_status">电机状态</string>
+    <string name="switch_status">开关状态</string>
     <string name="lock_status">上锁状态</string>
     <string name="ready_to_colock">待共锁</string>
+    <string name="ready_to_colock_sample">待共锁</string>
     <string name="colocked">已共锁</string>
+    <string name="colocked_sample">已共锁</string>
     <string name="unlocked">已解锁</string>
     <string name="locked">未解锁</string>
     <string name="go_locking">去上锁</string>
@@ -287,7 +289,7 @@
     <string name="start_to_send_ticket">开始下发工作票······</string>
     <string name="sending_ticket">工作票下发中······</string>
     <string name="send_ticket_fail">作业票下发失败</string>
-    <string name="login_method_tip">● 您可以通过指纹或刷卡直接进行登录</string>
+    <string name="login_method_tip">● 刷卡可以直接进行登录</string>
     <string name="use_default_cabinet_id">将使用锁柜id</string>
     <string name="please_set_url">请输入地址,清空保存将使用默认地址</string>
     <string name="url_format_error">请以http://或https://开头</string>
@@ -415,4 +417,26 @@
     <string name="motor_map">电机开关布局图</string>
     <string name="apk_downloading">安装包下载中……</string>
     <string name="restart_after_install">安装完成之后自动启动</string>
+    <string name="copyright">温州博士安全⽤品有限公司</string>
+    <string name="common_create">创建</string>
+    <string name="workstation">岗位</string>
+    <string name="select_process_sop">选择工艺SOP</string>
+    <string name="select_process_or_device">请选择工艺/设备</string>
+    <string name="select_sop">请选择SOP</string>
+    <string name="process_device_name">⼯艺/设备名称</string>
+    <string name="job_exec_steps">作业执行步骤</string>
+    <string name="common_detail">详情</string>
+    <string name="common_steps">步骤</string>
+    <string name="common_icon">图标</string>
+    <string name="step_name">步骤名称</string>
+    <string name="common_status">状态</string>
+    <string name="group_unlocked">已解除共锁</string>
+    <string name="group_unlocked_sample">已解除共锁</string>
+    <string name="common_go_settings">设置</string>
+    <string name="select_group_locker">选择共锁人</string>
+    <string name="confirm_personal">确认人员</string>
+    <string name="job_progress">工作进度</string>
+    <string name="lock_info">上锁信息</string>
+    <string name="together_info">共锁信息</string>
+    <string name="guide_create_job">请点击地图中的岗位进行创建</string>
 </resources>