Kaynağa Gözat

更新内容:
1. 主页补充临时作业入口
2. 补充临时作业的创建Dialog
3. 实现了列表临时作业的列表UI

wzbs 6 ay önce
ebeveyn
işleme
9b181614be

+ 14 - 0
app/src/main/java/com/grkj/iscs_mars/view/activity/HomeActivity.kt

@@ -35,6 +35,8 @@ import com.grkj.iscs_mars.view.fragment.ExceptionReportFragment
 import com.grkj.iscs_mars.view.fragment.JobManagementFragment
 import com.grkj.iscs_mars.view.fragment.SettingFragment
 import com.grkj.iscs_mars.view.fragment.SystemSettingFragment
+import com.grkj.iscs_mars.view.fragment.TempJobFragment
+import com.grkj.iscs_mars.view.fragment.TempJobManagementFragment
 import com.grkj.iscs_mars.view.iview.IHomeView
 import com.grkj.iscs_mars.view.presenter.HomePresenter
 import com.zhy.adapter.recyclerview.CommonAdapter
@@ -75,6 +77,18 @@ class HomeActivity : BaseMvpActivity<IHomeView, HomePresenter, ActivityHomeBindi
                     )
                 )
             }
+            // 临时作业入口
+//            if (userInfo.roles?.any { it == USER_ROLE_DRAWER || it == USER_ROLE_LOCKER || it == USER_ROLE_COLOCKER || it == USER_ROLE_GUARD } == true) {
+//                mMenuList.addAll(
+//                    mutableListOf(
+//                        Menu(
+//                            "临时作业",
+//                            R.mipmap.job_management,
+//                            TempJobManagementFragment()
+//                        )
+//                    )
+//                )
+//            }
             if (userInfo.roles?.any { it == USER_ROLE_ADMHDWTESTER } == true) {
                 BusinessManager.isTestMode = true
                 mMenuList.add(

+ 30 - 0
app/src/main/java/com/grkj/iscs_mars/view/dialog/CreateTempJobDialog.kt

@@ -0,0 +1,30 @@
+package com.grkj.iscs_mars.view.dialog
+
+import android.content.Context
+import com.grkj.iscs_mars.databinding.DialogCreateTempJobBinding
+import com.grkj.iscs_mars.view.base.BaseDialog
+
+/**
+ * 创建临时作业Dialog
+ */
+class CreateTempJobDialog(
+    val ctx: Context,
+    val onCreateClick: (jobName: String, jobPoints: Int) -> Unit
+) :
+    BaseDialog<DialogCreateTempJobBinding>(ctx) {
+
+    override val viewBinding: DialogCreateTempJobBinding
+        get() = DialogCreateTempJobBinding.inflate(layoutInflater)
+
+    override fun initView() {
+        mBinding?.tvCancel?.setOnClickListener { dismiss() }
+        mBinding?.tvCreate?.setOnClickListener {
+            val jobName = mBinding?.etJobName?.text ?: ""
+            val jobPoints = mBinding?.etJobPointNumber?.text ?: ""
+            if (jobName.trim().isEmpty()) return@setOnClickListener
+            if (jobPoints.isEmpty()) return@setOnClickListener
+            onCreateClick(jobName.toString(), jobPoints.toString().toInt())
+            dismiss()
+        }
+    }
+}

+ 68 - 0
app/src/main/java/com/grkj/iscs_mars/view/fragment/TempJobFragment.kt

@@ -0,0 +1,68 @@
+package com.grkj.iscs_mars.view.fragment
+
+import androidx.lifecycle.lifecycleScope
+import com.grkj.iscs_mars.BusinessManager
+import com.grkj.iscs_mars.R
+import com.grkj.iscs_mars.databinding.FragmentTempJobBinding
+import com.grkj.iscs_mars.model.bo.PageChangeBO
+import com.grkj.iscs_mars.view.base.BaseMvpFragment
+import com.grkj.iscs_mars.view.dialog.CreateTempJobDialog
+import com.grkj.iscs_mars.view.iview.ITempJobView
+import com.grkj.iscs_mars.view.presenter.TempJobPresenter
+import com.zhy.adapter.recyclerview.CommonAdapter
+import com.zhy.adapter.recyclerview.base.ViewHolder
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
+
+/**
+ * 临时(简化)作业票页面
+ */
+class TempJobFragment(val changePage: (PageChangeBO) -> Unit) :
+    BaseMvpFragment<ITempJobView, TempJobPresenter, FragmentTempJobBinding>() {
+
+    private var mCreateJobDialog: CreateTempJobDialog? = null
+
+    override val viewBinding: FragmentTempJobBinding
+        get() = FragmentTempJobBinding.inflate(layoutInflater)
+
+    override fun initPresenter() = TempJobPresenter()
+
+    override fun initView() {
+        mBinding?.tvAdd?.setOnClickListener { showCreateTempJobDialog() }
+        mBinding?.rvTempJobs?.adapter = object :
+            CommonAdapter<String>(
+                requireActivity(),
+                R.layout.item_rv_temp_job_point,
+                listOf("1", "2", "3")
+            ) {
+            override fun convert(holder: ViewHolder?, t: String?, position: Int) {
+                holder?.setText(R.id.tv_name, t ?: "")
+                holder?.setText(R.id.tv_function, t ?: "")
+                holder?.setOnClickListener(R.id.tv_name) {
+                    changePage(PageChangeBO(1, 10, 26, 4, "ACM"))
+                }
+            }
+        }
+    }
+
+    private fun showCreateTempJobDialog() {
+        mCreateJobDialog ?: run {
+            mCreateJobDialog = CreateTempJobDialog(requireContext()) { jobName, jobPoints ->
+                BusinessManager.sendLoadingEventMsg("创建中...", true)
+                lifecycleScope.launch {
+                    delay(2000)
+                    BusinessManager.sendLoadingEventMsg("", false)
+                }
+            }
+        }
+        mCreateJobDialog?.show()
+    }
+
+    /**
+     * 保留刷新数据使用
+     */
+    fun refreshPage() {
+
+    }
+
+}

+ 70 - 0
app/src/main/java/com/grkj/iscs_mars/view/fragment/TempJobManagementFragment.kt

@@ -0,0 +1,70 @@
+package com.grkj.iscs_mars.view.fragment
+
+import android.widget.ImageView
+import com.grkj.iscs_mars.R
+import com.grkj.iscs_mars.databinding.FragmentJobManagementBinding
+import com.grkj.iscs_mars.model.bo.PageChangeBO
+import com.grkj.iscs_mars.util.log.LogUtil
+import com.grkj.iscs_mars.view.activity.HomeActivity.Menu
+import com.grkj.iscs_mars.view.adapter.MenuAdapter
+import com.grkj.iscs_mars.view.base.BaseMvpFragment
+import com.grkj.iscs_mars.view.iview.IJobManagementView
+import com.grkj.iscs_mars.view.presenter.JobManagementPresenter
+import com.zhy.adapter.recyclerview.CommonAdapter
+import com.zhy.adapter.recyclerview.base.ViewHolder
+
+/**
+ * 作业管理页
+ */
+class TempJobManagementFragment :
+    BaseMvpFragment<IJobManagementView, JobManagementPresenter, FragmentJobManagementBinding>() {
+
+    private lateinit var mMenuList: MutableList<Menu>
+
+    override val viewBinding: FragmentJobManagementBinding
+        get() = FragmentJobManagementBinding.inflate(layoutInflater)
+
+    override fun initView() {
+        mMenuList = mutableListOf(
+            Menu("临时作业列表", R.mipmap.workshop, TempJobFragment { pageChangeBO ->
+                changePage(pageChangeBO)
+            }),
+            Menu(getString(R.string.job_execution), R.mipmap.job_execution, JobExecutionFragment { pageChangeBO ->
+                changePage(pageChangeBO)
+            })
+        )
+
+        mBinding?.vp?.isUserInputEnabled = false
+        mBinding?.vp?.offscreenPageLimit = mMenuList.size
+        mBinding?.vp?.adapter = MenuAdapter(requireActivity().supportFragmentManager, lifecycle, mMenuList)
+
+        mBinding?.rvTab?.adapter = object : CommonAdapter<Menu>(activity, R.layout.item_rv_job_management, mMenuList) {
+            override fun convert(holder: ViewHolder, tab: Menu, position: Int) {
+                holder.getView<ImageView>(R.id.iv).setImageResource(tab.icon!!)
+                holder.setText(R.id.tv_name, tab.title)
+                holder.setOnClickListener(R.id.root) {
+                    if (position == 0) {
+                        mBinding?.vp?.currentItem = 0
+                        (mMenuList[0].fragment as TempJobFragment).refreshPage()
+                        notifyDataSetChanged()
+                    }
+                }
+                holder.setVisible(R.id.v_indicator, position == mBinding?.vp?.currentItem)
+            }
+        }
+    }
+
+    private fun changePage(pageChangeBO: PageChangeBO) {
+        LogUtil.i("$pageChangeBO")
+        when (pageChangeBO.pageIdx) {
+            0 -> (mMenuList[0].fragment as TempJobFragment).refreshPage(pageChangeBO)
+            1 -> (mMenuList[1].fragment as JobExecutionFragment).refreshPage(pageChangeBO)
+        }
+        mBinding?.vp?.currentItem = if (pageChangeBO.pageIdx == -1) 0 else pageChangeBO.pageIdx
+        mBinding?.rvTab?.adapter?.notifyDataSetChanged()
+    }
+
+    override fun initPresenter(): JobManagementPresenter {
+        return JobManagementPresenter()
+    }
+}

+ 6 - 0
app/src/main/java/com/grkj/iscs_mars/view/iview/ITempJobView.kt

@@ -0,0 +1,6 @@
+package com.grkj.iscs_mars.view.iview
+
+import com.grkj.iscs_mars.view.base.IView
+
+interface ITempJobView: IView {
+}

+ 7 - 0
app/src/main/java/com/grkj/iscs_mars/view/presenter/TempJobPresenter.kt

@@ -0,0 +1,7 @@
+package com.grkj.iscs_mars.view.presenter
+
+import com.grkj.iscs_mars.view.base.BasePresenter
+import com.grkj.iscs_mars.view.iview.ITempJobView
+
+class TempJobPresenter: BasePresenter<ITempJobView>() {
+}

+ 51 - 0
app/src/main/res/layout/dialog_create_temp_job.xml

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:gravity="center"
+    app:cardBackgroundColor="@color/dialog_card_login_bg_no_alpha"
+    app:strokeColor="@color/common_transparent">
+
+    <LinearLayout
+        android:layout_width="165dp"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:gravity="center"
+        android:orientation="vertical"
+        android:padding="20dp">
+
+        <EditText
+            android:id="@+id/et_job_name"
+            style="@style/CommonEdit"
+            android:layout_width="match_parent"
+            android:layout_marginBottom="10dp"
+            android:hint="输入作业名称" />
+
+        <EditText
+            android:id="@+id/et_job_point_number"
+            style="@style/CommonEdit"
+            android:layout_width="match_parent"
+            android:layout_marginBottom="10dp"
+            android:digits="0123456789"
+            android:hint="请输入点位数量"
+            android:inputType="number" />
+
+        <TextView
+            android:id="@+id/tv_create"
+            style="@style/CommonBtn"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="10dp"
+            android:text="创建" />
+
+        <TextView
+            android:id="@+id/tv_cancel"
+            style="@style/CommonBtn"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@drawable/white_stroke_bg"
+            android:text="@string/cancel" />
+    </LinearLayout>
+
+</com.google.android.material.card.MaterialCardView>

+ 81 - 0
app/src/main/res/layout/fragment_temp_job.xml

@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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="match_parent"
+    android:padding="@dimen/common_spacing_small"
+    tools:context=".view.fragment.TempJobFragment">
+
+    <TextView
+        android:id="@+id/tv_add"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_marginLeft="@dimen/common_spacing_small"
+        android:background="@drawable/common_btn_blue_bg"
+        android:gravity="center"
+        android:paddingHorizontal="@dimen/common_spacing_big"
+        android:paddingVertical="@dimen/common_text_padding"
+        android:text="@string/add"
+        android:textColor="@color/white"
+        android:textSize="@dimen/common_text_size" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@id/tv_add"
+        android:layout_marginTop="@dimen/common_spacing_small"
+        android:background="@drawable/item_rv_technology_sop_bg_normal"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:id="@+id/tab_header"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/common_rv_tab_item_height"
+            android:layout_marginTop="@dimen/common_spacing_small"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tv_job_name"
+                style="@style/CommonTextView"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:text="作业名称" />
+
+            <View
+                android:layout_width="@dimen/divider_line_width"
+                android:layout_height="match_parent"
+                android:layout_marginVertical="@dimen/common_spacing_small"
+                android:background="@color/common_bg_white_30" />
+
+            <TextView
+                android:id="@+id/tv_job_number"
+                style="@style/CommonTextView"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:text="点位数" />
+
+            <View
+                android:layout_width="@dimen/divider_line_width"
+                android:layout_height="match_parent"
+                android:layout_marginVertical="@dimen/common_spacing_small"
+                android:background="@color/common_bg_white_30" />
+
+            <TextView
+                android:id="@+id/tv_opt"
+                style="@style/CommonTextView"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:text="操作" />
+
+        </LinearLayout>
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/rv_temp_jobs"
+            style="@style/CommonRecyclerView"
+            android:layout_height="wrap_content" />
+
+    </LinearLayout>
+
+</RelativeLayout>

+ 57 - 0
app/src/main/res/layout/item_rv_temp_job_point.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/root"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/common_rv_tab_item_height"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/tv_name"
+            style="@style/CommonTextView"
+            android:layout_width="0dp"
+            android:layout_weight="1" />
+
+        <View
+            android:layout_width="@dimen/divider_line_width"
+            android:layout_height="match_parent"
+            android:layout_marginVertical="@dimen/common_spacing_small"
+            android:background="@color/common_bg_white_30" />
+
+        <TextView
+            android:id="@+id/tv_function"
+            style="@style/CommonTextView"
+            android:layout_width="0dp"
+            android:layout_weight="1" />
+
+        <View
+            android:layout_width="@dimen/divider_line_width"
+            android:layout_height="match_parent"
+            android:layout_marginVertical="@dimen/common_spacing_small"
+            android:background="@color/common_bg_white_30" />
+
+        <RelativeLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1">
+
+            <ImageView
+                android:id="@+id/iv_status"
+                android:layout_width="35dp"
+                android:layout_height="15dp"
+                android:layout_centerInParent="true"
+                android:paddingVertical="@dimen/common_spacing_smallest" />
+        </RelativeLayout>
+
+    </LinearLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/divider_line_width"
+        android:background="@color/common_bg_white_30" />
+</LinearLayout>

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

@@ -31,6 +31,7 @@
     <color name="red_500">#EF4444</color>
     <color name="orange_500">#F97316</color>
     <color name="gray_600">#4B5563</color>
+    <color name="dialog_card_login_bg_no_alpha">#0E57EA</color>
     <color name="dialog_card_login_bg">#990E57EA</color>
     <color name="home_menu_bg">#4D2B7AE9</color>
     <color name="common_btn_red_bg">#80FF0000</color>