update审批列表和控制网流程

main
chenglifeng 7 months ago
parent db00972a0c
commit 802043d9ad
  1. 10
      app/src/main/java/com/project/survey/extend/ViewExt.kt
  2. 31
      app/src/main/java/com/project/survey/model/ApprovalResponse.kt
  3. 2
      app/src/main/java/com/project/survey/ui/approval/ApprovalActivity.kt
  4. 6
      app/src/main/java/com/project/survey/ui/controlnet/ControlNetFirstListActivity.kt
  5. 5
      app/src/main/java/com/project/survey/ui/controlnet/ControlNetSpecialListActivity.kt
  6. 43
      app/src/main/java/com/project/survey/ui/controlnet/ControlPointActivity.kt
  7. 7
      app/src/main/java/com/project/survey/ui/home/MeFragment.kt
  8. 11
      app/src/main/java/com/project/survey/ui/login/LoginActivity.kt
  9. 15
      app/src/main/java/com/project/survey/ui/login/LoginInputCodeActivity.kt
  10. 2
      app/src/main/java/com/project/survey/widget/SearchWidget.kt
  11. 9
      app/src/main/java/com/project/survey/widget/edittext/verificationcode/SerialnumberLayout.java
  12. 69
      app/src/main/res/layout/activity_control_net_list.xml
  13. 41
      app/src/main/res/layout/activity_control_point.xml
  14. 16
      app/src/main/res/layout/activity_login_input_code.xml

