diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 977370f..aaccfb1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -100,4 +100,21 @@ @Field("lat") lat: String, @Field("createTime") createTime: String ): String + + /** + * 人员申请入场 + */ + @FormUrlEncoded + @POST("/worker/apply") + suspend fun enter( + @Header("token") token: String, + @Field("workerName") workerName: String, + @Field("gender") gender: String, + @Field("ownerShip") ownerShip: String, + @Field("phoneNumber") phoneNumber: String, + @Field("idCardNumber") idCardNumber: String, + @Field("enterReason") enterReason: String, + @Field("workerAvatar") workerAvatar: String, + @Field("applyTime") applyTime: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 977370f..aaccfb1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -100,4 +100,21 @@ @Field("lat") lat: String, @Field("createTime") createTime: String ): String + + /** + * 人员申请入场 + */ + @FormUrlEncoded + @POST("/worker/apply") + suspend fun enter( + @Header("token") token: String, + @Field("workerName") workerName: String, + @Field("gender") gender: String, + @Field("ownerShip") ownerShip: String, + @Field("phoneNumber") phoneNumber: String, + @Field("idCardNumber") idCardNumber: String, + @Field("enterReason") enterReason: String, + @Field("workerAvatar") workerAvatar: String, + @Field("applyTime") applyTime: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3be66b4..0c15793 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -92,4 +92,18 @@ eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime ) } + + /** + * 人员申请入场 + */ + suspend fun enter( + workerName: String, gender: String, ownerShip: String, phoneNumber: String, + idCardNumber: String, enterReason: String, workerAvatar: String, applyTime: String + ): String { + return api.enter( + AuthenticationHelper.token!!, + workerName, gender, ownerShip, phoneNumber, + idCardNumber, enterReason, workerAvatar, applyTime + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 977370f..aaccfb1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -100,4 +100,21 @@ @Field("lat") lat: String, @Field("createTime") createTime: String ): String + + /** + * 人员申请入场 + */ + @FormUrlEncoded + @POST("/worker/apply") + suspend fun enter( + @Header("token") token: String, + @Field("workerName") workerName: String, + @Field("gender") gender: String, + @Field("ownerShip") ownerShip: String, + @Field("phoneNumber") phoneNumber: String, + @Field("idCardNumber") idCardNumber: String, + @Field("enterReason") enterReason: String, + @Field("workerAvatar") workerAvatar: String, + @Field("applyTime") applyTime: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3be66b4..0c15793 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -92,4 +92,18 @@ eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime ) } + + /** + * 人员申请入场 + */ + suspend fun enter( + workerName: String, gender: String, ownerShip: String, phoneNumber: String, + idCardNumber: String, enterReason: String, workerAvatar: String, applyTime: String + ): String { + return api.enter( + AuthenticationHelper.token!!, + workerName, gender, ownerShip, phoneNumber, + idCardNumber, enterReason, workerAvatar, applyTime + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 4aaaf9e..b039ec4 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -14,8 +14,8 @@ Manifest.permission.READ_PHONE_STATE ) - const val SERVER_BASE_URL = "http://192.168.43.66:12210" -// const val SERVER_BASE_URL = "http://111.198.10.15:12210" +// const val SERVER_BASE_URL = "http://192.168.43.66:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:12210" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 977370f..aaccfb1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -100,4 +100,21 @@ @Field("lat") lat: String, @Field("createTime") createTime: String ): String + + /** + * 人员申请入场 + */ + @FormUrlEncoded + @POST("/worker/apply") + suspend fun enter( + @Header("token") token: String, + @Field("workerName") workerName: String, + @Field("gender") gender: String, + @Field("ownerShip") ownerShip: String, + @Field("phoneNumber") phoneNumber: String, + @Field("idCardNumber") idCardNumber: String, + @Field("enterReason") enterReason: String, + @Field("workerAvatar") workerAvatar: String, + @Field("applyTime") applyTime: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3be66b4..0c15793 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -92,4 +92,18 @@ eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime ) } + + /** + * 人员申请入场 + */ + suspend fun enter( + workerName: String, gender: String, ownerShip: String, phoneNumber: String, + idCardNumber: String, enterReason: String, workerAvatar: String, applyTime: String + ): String { + return api.enter( + AuthenticationHelper.token!!, + workerName, gender, ownerShip, phoneNumber, + idCardNumber, enterReason, workerAvatar, applyTime + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 4aaaf9e..b039ec4 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -14,8 +14,8 @@ Manifest.permission.READ_PHONE_STATE ) - const val SERVER_BASE_URL = "http://192.168.43.66:12210" -// const val SERVER_BASE_URL = "http://111.198.10.15:12210" +// const val SERVER_BASE_URL = "http://192.168.43.66:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:12210" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index a7483bd..16405b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -11,7 +11,10 @@ import com.casic.br.operationsite.callback.OnImageCompressListener import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage +import com.casic.br.operationsite.extensions.reformat import com.casic.br.operationsite.utils.DialogHelper +import com.casic.br.operationsite.utils.LocaleConstant +import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector @@ -20,11 +23,10 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.realFilePath -import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_apply_enter.* import kotlinx.android.synthetic.main.activity_apply_enter.addImageRecyclerView import kotlinx.android.synthetic.main.activity_upload_activity.* @@ -36,6 +38,7 @@ private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter private lateinit var uploadFileViewModel: UploadFileViewModel + private lateinit var applyViewModel: ApplyViewModel private val context: Context = this@ApplyEnterActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 @@ -52,8 +55,10 @@ override fun initData() { uploadFileViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java) + applyViewModel = ViewModelProvider(this).get(ApplyViewModel::class.java) imageAdapter = EditableImageAdapter(this, 1) + imageAdapter.setImageMargins(10f, 10f, 3f) addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) addImageRecyclerView.adapter = imageAdapter } @@ -75,15 +80,24 @@ val realFilePath = uri.realFilePath(this) Log.d(kTag, "realFilePath: $realFilePath") - //暂时直接显示图片 - realPaths.add(realFilePath) - imageAdapter.setupImage(realPaths) - //上传图片 } } override fun initEvent() { + genderView.setOnClickListener { + BottomActionSheet.Builder() + .setContext(this) + .setActionItemTitle(LocaleConstant.GENDER) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + genderView.text = LocaleConstant.GENDER[position] + } + }) + .build().show() + } + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { //人脸检测 @@ -136,7 +150,53 @@ }) confirmApplyButton.setOnClickListener { + if (workerNameView.text.isNullOrBlank()) { + "请输入入场人员姓名".show(this) + return@setOnClickListener + } + if (ownerShipView.text.isNullOrBlank()) { + "请输入入场人员单位名称".show(this) + return@setOnClickListener + } + + if (phoneNumberView.text.isNullOrBlank()) { + "请输入入场人员联系方式".show(this) + return@setOnClickListener + } + + if (idCardView.text.isNullOrBlank()) { + "请输入入场人员身份证号".show(this) + return@setOnClickListener + } + + applyViewModel.enter( + workerNameView.text.toString(), + genderView.text.toString(), + ownerShipView.text.toString(), + phoneNumberView.text.toString(), + idCardView.text.toString(), + enterReasonView.text.toString(), + imagePaths.reformat(), + System.currentTimeMillis().timestampToCompleteDate() + ) + + applyViewModel.resultModel.observe(this, { + if (it.code == 200) { + finish() + } + }) + + applyViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "申请中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 977370f..aaccfb1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -100,4 +100,21 @@ @Field("lat") lat: String, @Field("createTime") createTime: String ): String + + /** + * 人员申请入场 + */ + @FormUrlEncoded + @POST("/worker/apply") + suspend fun enter( + @Header("token") token: String, + @Field("workerName") workerName: String, + @Field("gender") gender: String, + @Field("ownerShip") ownerShip: String, + @Field("phoneNumber") phoneNumber: String, + @Field("idCardNumber") idCardNumber: String, + @Field("enterReason") enterReason: String, + @Field("workerAvatar") workerAvatar: String, + @Field("applyTime") applyTime: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3be66b4..0c15793 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -92,4 +92,18 @@ eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime ) } + + /** + * 人员申请入场 + */ + suspend fun enter( + workerName: String, gender: String, ownerShip: String, phoneNumber: String, + idCardNumber: String, enterReason: String, workerAvatar: String, applyTime: String + ): String { + return api.enter( + AuthenticationHelper.token!!, + workerName, gender, ownerShip, phoneNumber, + idCardNumber, enterReason, workerAvatar, applyTime + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 4aaaf9e..b039ec4 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -14,8 +14,8 @@ Manifest.permission.READ_PHONE_STATE ) - const val SERVER_BASE_URL = "http://192.168.43.66:12210" -// const val SERVER_BASE_URL = "http://111.198.10.15:12210" +// const val SERVER_BASE_URL = "http://192.168.43.66:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:12210" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index a7483bd..16405b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -11,7 +11,10 @@ import com.casic.br.operationsite.callback.OnImageCompressListener import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage +import com.casic.br.operationsite.extensions.reformat import com.casic.br.operationsite.utils.DialogHelper +import com.casic.br.operationsite.utils.LocaleConstant +import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector @@ -20,11 +23,10 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.realFilePath -import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_apply_enter.* import kotlinx.android.synthetic.main.activity_apply_enter.addImageRecyclerView import kotlinx.android.synthetic.main.activity_upload_activity.* @@ -36,6 +38,7 @@ private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter private lateinit var uploadFileViewModel: UploadFileViewModel + private lateinit var applyViewModel: ApplyViewModel private val context: Context = this@ApplyEnterActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 @@ -52,8 +55,10 @@ override fun initData() { uploadFileViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java) + applyViewModel = ViewModelProvider(this).get(ApplyViewModel::class.java) imageAdapter = EditableImageAdapter(this, 1) + imageAdapter.setImageMargins(10f, 10f, 3f) addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) addImageRecyclerView.adapter = imageAdapter } @@ -75,15 +80,24 @@ val realFilePath = uri.realFilePath(this) Log.d(kTag, "realFilePath: $realFilePath") - //暂时直接显示图片 - realPaths.add(realFilePath) - imageAdapter.setupImage(realPaths) - //上传图片 } } override fun initEvent() { + genderView.setOnClickListener { + BottomActionSheet.Builder() + .setContext(this) + .setActionItemTitle(LocaleConstant.GENDER) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + genderView.text = LocaleConstant.GENDER[position] + } + }) + .build().show() + } + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { //人脸检测 @@ -136,7 +150,53 @@ }) confirmApplyButton.setOnClickListener { + if (workerNameView.text.isNullOrBlank()) { + "请输入入场人员姓名".show(this) + return@setOnClickListener + } + if (ownerShipView.text.isNullOrBlank()) { + "请输入入场人员单位名称".show(this) + return@setOnClickListener + } + + if (phoneNumberView.text.isNullOrBlank()) { + "请输入入场人员联系方式".show(this) + return@setOnClickListener + } + + if (idCardView.text.isNullOrBlank()) { + "请输入入场人员身份证号".show(this) + return@setOnClickListener + } + + applyViewModel.enter( + workerNameView.text.toString(), + genderView.text.toString(), + ownerShipView.text.toString(), + phoneNumberView.text.toString(), + idCardView.text.toString(), + enterReasonView.text.toString(), + imagePaths.reformat(), + System.currentTimeMillis().timestampToCompleteDate() + ) + + applyViewModel.resultModel.observe(this, { + if (it.code == 200) { + finish() + } + }) + + applyViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "申请中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) } } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt new file mode 100644 index 0000000..975bdb7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -0,0 +1,43 @@ +package com.casic.br.operationsite.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.base.BaseApplication +import com.casic.br.operationsite.extensions.separateResponseCode +import com.casic.br.operationsite.extensions.toErrorMessage +import com.casic.br.operationsite.model.CommonResultModel +import com.casic.br.operationsite.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +class ApplyViewModel : BaseViewModel() { + private val gson = Gson() + val resultModel = MutableLiveData() + + fun enter( + workerName: String, gender: String, ownerShip: String, phoneNumber: String, + idCardNumber: String, enterReason: String, workerImage: String, applyTime: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.enter( + workerName, gender, ownerShip, phoneNumber, + idCardNumber, enterReason, workerImage, applyTime + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + resultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + loadState.value = LoadState.Fail + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 977370f..aaccfb1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -100,4 +100,21 @@ @Field("lat") lat: String, @Field("createTime") createTime: String ): String + + /** + * 人员申请入场 + */ + @FormUrlEncoded + @POST("/worker/apply") + suspend fun enter( + @Header("token") token: String, + @Field("workerName") workerName: String, + @Field("gender") gender: String, + @Field("ownerShip") ownerShip: String, + @Field("phoneNumber") phoneNumber: String, + @Field("idCardNumber") idCardNumber: String, + @Field("enterReason") enterReason: String, + @Field("workerAvatar") workerAvatar: String, + @Field("applyTime") applyTime: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3be66b4..0c15793 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -92,4 +92,18 @@ eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime ) } + + /** + * 人员申请入场 + */ + suspend fun enter( + workerName: String, gender: String, ownerShip: String, phoneNumber: String, + idCardNumber: String, enterReason: String, workerAvatar: String, applyTime: String + ): String { + return api.enter( + AuthenticationHelper.token!!, + workerName, gender, ownerShip, phoneNumber, + idCardNumber, enterReason, workerAvatar, applyTime + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 4aaaf9e..b039ec4 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -14,8 +14,8 @@ Manifest.permission.READ_PHONE_STATE ) - const val SERVER_BASE_URL = "http://192.168.43.66:12210" -// const val SERVER_BASE_URL = "http://111.198.10.15:12210" +// const val SERVER_BASE_URL = "http://192.168.43.66:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:12210" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index a7483bd..16405b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -11,7 +11,10 @@ import com.casic.br.operationsite.callback.OnImageCompressListener import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage +import com.casic.br.operationsite.extensions.reformat import com.casic.br.operationsite.utils.DialogHelper +import com.casic.br.operationsite.utils.LocaleConstant +import com.casic.br.operationsite.vm.ApplyViewModel import com.casic.br.operationsite.vm.UploadFileViewModel import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector @@ -20,11 +23,10 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.realFilePath -import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_apply_enter.* import kotlinx.android.synthetic.main.activity_apply_enter.addImageRecyclerView import kotlinx.android.synthetic.main.activity_upload_activity.* @@ -36,6 +38,7 @@ private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter private lateinit var uploadFileViewModel: UploadFileViewModel + private lateinit var applyViewModel: ApplyViewModel private val context: Context = this@ApplyEnterActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 @@ -52,8 +55,10 @@ override fun initData() { uploadFileViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java) + applyViewModel = ViewModelProvider(this).get(ApplyViewModel::class.java) imageAdapter = EditableImageAdapter(this, 1) + imageAdapter.setImageMargins(10f, 10f, 3f) addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) addImageRecyclerView.adapter = imageAdapter } @@ -75,15 +80,24 @@ val realFilePath = uri.realFilePath(this) Log.d(kTag, "realFilePath: $realFilePath") - //暂时直接显示图片 - realPaths.add(realFilePath) - imageAdapter.setupImage(realPaths) - //上传图片 } } override fun initEvent() { + genderView.setOnClickListener { + BottomActionSheet.Builder() + .setContext(this) + .setActionItemTitle(LocaleConstant.GENDER) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + genderView.text = LocaleConstant.GENDER[position] + } + }) + .build().show() + } + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { //人脸检测 @@ -136,7 +150,53 @@ }) confirmApplyButton.setOnClickListener { + if (workerNameView.text.isNullOrBlank()) { + "请输入入场人员姓名".show(this) + return@setOnClickListener + } + if (ownerShipView.text.isNullOrBlank()) { + "请输入入场人员单位名称".show(this) + return@setOnClickListener + } + + if (phoneNumberView.text.isNullOrBlank()) { + "请输入入场人员联系方式".show(this) + return@setOnClickListener + } + + if (idCardView.text.isNullOrBlank()) { + "请输入入场人员身份证号".show(this) + return@setOnClickListener + } + + applyViewModel.enter( + workerNameView.text.toString(), + genderView.text.toString(), + ownerShipView.text.toString(), + phoneNumberView.text.toString(), + idCardView.text.toString(), + enterReasonView.text.toString(), + imagePaths.reformat(), + System.currentTimeMillis().timestampToCompleteDate() + ) + + applyViewModel.resultModel.observe(this, { + if (it.code == 200) { + finish() + } + }) + + applyViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "申请中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) } } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt new file mode 100644 index 0000000..975bdb7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/vm/ApplyViewModel.kt @@ -0,0 +1,43 @@ +package com.casic.br.operationsite.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.base.BaseApplication +import com.casic.br.operationsite.extensions.separateResponseCode +import com.casic.br.operationsite.extensions.toErrorMessage +import com.casic.br.operationsite.model.CommonResultModel +import com.casic.br.operationsite.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState + +class ApplyViewModel : BaseViewModel() { + private val gson = Gson() + val resultModel = MutableLiveData() + + fun enter( + workerName: String, gender: String, ownerShip: String, phoneNumber: String, + idCardNumber: String, enterReason: String, workerImage: String, applyTime: String + ) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.enter( + workerName, gender, ownerShip, phoneNumber, + idCardNumber, enterReason, workerImage, applyTime + ) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + resultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + loadState.value = LoadState.Fail + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_apply_enter.xml b/app/src/main/res/layout/activity_apply_enter.xml index 1b12447..fa989ee 100644 --- a/app/src/main/res/layout/activity_apply_enter.xml +++ b/app/src/main/res/layout/activity_apply_enter.xml @@ -25,7 +25,9 @@ style="@style/LinearLayoutTextViewStyle" android:text="姓名" /> - + @@ -41,8 +43,9 @@ style="@style/LinearLayoutTextViewStyle" android:layout_width="match_parent" android:gravity="end|center" - android:text="@string/unknown" - android:textColor="@color/subTextColor" /> + android:hint="请选择" + android:textColor="@color/subTextColor" + android:textColorHint="@color/hintTextColor" /> @@ -53,7 +56,9 @@ style="@style/LinearLayoutTextViewStyle" android:text="所属单位" /> - + @@ -65,6 +70,7 @@ android:text="联系方式" /> @@ -75,9 +81,11 @@ + android:text="身份证号" /> - +