审批流程页面修改

main
chenglifeng 8 months ago
parent c7131b3992
commit 63b61f7942
  1. 2
      app/src/main/java/com/project/survey/adapter/ApprovalWaitAdapter.java
  2. 2
      app/src/main/java/com/project/survey/constants/Constants.kt
  3. 7
      app/src/main/java/com/project/survey/logic/bean/HahaReq.kt
  4. 69
      app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt
  5. 22
      app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt
  6. 5
      app/src/main/java/com/project/survey/model/ApprovalBean.kt
  7. 2
      app/src/main/java/com/project/survey/model/LoginBean.kt
  8. 1
      app/src/main/java/com/project/survey/model/ProjectBean.kt
  9. 51
      app/src/main/java/com/project/survey/network/Api.kt
  10. 88
      app/src/main/java/com/project/survey/ui/approval/ApprovalActivity.kt
  11. 2
      app/src/main/java/com/project/survey/ui/approval/ApprovalInitiatedFragment.kt
  12. 4
      app/src/main/java/com/project/survey/ui/approval/ApprovalProcessedFragment.kt
  13. 4
      app/src/main/java/com/project/survey/ui/approval/ApprovalWaitFragment.kt
  14. 75
      app/src/main/java/com/project/survey/ui/approval/adapter/ApprovalAdapter.kt
  15. 5
      app/src/main/java/com/project/survey/ui/base/BaseBindingActivity.kt
  16. 10
      app/src/main/java/com/project/survey/ui/home/HomeFragment.kt
  17. 5
      app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt
  18. 6
      app/src/main/java/com/project/survey/ui/project/adapter/ProjectListAdapter.kt
  19. 50
      app/src/main/java/com/project/survey/widget/LoadingDialog.kt
  20. 3
      app/src/main/java/com/project/survey/widget/decoration/TransparentDividerDecoration.kt
  21. BIN
      app/src/main/res/drawable-xhdpi/icon_dialog_loading.png
  22. 8
      app/src/main/res/drawable/bg_dialog_loading.xml
  23. 5
      app/src/main/res/drawable/loading_dialog_progress_bar.xml
  24. 19
      app/src/main/res/layout/activity_approval.xml
  25. 39
      app/src/main/res/layout/dialog_loading.xml
  26. 99
      app/src/main/res/layout/item_approval_approved.xml
  27. 74
      app/src/main/res/layout/item_approval_owner.xml
  28. 20
      app/src/main/res/layout/item_project_list.xml
  29. 1
      app/src/main/res/values/color.xml