@ -1,6 +1,8 @@
package com.project.survey.extend
import android.view.View
import android.widget.EditText
import com.project.survey.util.KeyboardUtils
import com.scwang.smart.refresh.layout.SmartRefreshLayout
@ -30,4 +32,12 @@ fun View.isVisibleOrGone(visible: Boolean){
fun SmartRefreshLayout.smartDismiss() {
finishRefresh(0)
finishLoadMore(0)
}
fun EditText.showSoftInput(){
KeyboardUtils.showSoftInput(this)
}
fun EditText.hideSoftInput(){
KeyboardUtils.hideSoftInput(this)
}

@ -1,8 +1,10 @@
package com.project.survey.model
import com.project.survey.logic.bean.ListResult
data class ApprovalResponse(
val badges: Badge,
val data: ApprovalData
val data: ListResult<ApprovalBean>
)
data class Badge(
@ -13,11 +15,28 @@ data class Badge(
val PI_OWNER: Int
)
data class ApprovalData(
val rows: List<ApprovalBean>,
val totalCount: Int
)
/**
* {
* "id": "9234694fcda64ceb8ac88d4c8d66f47f",
* "title": "zlh(2024-09-26)发起【三标体系审批流程(施工单位提交)】",
* "context": "2024-09-26 14:02:38,由我【发起给冯毅山(监理单位负责人)】,意见:同意",
* "collect": "0",
* "delay": "0",
* "submitTime": "2024-09-26 14:02:38",
* "tableCode": "BD_SBTXWJZB",
* "funcCode": "BD_SBTXWJZB",
* "pkValue": "884febf5728544869fd80be90210c3b0",
* "submitUserId": null,
* "submitUserName": "zlh",
* "submitUserPhoto": "",
* "piid": "eeeba472-7bcc-11ef-b80c-00163ef452a9",
* "exigency": null,
* "isReadCode": null,
* "isReadName": null,
* "funcName": "三标体系文件",
* "urging": null
* }
*/
data class ApprovalBean(
val id: String,
val title: String,

@ -72,7 +72,6 @@ class ApprovalActivity : BaseBindingActivity<ActivityApprovalBinding>(), OnRefre
mBinding.recyclerView.addItemDecoration(TransparentDividerDecoration(this))
mBinding.recyclerView.adapter = adapter
adapter.isStateViewEnable = true
adapter.setStateViewLayout(this, R.layout.layout_no_data)
}
override fun initData() {
@ -106,6 +105,7 @@ class ApprovalActivity : BaseBindingActivity<ActivityApprovalBinding>(), OnRefre
// } else {
// EasyHttpUtil.get("je/workflow/currentUserTask/getTask")
// }
fetchData()
}
private fun fetchData() {

@ -37,7 +37,7 @@ class ControlNetFirstListActivity : BaseBindingActivity<ActivityControlNetListBi
private var start = 0
override fun initView() {
immersionToolbar(mBinding.ilToolBar.toolbar, R.string.head_control_network)
immersionToolbar(mBinding.toolbar, R.string.head_control_network)
initVersion()
@ -45,8 +45,6 @@ class ControlNetFirstListActivity : BaseBindingActivity<ActivityControlNetListBi
mBinding.recyclerView.addItemDecoration(TransparentDividerDecoration(this))
mBinding.recyclerView.adapter = adapter
adapter.isStateViewEnable = true
adapter.setStateViewLayout(this, R.layout.layout_no_data)
}
private fun initVersion() {
@ -55,7 +53,7 @@ class ControlNetFirstListActivity : BaseBindingActivity<ActivityControlNetListBi
versionList.add(ControlNetVersionBean("版本二"))
versionList.add(ControlNetVersionBean("版本三"))
mBinding.ilSearch.spinner.setItems(versionList)
mBinding.spinner.setItems(versionList)
}
override fun initData() {

@ -37,7 +37,7 @@ class ControlNetSpecialListActivity : BaseBindingActivity<ActivityControlNetList
private var start = 0
override fun initView() {
immersionToolbar(mBinding.ilToolBar.toolbar, R.string.dedicated_control_network)
immersionToolbar(mBinding.toolbar, R.string.dedicated_control_network)
initVersion()
@ -45,7 +45,6 @@ class ControlNetSpecialListActivity : BaseBindingActivity<ActivityControlNetList
mBinding.recyclerView.addItemDecoration(TransparentDividerDecoration(this))
mBinding.recyclerView.adapter = adapter
adapter.isStateViewEnable = true
adapter.setStateViewLayout(this, R.layout.layout_no_data)
}
override fun initData() {
@ -105,7 +104,7 @@ class ControlNetSpecialListActivity : BaseBindingActivity<ActivityControlNetList
versionList.add(ControlNetVersionBean("版本二"))
versionList.add(ControlNetVersionBean("版本三"))
mBinding.ilSearch.spinner.setItems(versionList)
mBinding.spinner.setItems(versionList)
}

@ -2,16 +2,13 @@ package com.project.survey.ui.controlnet
import androidx.activity.viewModels
import com.project.survey.R
import com.project.survey.constants.SPConstants
import com.project.survey.databinding.ActivityControlNetListBinding
import com.project.survey.databinding.ActivityControlPointBinding
import com.project.survey.extend.smartDismiss
import com.project.survey.logic.viewmodel.ControlNetViewModel
import com.project.survey.model.ControlNetVersionBean
import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.ui.controlnet.adapter.ControlNetFirstAdapter
import com.project.survey.ui.controlnet.adapter.ControlNetSpecialAdapter
import com.project.survey.util.ActivityNavUtil
import com.project.survey.util.SPUtils
import com.project.survey.widget.decoration.TransparentDividerDecoration
import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
@ -19,7 +16,7 @@ import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
/**
* 控制点详情
*/
class ControlPointActivity : BaseBindingActivity<ActivityControlNetListBinding>(),
class ControlPointActivity : BaseBindingActivity<ActivityControlPointBinding>(),
OnRefreshLoadMoreListener {
companion object {
@ -28,8 +25,8 @@ class ControlPointActivity : BaseBindingActivity<ActivityControlNetListBinding>(
}
}
override fun getBinding(): ActivityControlNetListBinding =
ActivityControlNetListBinding.inflate(layoutInflater)
override fun getBinding(): ActivityControlPointBinding =
ActivityControlPointBinding.inflate(layoutInflater)
private val viewModel: ControlNetViewModel by viewModels()
@ -38,15 +35,12 @@ class ControlPointActivity : BaseBindingActivity<ActivityControlNetListBinding>(
private var start = 0
override fun initView() {
immersionToolbar(mBinding.ilToolBar.toolbar, "控制点详情")
initVersion()
immersionToolbar(mBinding.toolbar, "控制点详情")
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(this)
mBinding.recyclerView.addItemDecoration(TransparentDividerDecoration(this))
mBinding.recyclerView.adapter = adapter
adapter.isStateViewEnable = true
adapter.setStateViewLayout(this, R.layout.layout_no_data)
}
override fun initData() {
@ -77,12 +71,16 @@ class ControlPointActivity : BaseBindingActivity<ActivityControlNetListBinding>(
fetchData()
}
private fun fetchData(){
viewModel.fetchSpecialControlNetCGList("", currentPage, start)
private fun fetchData(searchValue: String = "") {
val query = if (searchValue.isBlank())
""
else
"{\"custom\":[{\"type\":\"and\",\"value\":[{\"code\":\"KZWZBCG_POINTNAME\",\"cn\":\"and\",\"type\":\"like\",\"value\":\"${searchValue}\"}],\"cn\":\"and\"}],\"order\":[],\"_types\":[\"group\"]}"
viewModel.fetchSpecialControlNetCGList(query, currentPage, start)
}
override fun onRefresh(refreshLayout: RefreshLayout) {
currentPage = 0
currentPage = 1
start = 0
fetchData()
}
@ -92,19 +90,12 @@ class ControlPointActivity : BaseBindingActivity<ActivityControlNetListBinding>(
}
override fun initListener() {
}
private fun initVersion() {
val versionList = mutableListOf<ControlNetVersionBean>()
versionList.add(ControlNetVersionBean("版本一"))
versionList.add(ControlNetVersionBean("版本二"))
versionList.add(ControlNetVersionBean("版本三"))
mBinding.ilSearch.spinner.setItems(versionList)
mBinding.searchWidget.setOnEditorSearchListener {
currentPage = 1
start = 0
fetchData(it)
}
}
}

@ -47,13 +47,6 @@ class MeFragment : BaseBindingFragment<FragmentMeBinding>() {
}
}
private fun updateUIByData() {
val token = SPUtils.getString(SPConstants.TOKEN) ?: ""
mBinding.tvName.text =
if (token.isBlank()) "请登录" else SPUtils.getString(SPConstants.ACCOUNT) ?: ""
}
override fun initListener() {
mBinding.tvLoginOut.setOnClickNoRepeatListener {
// 退出登录

@ -5,25 +5,22 @@ import android.view.View
import androidx.activity.viewModels
import com.gyf.immersionbar.ImmersionBar
import com.project.survey.R
import com.project.survey.constants.SPConstants
import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.databinding.ActivityLoginBinding
import com.project.survey.extend.isVisibleOrGone
import com.project.survey.extend.isVisibleOrInvisible
import com.project.survey.extend.setOnClickNoRepeatListener
import com.project.survey.extend.toast
import com.project.survey.logic.viewmodel.LoginViewModel
import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.util.ActivityNavUtil
import com.project.survey.util.SPUtils
import com.project.survey.util.LogoutUtil
import com.project.survey.util.Tools
class LoginActivity : BaseBindingActivity<ActivityLoginBinding>() {
companion object {
fun start() {
SPUtils.put(SPConstants.TOKEN, "")
SPUtils.put(SPConstants.ACCOUNT, "")
SPUtils.put(SPConstants.MOBILE_PHONE, "")
LogoutUtil.clearSP()
ActivityNavUtil.finishAllActivities()
ActivityNavUtil.startActivity<LoginActivity> { }
}

@ -1,18 +1,20 @@
package com.project.survey.ui.login
import androidx.activity.viewModels
import com.project.survey.R
import androidx.lifecycle.lifecycleScope
import com.project.survey.databinding.ActivityLoginInputCodeBinding
import com.project.survey.extend.showSoftInput
import com.project.survey.logic.viewmodel.LoginViewModel
import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.util.ActivityNavUtil
import com.project.survey.util.KeyboardUtils
import com.project.survey.util.param.Param
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class LoginInputCodeActivity : BaseBindingActivity<ActivityLoginInputCodeBinding>() {
companion object {
fun start(account: String, password: String, mobile:String) {
fun start(account: String, password: String, mobile: String) {
ActivityNavUtil.startActivity<LoginInputCodeActivity> {
putString("account", account)
putString("password", password)
@ -36,7 +38,12 @@ class LoginInputCodeActivity : BaseBindingActivity<ActivityLoginInputCodeBinding
private lateinit var mobile: String
override fun initView() {
immersionToolbar(mBinding.ilToolBar.toolbar)
immersionToolbar(mBinding.toolbar)
lifecycleScope.launch {
delay(500L)
mBinding.etInputCode.firstEditText?.showSoftInput()
}
// if (mobile.length == 11) {
// mBinding.tvTips.text =

@ -8,6 +8,7 @@ import androidx.appcompat.widget.LinearLayoutCompat
import com.project.survey.R
import com.project.survey.databinding.WidgetSearchBinding
import com.project.survey.databinding.WidgetSectionItemBinding
import com.project.survey.extend.hideSoftInput
import com.project.survey.extend.isVisibleOrGone
import com.project.survey.extend.toast
@ -33,6 +34,7 @@ class SearchWidget @JvmOverloads constructor(
binding.etSearch.setOnEditorActionListener { textView, i, keyEvent ->
if (i == EditorInfo.IME_ACTION_SEARCH) {
onSearch(textView.text.toString())
binding.etSearch.hideSoftInput()
}
return@setOnEditorActionListener true
}

@ -168,7 +168,6 @@ public class SerialnumberLayout extends RelativeLayout {
editViews.get(0).setFocusable(true);
editViews.get(0).setFocusableInTouchMode(true);
editViews.get(0).requestFocus();
KeyboardUtils.showSoftInput(editViews.get(0));
}
private void showCode(int location, String code) {
@ -188,6 +187,14 @@ public class SerialnumberLayout extends RelativeLayout {
et_code.setText("");
}
public EditText getFirstEditText() {
if (editViews.isEmpty()) {
return null;
} else {
return editViews.get(0);
}
}
private OnInputListener onInputListener;
//定义回调

@ -5,13 +5,70 @@
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/ilToolBar"
layout="@layout/sh_toolbar" />
<!-- <include-->
<!-- android:id="@+id/ilToolBar"-->
<!-- layout="@layout/sh_toolbar" />-->
<include
android:id="@+id/ilSearch"
layout="@layout/item_search_control_net" />
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/transparent"
app:navigationIcon="@drawable/icon_toolbar_back"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:titleCentered="true"
app:titleTextAppearance="@style/ToolbarTextAppearance" />
<!-- <include-->
<!-- android:id="@+id/ilSearch"-->
<!-- layout="@layout/item_search_control_net" />-->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<FrameLayout
android:id="@+id/llSpinner"
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_marginStart="16dp"
android:layout_marginTop="7dp"
android:background="@drawable/bg_search"
app:layout_constraintEnd_toStartOf="@id/searchWidget"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.project.survey.widget.materialspinner.MaterialSpinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginVertical="7dp" />
</FrameLayout>
<View
android:layout_width="0dp"
android:layout_height="2dp"
android:layout_marginTop="7dp"
android:background="@drawable/bg_search_shadow_2"
app:layout_constraintEnd_toEndOf="@id/llSpinner"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/llSpinner" />
<com.project.survey.widget.SearchWidget
android:id="@+id/searchWidget"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_weight="2"
app:layout_constraintStart_toEndOf="@id/llSpinner"
app:layout_constraintTop_toTopOf="parent"
app:sw_hint="请输入控制网名称" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/smartRefreshLayout"

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/transparent"
app:navigationIcon="@drawable/icon_toolbar_back"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:titleCentered="true"
app:titleTextAppearance="@style/ToolbarTextAppearance" />
<!-- <include-->
<!-- android:id="@+id/ilSearch"-->
<!-- layout="@layout/item_search_control_net" />-->
<com.project.survey.widget.SearchWidget
android:id="@+id/searchWidget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:sw_hint="请输入点名进行搜索" />
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/smartRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/sw_12dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</LinearLayout>

@ -5,9 +5,19 @@
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/ilToolBar"
layout="@layout/sh_toolbar" />
<!-- <include-->
<!-- android:id="@+id/ilToolBar"-->
<!-- layout="@layout/sh_toolbar" />-->
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/transparent"
app:navigationIcon="@drawable/icon_toolbar_back"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:titleCentered="true"
app:titleTextAppearance="@style/ToolbarTextAppearance" />
<TextView
android:id="@+id/tvAccountDesc"

Loading…
Cancel
Save