审批流程页面修改

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) { protected void onBindViewHolderDo(ApprovalWaitListViewHolder holder, int position) {
ApprovalBean bean = mDataList.get(position); ApprovalBean bean = mDataList.get(position);
if (ApprovalActivity.TYPE_PROCESSED.equals(type)) { if (ApprovalActivity.PI_APPROVED.equals(type)) {
holder.mBinding.ivAgree.setVisibility(View.VISIBLE); holder.mBinding.ivAgree.setVisibility(View.VISIBLE);
} }

@ -10,6 +10,8 @@ object SPConstants {
const val MOBILE_PHONE = "mobilePhone" const val MOBILE_PHONE = "mobilePhone"
const val RECENTLY_PROJECT = "recentlyProject" const val RECENTLY_PROJECT = "recentlyProject"
const val PROJECT_ID = "projectId"
const val PROJECT_NAME = "projectName"
} }
object EventConstants{ 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 blankj.utilcode.util.ActivityUtils
import com.project.survey.constants.EventConstants import com.project.survey.constants.EventConstants
import com.project.survey.constants.SPConstants 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.logic.event.Message
import com.project.survey.network.RetrofitClient import com.project.survey.network.RetrofitClient
import com.project.survey.ui.MainActivity import com.project.survey.ui.MainActivity
import com.project.survey.ui.login.LoginActivity import com.project.survey.ui.login.LoginActivity
import com.project.survey.ui.login.LoginInputCodeActivity import com.project.survey.ui.login.LoginInputCodeActivity
import com.project.survey.util.SPUtils import com.project.survey.util.SPUtils
import kotlinx.coroutines.delay
class LoginViewModel : BaseViewModel() { class LoginViewModel : BaseViewModel() {
@ -30,7 +29,9 @@ class LoginViewModel : BaseViewModel() {
val res = api.fetchExternalPersonSMSCode(account, password) val res = api.fetchExternalPersonSMSCode(account, password)
if (res.success) { if (res.success) {
// _externalPersonSMSCodeResponse.postValue(res.data) // _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> // val sendSMSResponse: LiveData<Any>
get() = _sendSMSResponse // get() = _sendSMSResponse
private val _sendSMSResponse = MutableLiveData<Any>() // private val _sendSMSResponse = MutableLiveData<Any>()
//
/** // /**
* 发送验证码 // * 发送验证码
*/ // */
fun sendSMS(mobile: String) { // fun sendSMS(mobile: String) {
launch { // launch {
val res = api.sendSMS(mobile) // val res = api.sendSMS(mobile)
if (res.success) { // if (res.success) {
_sendSMSResponse.postValue(res.data) // _sendSMSResponse.postValue(res.data)
} // }
} // }
} // }
//
val checkVerifyCodeResponse: LiveData<Any> // val checkVerifyCodeResponse: LiveData<Any>
get() = _checkVerifyCodeResponse // get() = _checkVerifyCodeResponse
private val _checkVerifyCodeResponse = MutableLiveData<Any>() // private val _checkVerifyCodeResponse = MutableLiveData<Any>()
//
/** // /**
* 验证验证码 // * 验证验证码
*/ // */
fun checkVerifyCode(mobile: String, verifycode: String) { // fun checkVerifyCode(mobile: String, verifycode: String) {
launch { // launch {
val res = api.checkVerifyCode(mobile, verifycode) // val res = api.checkVerifyCode(mobile, verifycode)
if (res.success) { // if (res.success) {
_checkVerifyCodeResponse.postValue(res.data) // _checkVerifyCodeResponse.postValue(res.data)
} // }
} // }
} // }
} }

@ -2,6 +2,7 @@ package com.project.survey.logic.viewmodel
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.project.survey.logic.bean.HahaReq
import com.project.survey.model.ProjectBean import com.project.survey.model.ProjectBean
import com.project.survey.network.RetrofitClient 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 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( data class LoginBean(
val token: String, val token: String,

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

@ -1,8 +1,14 @@
package com.project.survey.network 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 com.project.survey.model.ProjectBean
import retrofit2.http.Body
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.GET import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.POST
import retrofit2.http.Query import retrofit2.http.Query
interface Api { interface Api {
@ -43,20 +49,41 @@ interface Api {
@Query("account") account: String @Query("account") account: String
): HttpResult<List<ProjectBean>> ): 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") @FormUrlEncoded
suspend fun sendSMS( @POST("/je/workflow/currentUserTask/getTask")
@Query("mobile") mobile: String 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> ): HttpResult<Any>
/** @POST("/je/workflow/currentUserTask/getTask")
* 验证验证码 suspend fun fetchWorkTaskBody(
*/ @Header("Projectid") projectId: String,
@GET("/Api/Mas/CheckVerifycode") @Body requestBody: HahaReq
suspend fun checkVerifyCode(
@Query("mobile") mobile: String,
@Query("verifycode") verifycode: String
): HttpResult<Any> ): HttpResult<Any>
} }

@ -1,10 +1,17 @@
package com.project.survey.ui.approval package com.project.survey.ui.approval
import android.content.Context import androidx.activity.viewModels
import android.content.Intent
import com.project.survey.R import com.project.survey.R
import com.project.survey.constants.SPConstants
import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.databinding.ActivityApprovalBinding 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>() { class ApprovalActivity : BaseBindingActivity<ActivityApprovalBinding>() {
companion object { companion object {
private const val KEY_TYPE = "KEY_TYPE" const val PI_PREAPPROV = "PI_PREAPPROV"//待处理
const val TYPE_WAIT = "TYPE_WAIT"//待处理 const val PI_APPROVED = "PI_APPROVED"//已处理
const val TYPE_PROCESSED = "TYPE_PROCESSED"//已处理 const val PI_OWNER = "PI_OWNER"//所有的流程
const val TYPE_INITIATED = "TYPE_INITIATED"//已发起 // const val TYPE_INITIATED = "TYPE_INITIATED"//已发起
fun launch(context: Context, type: String) { fun start(type: String = PI_OWNER) {
context.startActivity(Intent(context, ApprovalActivity::class.java).apply { ActivityNavUtil.startActivity<ApprovalActivity> {
putExtra(KEY_TYPE, type) putString("type", type)
}) }
} }
} }
override fun getBinding(): ActivityApprovalBinding { override fun getBinding(): ActivityApprovalBinding =
return ActivityApprovalBinding.inflate(layoutInflater) ActivityApprovalBinding.inflate(layoutInflater)
}
private val viewModel: ProjectViewModel by viewModels()
@Param
private lateinit var type: String
private val adapter by lazy { ApprovalAdapter() }
override fun initView() { override fun initView() {
val beginTransaction = supportFragmentManager.beginTransaction() val title = when (type) {
val fragemnt = when (getType()) { PI_PREAPPROV -> "待处理"
TYPE_WAIT -> ApprovalWaitFragment() PI_APPROVED -> "已处理"
TYPE_PROCESSED -> ApprovalProcessedFragment() else -> "已发起"
TYPE_INITIATED -> ApprovalInitiatedFragment()
else -> {
throw IllegalArgumentException("type is error")
}
} }
beginTransaction.replace(R.id.container, fragemnt) immersionToolbar(mBinding.ilToolBar.toolbar, title)
beginTransaction.commit() // 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() { 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() { 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() { override fun initData() {
val dataList = mutableListOf<ApprovalBean>() val dataList = mutableListOf<ApprovalBean>()
for (i in 0 until 3) { for (i in 0 until 3) {
dataList.add(ApprovalBean()) dataList.add(ApprovalBean(""))
} }
adapter.refreshData(dataList) adapter.refreshData(dataList)
} }

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

@ -16,7 +16,7 @@ class ApprovalWaitFragment : BaseFragmentBinding<FragmentApprovalBinding>() {
private val adapter by lazy { private val adapter by lazy {
ApprovalWaitAdapter( ApprovalWaitAdapter(
requireContext(), requireContext(),
ApprovalActivity.TYPE_WAIT ApprovalActivity.PI_PREAPPROV
) )
} }
@ -34,7 +34,7 @@ class ApprovalWaitFragment : BaseFragmentBinding<FragmentApprovalBinding>() {
override fun initData() { override fun initData() {
val dataList = mutableListOf<ApprovalBean>() val dataList = mutableListOf<ApprovalBean>()
for (i in 0 until 3) { for (i in 0 until 3) {
dataList.add(ApprovalBean()) dataList.add(ApprovalBean(""))
} }
adapter.refreshData(dataList) 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() .init()
setSupportActionBar(toolbar) setSupportActionBar(toolbar)
toolbar.setBackgroundColor(0) toolbar.setBackgroundColor(0)
toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.text_color_main)) // toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.text_color_main))
toolbar.setTitle(title) // toolbar.setTitle(title)
supportActionBar?.title = title
} }
} }

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

@ -47,6 +47,11 @@ class ProjectListActivity : BaseBindingActivity<ActivityProjectListBinding>() {
override fun initData() { override fun initData() {
viewModel.projectResponse.observe(this) { viewModel.projectResponse.observe(this) {
adapter.submitList(it) 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) ?: "") viewModel.getAllProjectIDByAccount(SPUtils.getString(SPConstants.ACCOUNT) ?: "")

@ -11,9 +11,9 @@ class ProjectListAdapter : BaseQuickAdapter<ProjectBean, QuickViewHolder>() {
override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: ProjectBean?) { override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: ProjectBean?) {
item?.let { bean -> item?.let { bean ->
holder.setText(R.id.tvProjectName, bean.XMXX_INDUSTRYTYPE) holder.setText(R.id.tvProjectName, bean.XMXX_NAME)
.setText(R.id.tvProjectNum, bean.XMXX_PILENO) .setText(R.id.tvProjectNum, bean.XMXX_CODE)
.setText(R.id.tvProjectArea, "上海市长宁区") // .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 androidx.core.content.ContextCompat
import com.bingce.utils.ScreenUtil import com.bingce.utils.ScreenUtil
import com.project.survey.R import com.project.survey.R
import com.project.survey.extend.dp2px
class TransparentDividerDecoration(context: Context) : DefaultItemDecoration( class TransparentDividerDecoration(context: Context) : DefaultItemDecoration(
ContextCompat.getColor(context, R.color.transparent), 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"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <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_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<include layout="@layout/sh_toolbar" /> <include
android:id="@+id/ilToolBar"
layout="@layout/sh_toolbar" />
<include layout="@layout/item_search" /> <include layout="@layout/item_search" />
<androidx.fragment.app.FragmentContainerView <!-- <androidx.fragment.app.FragmentContainerView-->
android:id="@+id/container" <!-- 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_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> </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" app:layout_constraintTop_toBottomOf="@id/tvProjectName"
tools:text="XMBH2021-00001" /> tools:text="XMBH2021-00001" />
<TextView <!-- <TextView-->
android:id="@+id/tvProjectArea" <!-- android:id="@+id/tvProjectArea"-->
android:layout_width="wrap_content" <!-- android:layout_width="wrap_content"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:textColor="@color/text_color_727778" <!-- android:textColor="@color/text_color_727778"-->
android:textSize="12sp" <!-- android:textSize="12sp"-->
app:layout_constraintBottom_toBottomOf="@id/tvProjectNum" <!-- app:layout_constraintBottom_toBottomOf="@id/tvProjectNum"-->
app:layout_constraintStart_toEndOf="@id/tvProjectNum" <!-- app:layout_constraintStart_toEndOf="@id/tvProjectNum"-->
app:layout_constraintTop_toTopOf="@id/tvProjectNum" <!-- app:layout_constraintTop_toTopOf="@id/tvProjectNum"-->
tools:text="上海市长宁区" /> <!-- tools:text="上海市长宁区" />-->
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -24,6 +24,7 @@
<color name="text_color_20">#202020</color> <color name="text_color_20">#202020</color>
<color name="text_color_CC5155">#CC5155</color> <color name="text_color_CC5155">#CC5155</color>
<color name="text_color_396bd0">#396BD0</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_home_page">#F9FAFB</color>
<color name="bg_color_main_tab">#FFFFFF</color> <color name="bg_color_main_tab">#FFFFFF</color>

Loading…
Cancel
Save