@ -34,7 +34,7 @@ public class ApprovalWaitAdapter extends BaseAdapter<ApprovalWaitListViewHolder,
protected void onBindViewHolderDo(ApprovalWaitListViewHolder holder, int position) {
ApprovalBean bean = mDataList.get(position);
if (ApprovalActivity.TYPE_PROCESSED.equals(type)) {
if (ApprovalActivity.PI_APPROVED.equals(type)) {
holder.mBinding.ivAgree.setVisibility(View.VISIBLE);
}

@ -10,6 +10,8 @@ object SPConstants {
const val MOBILE_PHONE = "mobilePhone"
const val RECENTLY_PROJECT = "recentlyProject"
const val PROJECT_ID = "projectId"
const val PROJECT_NAME = "projectName"
}
object EventConstants{

@ -0,0 +1,7 @@
package com.project.survey.logic.bean
data class HahaReq(
val type: String,
val userName: String? = null,
val page: Int = 1
)

@ -5,14 +5,13 @@ import androidx.lifecycle.MutableLiveData
import blankj.utilcode.util.ActivityUtils
import com.project.survey.constants.EventConstants
import com.project.survey.constants.SPConstants
import com.project.survey.logic.bean.LoginBean
import com.project.survey.model.LoginBean
import com.project.survey.logic.event.Message
import com.project.survey.network.RetrofitClient
import com.project.survey.ui.MainActivity
import com.project.survey.ui.login.LoginActivity
import com.project.survey.ui.login.LoginInputCodeActivity
import com.project.survey.util.SPUtils
import kotlinx.coroutines.delay
class LoginViewModel : BaseViewModel() {
@ -30,7 +29,9 @@ class LoginViewModel : BaseViewModel() {
val res = api.fetchExternalPersonSMSCode(account, password)
if (res.success) {
// _externalPersonSMSCodeResponse.postValue(res.data)
LoginInputCodeActivity.start(account, password, res.data?:"")
LoginInputCodeActivity.start(account, password, res.data ?: "")
} else {
errorResponse.postValue(res.data)
}
}
}
@ -82,35 +83,35 @@ class LoginViewModel : BaseViewModel() {
}
}
val sendSMSResponse: LiveData<Any>
get() = _sendSMSResponse
private val _sendSMSResponse = MutableLiveData<Any>()
/**
* 发送验证码
*/
fun sendSMS(mobile: String) {
launch {
val res = api.sendSMS(mobile)
if (res.success) {
_sendSMSResponse.postValue(res.data)
}
}
}
val checkVerifyCodeResponse: LiveData<Any>
get() = _checkVerifyCodeResponse
private val _checkVerifyCodeResponse = MutableLiveData<Any>()
/**
* 验证验证码
*/
fun checkVerifyCode(mobile: String, verifycode: String) {
launch {
val res = api.checkVerifyCode(mobile, verifycode)
if (res.success) {
_checkVerifyCodeResponse.postValue(res.data)
}
}
}
// val sendSMSResponse: LiveData<Any>
// get() = _sendSMSResponse
// private val _sendSMSResponse = MutableLiveData<Any>()
//
// /**
// * 发送验证码
// */
// fun sendSMS(mobile: String) {
// launch {
// val res = api.sendSMS(mobile)
// if (res.success) {
// _sendSMSResponse.postValue(res.data)
// }
// }
// }
//
// val checkVerifyCodeResponse: LiveData<Any>
// get() = _checkVerifyCodeResponse
// private val _checkVerifyCodeResponse = MutableLiveData<Any>()
//
// /**
// * 验证验证码
// */
// fun checkVerifyCode(mobile: String, verifycode: String) {
// launch {
// val res = api.checkVerifyCode(mobile, verifycode)
// if (res.success) {
// _checkVerifyCodeResponse.postValue(res.data)
// }
// }
// }
}

@ -2,6 +2,7 @@ package com.project.survey.logic.viewmodel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.project.survey.logic.bean.HahaReq
import com.project.survey.model.ProjectBean
import com.project.survey.network.RetrofitClient
@ -25,4 +26,25 @@ class ProjectViewModel : BaseViewModel() {
}
}
}
val workTaskListResponse: LiveData<Any>
get() = _workTaskListResponse
private val _workTaskListResponse = MutableLiveData<Any>()
/**
* 获取流程审批列表
*/
fun fetchWorkTask(projectId: String, type: String, userName: String? = null, page: Int = 1) {
launch {
val res = api.fetchWorkTask(projectId, type, "", page)
if (res.success){
_workTaskListResponse.postValue(res.data)
}
}
}
fun fetchWorkTaskBody(projectId: String, type: String, userName: String? = null, page: Int = 1) {
launch {
val res = api.fetchWorkTaskBody(projectId, HahaReq(type, "", page))
}
}
}

@ -1,4 +1,5 @@
package com.project.survey.model
class ApprovalBean {
}
data class ApprovalBean(
val type: String
)

@ -1,4 +1,4 @@
package com.project.survey.logic.bean
package com.project.survey.model
data class LoginBean(
val token: String,

@ -39,4 +39,5 @@ data class ProjectBean(
val XMXX_LOCATIONXY: String, //项目位置(度)
val XMXX_FILE: String?, //项目图片
val XMXX_DESCRIPTION: String?, //项目图片
val BD_XMXX_ID: String?,
)

@ -1,8 +1,14 @@
package com.project.survey.network
import com.project.survey.logic.bean.LoginBean
import com.project.survey.logic.bean.HahaReq
import com.project.survey.model.LoginBean
import com.project.survey.model.ProjectBean
import retrofit2.http.Body
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.POST
import retrofit2.http.Query
interface Api {
@ -43,20 +49,41 @@ interface Api {
@Query("account") account: String
): HttpResult<List<ProjectBean>>
// /**
// * 发送验证码
// */
// @GET("/Api/Mas/sendSms")
// suspend fun sendSMS(
// @Query("mobile") mobile: String
// ): HttpResult<Any>
//
// /**
// * 验证验证码
// */
// @GET("/Api/Mas/CheckVerifycode")
// suspend fun checkVerifyCode(
// @Query("mobile") mobile: String,
// @Query("verifycode") verifycode: String
// ): HttpResult<Any>
/**
* 发送验证码
* 获取流程审批列表
*/
@GET("/Api/Mas/sendSms")
suspend fun sendSMS(
@Query("mobile") mobile: String
@FormUrlEncoded
@POST("/je/workflow/currentUserTask/getTask")
suspend fun fetchWorkTask(
@Header("Projectid") projectId: String,
@Field("type") type: String,
@Field("userName") userName: String = "",
@Field("page") page: Int,
@Field("limit") limit: Int = 30,
): HttpResult<Any>
/**
* 验证验证码
*/
@GET("/Api/Mas/CheckVerifycode")
suspend fun checkVerifyCode(
@Query("mobile") mobile: String,
@Query("verifycode") verifycode: String
@POST("/je/workflow/currentUserTask/getTask")
suspend fun fetchWorkTaskBody(
@Header("Projectid") projectId: String,
@Body requestBody: HahaReq
): HttpResult<Any>
}

@ -1,10 +1,17 @@
package com.project.survey.ui.approval
import android.content.Context
import android.content.Intent
import androidx.activity.viewModels
import com.project.survey.R
import com.project.survey.constants.SPConstants
import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.databinding.ActivityApprovalBinding
import com.project.survey.extend.toast
import com.project.survey.logic.viewmodel.ProjectViewModel
import com.project.survey.ui.approval.adapter.ApprovalAdapter
import com.project.survey.util.ActivityNavUtil
import com.project.survey.util.SPUtils
import com.project.survey.util.param.Param
import com.project.survey.widget.decoration.TransparentDividerDecoration
/**
* 待处理已处理已发起
@ -12,45 +19,68 @@ import com.project.survey.databinding.ActivityApprovalBinding
class ApprovalActivity : BaseBindingActivity<ActivityApprovalBinding>() {
companion object {
private const val KEY_TYPE = "KEY_TYPE"
const val TYPE_WAIT = "TYPE_WAIT"//待处理
const val TYPE_PROCESSED = "TYPE_PROCESSED"//已处理
const val TYPE_INITIATED = "TYPE_INITIATED"//已发起
fun launch(context: Context, type: String) {
context.startActivity(Intent(context, ApprovalActivity::class.java).apply {
putExtra(KEY_TYPE, type)
})
const val PI_PREAPPROV = "PI_PREAPPROV"//待处理
const val PI_APPROVED = "PI_APPROVED"//已处理
const val PI_OWNER = "PI_OWNER"//所有的流程
// const val TYPE_INITIATED = "TYPE_INITIATED"//已发起
fun start(type: String = PI_OWNER) {
ActivityNavUtil.startActivity<ApprovalActivity> {
putString("type", type)
}
}
}
override fun getBinding(): ActivityApprovalBinding {
return ActivityApprovalBinding.inflate(layoutInflater)
}
override fun getBinding(): ActivityApprovalBinding =
ActivityApprovalBinding.inflate(layoutInflater)
private val viewModel: ProjectViewModel by viewModels()
@Param
private lateinit var type: String
private val adapter by lazy { ApprovalAdapter() }
override fun initView() {
val beginTransaction = supportFragmentManager.beginTransaction()
val fragemnt = when (getType()) {
TYPE_WAIT -> ApprovalWaitFragment()
TYPE_PROCESSED -> ApprovalProcessedFragment()
TYPE_INITIATED -> ApprovalInitiatedFragment()
else -> {
throw IllegalArgumentException("type is error")
}
val title = when (type) {
PI_PREAPPROV -> "待处理"
PI_APPROVED -> "已处理"
else -> "已发起"
}
beginTransaction.replace(R.id.container, fragemnt)
beginTransaction.commit()
immersionToolbar(mBinding.ilToolBar.toolbar, title)
// val beginTransaction = supportFragmentManager.beginTransaction()
// val fragemnt = when (type) {
// PI_PREAPPROV -> ApprovalWaitFragment()
// PI_APPROVED -> ApprovalProcessedFragment()
// PI_OWNER -> ApprovalInitiatedFragment()
// else -> {
// throw IllegalArgumentException("type is error")
// }
// }
// beginTransaction.replace(R.id.container, fragemnt)
// beginTransaction.commit()
mBinding.recyclerView.addItemDecoration(TransparentDividerDecoration(this))
mBinding.recyclerView.adapter = adapter
}
override fun initData() {
viewModel.workTaskListResponse.observe(this) {
adapter.submitList(emptyList())
}
if (type == PI_PREAPPROV) {
viewModel.fetchWorkTask(SPUtils.getString(SPConstants.PROJECT_ID) ?: "", type)
} else {
viewModel.fetchWorkTaskBody(SPUtils.getString(SPConstants.PROJECT_ID) ?: "", type)
}
}
override fun initListener() {
adapter.setOnItemClickListener { _, _, position ->
adapter.getItem(position)?.let { bean ->
toast("item${bean.type}")
}
}
}
private fun getType() = intent.getStringExtra(KEY_TYPE)
}

@ -29,7 +29,7 @@ class ApprovalInitiatedFragment : BaseFragmentBinding<FragmentApprovalBinding>()
override fun initData() {
val dataList = mutableListOf<ApprovalBean>()
for (i in 0 until 3) {
dataList.add(ApprovalBean())
dataList.add(ApprovalBean(""))
}
adapter.refreshData(dataList)
}

@ -15,7 +15,7 @@ class ApprovalProcessedFragment : BaseFragmentBinding<FragmentApprovalBinding>()
private val adapter by lazy {
ApprovalWaitAdapter(
requireContext(),
ApprovalActivity.TYPE_PROCESSED
ApprovalActivity.PI_APPROVED
)
}
@ -33,7 +33,7 @@ class ApprovalProcessedFragment : BaseFragmentBinding<FragmentApprovalBinding>()
override fun initData() {
val dataList = mutableListOf<ApprovalBean>()
for (i in 0 until 3) {
dataList.add(ApprovalBean())
dataList.add(ApprovalBean(""))
}
adapter.refreshData(dataList)
}

@ -16,7 +16,7 @@ class ApprovalWaitFragment : BaseFragmentBinding<FragmentApprovalBinding>() {
private val adapter by lazy {
ApprovalWaitAdapter(
requireContext(),
ApprovalActivity.TYPE_WAIT
ApprovalActivity.PI_PREAPPROV
)
}
@ -34,7 +34,7 @@ class ApprovalWaitFragment : BaseFragmentBinding<FragmentApprovalBinding>() {
override fun initData() {
val dataList = mutableListOf<ApprovalBean>()
for (i in 0 until 3) {
dataList.add(ApprovalBean())
dataList.add(ApprovalBean(""))
}
adapter.refreshData(dataList)
}

@ -0,0 +1,75 @@
package com.project.survey.ui.approval.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseMultiItemAdapter
import com.project.survey.databinding.ItemApprovalApprovedBinding
import com.project.survey.databinding.ItemApprovalOwnerBinding
import com.project.survey.extend.isVisibleOrGone
import com.project.survey.model.ApprovalBean
class ApprovalAdapter : BaseMultiItemAdapter<ApprovalBean>() {
init {
addItemType(TYPE_0, object : OnMultiItemAdapterListener<ApprovalBean, ItemPreapprovVH> {
override fun onCreate(
context: Context,
parent: ViewGroup,
viewType: Int
): ItemPreapprovVH {
val viewBinding =
ItemApprovalApprovedBinding.inflate(LayoutInflater.from(context), parent, false)
return ItemPreapprovVH(viewBinding)
}
override fun onBind(holder: ItemPreapprovVH, position: Int, item: ApprovalBean?) {
holder.binding.ivAgree.isVisibleOrGone(false)
}
}).addItemType(TYPE_1, object : OnMultiItemAdapterListener<ApprovalBean, ItemApprovedVH> {
override fun onCreate(
context: Context,
parent: ViewGroup,
viewType: Int
): ItemApprovedVH {
val viewBinding =
ItemApprovalApprovedBinding.inflate(LayoutInflater.from(context), parent, false)
return ItemApprovedVH(viewBinding)
}
override fun onBind(holder: ItemApprovedVH, position: Int, item: ApprovalBean?) {
holder.binding.ivAgree.isVisibleOrGone(true)
}
}).addItemType(TYPE_2, object : OnMultiItemAdapterListener<ApprovalBean, ItemOwnerVH> {
override fun onCreate(
context: Context,
parent: ViewGroup,
viewType: Int
): ItemOwnerVH {
val viewBinding =
ItemApprovalOwnerBinding.inflate(LayoutInflater.from(context), parent, false)
return ItemOwnerVH(viewBinding)
}
override fun onBind(holder: ItemOwnerVH, position: Int, item: ApprovalBean?) {
}
})
}
class ItemPreapprovVH(val binding: ItemApprovalApprovedBinding) :
RecyclerView.ViewHolder(binding.root)
class ItemApprovedVH(val binding: ItemApprovalApprovedBinding) :
RecyclerView.ViewHolder(binding.root)
class ItemOwnerVH(val binding: ItemApprovalOwnerBinding) :
RecyclerView.ViewHolder(binding.root)
companion object {
private const val TYPE_0 = 0
private const val TYPE_1 = 1
private const val TYPE_2 = 2
}
}

@ -90,8 +90,9 @@ abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity() {
.init()
setSupportActionBar(toolbar)
toolbar.setBackgroundColor(0)
toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.text_color_main))
toolbar.setTitle(title)
// toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.text_color_main))
// toolbar.setTitle(title)
supportActionBar?.title = title
}
}

@ -2,6 +2,7 @@ package com.project.survey.ui.home
import android.view.LayoutInflater
import android.view.ViewGroup
import com.project.survey.constants.SPConstants
import com.project.survey.databinding.FragmentHomeBinding
import com.project.survey.extend.setOnClickNoRepeatListener
import com.project.survey.ui.approval.ApprovalActivity
@ -10,6 +11,7 @@ import com.project.survey.ui.controlnet.ControlNetFirstListActivity
import com.project.survey.ui.controlnet.ControlNetSpeciaListActivity
import com.project.survey.ui.lofting.LoftingListActivity
import com.project.survey.ui.pointmeasure.PointMeasureListActivity
import com.project.survey.util.SPUtils
/**
* 首页
@ -21,7 +23,7 @@ class HomeFragment : BaseBindingFragment<FragmentHomeBinding>() {
}
override fun initView() {
mBinding.tvProject.text = "哈哈哈哈哈"
mBinding.tvProject.text = SPUtils.getString(SPConstants.PROJECT_NAME)
}
override fun initData() {
@ -38,13 +40,13 @@ class HomeFragment : BaseBindingFragment<FragmentHomeBinding>() {
LoftingListActivity.launch(mContext)
}
mBinding.itemToBeProcessed.setOnClickNoRepeatListener {
ApprovalActivity.launch(requireContext(), ApprovalActivity.TYPE_WAIT)
ApprovalActivity.start(ApprovalActivity.PI_PREAPPROV)
}
mBinding.itemProcessed.setOnClickNoRepeatListener {
ApprovalActivity.launch(requireContext(), ApprovalActivity.TYPE_PROCESSED)
ApprovalActivity.start(ApprovalActivity.PI_APPROVED)
}
mBinding.itemInitiated.setOnClickNoRepeatListener {
ApprovalActivity.launch(requireContext(), ApprovalActivity.TYPE_INITIATED)
ApprovalActivity.start()
}
mBinding.itemControlNetFirst.setOnClickNoRepeatListener {
ControlNetFirstListActivity.launch(requireContext())

@ -47,6 +47,11 @@ class ProjectListActivity : BaseBindingActivity<ActivityProjectListBinding>() {
override fun initData() {
viewModel.projectResponse.observe(this) {
adapter.submitList(it)
// TODO 暂时将第一条设置为当前项目
if (it.isNotEmpty()) {
SPUtils.put(SPConstants.PROJECT_ID, it[0].BD_XMXX_ID)
SPUtils.put(SPConstants.PROJECT_NAME, it[0].XMXX_NAME)
}
}
viewModel.getAllProjectIDByAccount(SPUtils.getString(SPConstants.ACCOUNT) ?: "")

@ -11,9 +11,9 @@ class ProjectListAdapter : BaseQuickAdapter<ProjectBean, QuickViewHolder>() {
override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: ProjectBean?) {
item?.let { bean ->
holder.setText(R.id.tvProjectName, bean.XMXX_INDUSTRYTYPE)
.setText(R.id.tvProjectNum, bean.XMXX_PILENO)
.setText(R.id.tvProjectArea, "上海市长宁区")
holder.setText(R.id.tvProjectName, bean.XMXX_NAME)
.setText(R.id.tvProjectNum, bean.XMXX_CODE)
// .setText(R.id.tvProjectArea, "上海市长宁区")
}
}

@ -0,0 +1,50 @@
package com.project.survey.widget
import android.app.Dialog
import android.content.Context
import android.view.LayoutInflater
import android.widget.TextView
import com.project.survey.R
import com.project.survey.extend.isVisibleOrGone
class LoadingDialog @JvmOverloads constructor(context: Context) :
Dialog(context, R.style.loading_dialog) {
inner class Builder(val context: Context) {
private var message = ""
private var isCancelable = false
private var isCancelOutside = false
fun setMessage(message: String): Builder = apply {
this.message = message
}
/**
* 设置是否可以按返回键取消
*/
fun setCancelable(isCancelable: Boolean): Builder = apply {
this.isCancelable = isCancelable
}
/**
* 设置是否可以取消
*/
fun setCancelOutside(isCancelOutside: Boolean): Builder = apply {
this.isCancelOutside = isCancelOutside
}
fun create(): LoadingDialog {
val view = LayoutInflater.from(context).inflate(R.layout.dialog_loading, null, false)
view.findViewById<TextView>(R.id.tvLoadingTips).run {
isVisibleOrGone(message.isNotBlank())
text = message
}
return LoadingDialog(context).apply {
setContentView(view)
setCancelable(isCancelable)
setCanceledOnTouchOutside(isCancelOutside)
}
}
}
}

@ -4,8 +4,9 @@ import android.content.Context
import androidx.core.content.ContextCompat
import com.bingce.utils.ScreenUtil
import com.project.survey.R
import com.project.survey.extend.dp2px
class TransparentDividerDecoration(context: Context) : DefaultItemDecoration(
ContextCompat.getColor(context, R.color.transparent),
1, ScreenUtil.dp2px(context, 12f)
1, 12f.dp2px()
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 背景颜色 -->
<solid android:color="#80000000" />
<!-- 圆角 -->
<corners android:radius="8dp" />
</shape>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/icon_dialog_loading"
android:pivotX="50%"
android:pivotY="50%" />

@ -1,16 +1,27 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/sh_toolbar" />
<include
android:id="@+id/ilToolBar"
layout="@layout/sh_toolbar" />
<include layout="@layout/item_search" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/container"
<!-- <androidx.fragment.app.FragmentContainerView-->
<!-- android:id="@+id/container"-->
<!-- 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:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="2"
tools:listitem="@layout/item_approval_approved" />
</LinearLayout>

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_loading_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="120dp"
android:layout_height="100dp"
android:background="@drawable/bg_dialog_loading"
android:gravity="center"
android:orientation="vertical"
android:paddingLeft="21dp"
android:paddingTop="10dp"
android:paddingRight="21dp"
android:paddingBottom="10dp">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_gravity="center_horizontal"
android:indeterminateBehavior="repeat"
android:indeterminateDrawable="@drawable/loading_dialog_progress_bar"
android:indeterminateOnly="true" />
<TextView
android:id="@+id/tvLoadingTips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="@string/loading"
android:textColor="@android:color/white"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:background="@drawable/bg_white_round_4"
android:padding="12dp">
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color_20"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="单位测量资质报验单" />
<TextView
android:id="@+id/tvNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color_727778"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvName"
tools:text="XMBH2021-00001" />
<TextView
android:id="@+id/tvStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/bg_approval_blue_stroke"
android:paddingHorizontal="4dp"
android:paddingVertical="1dp"
android:textColor="@color/text_color_396bd0"
android:textSize="10sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvNo"
tools:text="监理审核" />
<TextView
android:id="@+id/tvReceiverKey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="接&#8194;&#8194;人:"
android:textColor="@color/text_color_404145"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvStatus" />
<TextView
android:id="@+id/tvReceiver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color_404145"
android:textSize="12sp"
app:layout_constraintBaseline_toBaselineOf="@id/tvReceiverKey"
app:layout_constraintStart_toEndOf="@id/tvReceiverKey"
tools:text="Tom" />
<TextView
android:id="@+id/tvStartTimeKey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="办理时间:"
android:textColor="@color/text_color_404145"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvReceiverKey" />
<TextView
android:id="@+id/tvTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color_404145"
android:textSize="12sp"
app:layout_constraintBaseline_toBaselineOf="@id/tvStartTimeKey"
app:layout_constraintStart_toEndOf="@id/tvStartTimeKey"
tools:text="2022-06-10 09:27:49" />
<ImageView
android:id="@+id/ivAgree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:background="@mipmap/ic_approval_agree"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:background="@drawable/bg_white_round_4"
android:padding="12dp">
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color_20"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="单位测量资质报验单" />
<TextView
android:id="@+id/tvNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color_727778"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvName"
tools:text="XMBH2021-00001" />
<TextView
android:id="@+id/tvStartTimeKey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="发起时间:"
android:textColor="@color/text_color_404145"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvNo" />
<TextView
android:id="@+id/tvStartTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color_404145"
android:textSize="12sp"
app:layout_constraintBaseline_toBaselineOf="@id/tvStartTimeKey"
app:layout_constraintStart_toEndOf="@id/tvStartTimeKey"
tools:text="2022-06-10 09:27:49" />
<TextView
android:id="@+id/tvEndTimeKey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="结束时间:"
android:textColor="@color/text_color_404145"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvStartTimeKey" />
<TextView
android:id="@+id/tvEndTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color_404145"
android:textSize="12sp"
app:layout_constraintBaseline_toBaselineOf="@id/tvEndTimeKey"
app:layout_constraintStart_toEndOf="@id/tvEndTimeKey"
tools:text="2022-06-10 09:27:49" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -40,15 +40,15 @@
app:layout_constraintTop_toBottomOf="@id/tvProjectName"
tools:text="XMBH2021-00001" />
<TextView
android:id="@+id/tvProjectArea"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color_727778"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@id/tvProjectNum"
app:layout_constraintStart_toEndOf="@id/tvProjectNum"
app:layout_constraintTop_toTopOf="@id/tvProjectNum"
tools:text="上海市长宁区" />
<!-- <TextView-->
<!-- android:id="@+id/tvProjectArea"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:textColor="@color/text_color_727778"-->
<!-- android:textSize="12sp"-->
<!-- app:layout_constraintBottom_toBottomOf="@id/tvProjectNum"-->
<!-- app:layout_constraintStart_toEndOf="@id/tvProjectNum"-->
<!-- app:layout_constraintTop_toTopOf="@id/tvProjectNum"-->
<!-- tools:text="上海市长宁区" />-->
</androidx.constraintlayout.widget.ConstraintLayout>

@ -24,6 +24,7 @@
<color name="text_color_20">#202020</color>
<color name="text_color_CC5155">#CC5155</color>
<color name="text_color_396bd0">#396BD0</color>
<color name="text_color_404145">#404145</color>
<color name="bg_color_home_page">#F9FAFB</color>
<color name="bg_color_main_tab">#FFFFFF</color>

Loading…
Cancel
Save