From 1d80f1be8639af7c52de3d826ce3dbceafecf4e2 Mon Sep 17 00:00:00 2001 From: chenglifeng Date: Sun, 28 Sep 2025 14:00:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81=EF=BC=9B?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 6 +- .../survey/logic/viewmodel/LoginViewModel.kt | 19 ++++ .../logic/viewmodel/ProjectViewModel.kt | 45 +++++++-- .../com/project/survey/model/ProjectBean.kt | 6 ++ .../java/com/project/survey/network/Api.kt | 23 +++++ .../com/project/survey/ui/home/MeFragment.kt | 10 +- .../survey/ui/login/UpdatePwdActivity.kt | 67 +++++++++++++ .../survey/ui/{home => mine}/AboutActivity.kt | 4 +- .../survey/ui/project/ProjectListActivity.kt | 8 +- app/src/main/res/layout/activity_about.xml | 23 ++--- .../main/res/layout/activity_update_pwd.xml | 96 +++++++++++++++++++ 11 files changed, 275 insertions(+), 32 deletions(-) create mode 100644 app/src/main/java/com/project/survey/ui/login/UpdatePwdActivity.kt rename app/src/main/java/com/project/survey/ui/{home => mine}/AboutActivity.kt (91%) create mode 100644 app/src/main/res/layout/activity_update_pwd.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index efc6232..e4db9a2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -455,7 +455,11 @@ android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize|stateHidden" /> + diff --git a/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt b/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt index 102325f..f5759b8 100644 --- a/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt +++ b/app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt @@ -18,6 +18,7 @@ import com.project.survey.ui.login.LoginActivity import com.project.survey.ui.login.LoginInputCodeActivity import com.project.survey.ui.project.ProjectListActivity import com.project.survey.util.SPUtils +import kotlinx.coroutines.delay class LoginViewModel : BaseViewModel() { @@ -150,4 +151,22 @@ class LoginViewModel : BaseViewModel() { // } // } // } + + val updatePasswordResponse: LiveData + get() = _updatePasswordResponse + private val _updatePasswordResponse = MutableLiveData() + + /** + * 修改密码 + */ + fun updatePassword(oldPassword: String, newPassword: String) { + launch { + val res = api.updatePassword(oldPassword, newPassword) + if (res.success) { + _updatePasswordResponse.postValue(res.message) + } else { + toast(res.message) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt b/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt index 3356455..80f92ea 100644 --- a/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt +++ b/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt @@ -31,18 +31,44 @@ class ProjectViewModel : BaseViewModel() { val api = RetrofitClient.createApiService() - val projectResponse: LiveData> - get() = _projectResponse - private val _projectResponse = MutableLiveData>() +// val projectResponse: LiveData> +// get() = _projectResponse +// private val _projectResponse = MutableLiveData>() +// +// /** +// * 获取用户在工作的所以项目的信息 +// */ +// fun fetchProjectList() { +// launch { +// val res = api.fetchProjectList(SPUtils.getString(SPConstants.PERSON_ID)) +// if (res.success) { +// _projectResponse.postValue(res.data.map { it.values }) +// } else { +// errorResponse.postValue(res.message) +// } +// } +// } + + val projectListResponse: LiveData> + get() = _projectListResponse + private val _projectListResponse = MutableLiveData>() /** - * 获取用户在工作的所以项目的信息 + * 获取项目的信息 + * @param name 项目名称 + * @param code 项目编码 */ - fun fetchProjectList() { +// fun fetchProjectList(name: String? = null, code: String? = null) { + fun fetchProjectList(searchContent: String? = null) { launch { - val res = api.fetchProjectList(SPUtils.getString(SPConstants.PERSON_ID)) + val res = + api.fetchProjectListByProperty( + SPUtils.getString(SPConstants.PERSON_ID), + searchContent, + searchContent + ) if (res.success) { - _projectResponse.postValue(res.data.map { it.values }) + _projectListResponse.postValue(res.data.records.map { it.values }) } else { errorResponse.postValue(res.message) } @@ -308,7 +334,10 @@ class ProjectViewModel : BaseViewModel() { /** * 拉取坐标 */ - fun fetchCoordinateSystem(onSuccess: (CoordinateSystemValue) -> Unit, onFailure: (String) -> Unit) { + fun fetchCoordinateSystem( + onSuccess: (CoordinateSystemValue) -> Unit, + onFailure: (String) -> Unit + ) { launch { val res = api.downloadCoordinateSystem() if (res.success) { diff --git a/app/src/main/java/com/project/survey/model/ProjectBean.kt b/app/src/main/java/com/project/survey/model/ProjectBean.kt index 2963c7e..cf72454 100644 --- a/app/src/main/java/com/project/survey/model/ProjectBean.kt +++ b/app/src/main/java/com/project/survey/model/ProjectBean.kt @@ -64,4 +64,10 @@ data class ProjectData( val tenantIdField: String, val tenantNameField: String, val values: ProjectBean +): Parcelable + +@Keep +@Parcelize +data class ProjectListData( + val records: List ): Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/network/Api.kt b/app/src/main/java/com/project/survey/network/Api.kt index d8b533d..f6d8932 100644 --- a/app/src/main/java/com/project/survey/network/Api.kt +++ b/app/src/main/java/com/project/survey/network/Api.kt @@ -18,6 +18,7 @@ import com.project.survey.model.MeasureBean import com.project.survey.model.PointEntry import com.project.survey.model.ProjectBean import com.project.survey.model.ProjectData +import com.project.survey.model.ProjectListData import com.project.survey.model.SpecialControlNetworkVersionBean import com.project.survey.util.SPUtils import okhttp3.RequestBody @@ -79,6 +80,18 @@ interface Api { @Query("personId") personId: String ): HttpResult> + /** + * 获取项目的信息 + */ + @GET("je/project/getProjectInfoByProperty") + suspend fun fetchProjectListByProperty( + @Query("personId") personId: String, + @Query("name") name: String?, + @Query("code") code: String?, + @Query("current") current: String = "1", + @Query("pageSize") pageSize: String = "100" + ): HttpResult + /** * 获取流程审批列表 */ @@ -292,4 +305,14 @@ interface Api { @Field("coordinateParameter") coordinateParameter: String, @Field("name") name: String ): HttpResult + + /** + * 修改密码 + */ + @FormUrlEncoded + @POST("/je/personInfo/updatePassword") + suspend fun updatePassword( + @Field("oldPassword") oldPassword: String, + @Field("newPassword") newPassword: String + ): HttpResult } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/home/MeFragment.kt b/app/src/main/java/com/project/survey/ui/home/MeFragment.kt index a65be47..d8e79dd 100644 --- a/app/src/main/java/com/project/survey/ui/home/MeFragment.kt +++ b/app/src/main/java/com/project/survey/ui/home/MeFragment.kt @@ -3,22 +3,18 @@ package com.project.survey.ui.home import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.viewModels -import blankj.utilcode.util.ActivityUtils import com.afollestad.materialdialogs.MaterialDialog -import com.project.survey.BuildConfig -import com.project.survey.R import com.project.survey.constants.EventConstants import com.project.survey.constants.SPConstants import com.project.survey.databinding.FragmentMeBinding import com.project.survey.extend.setOnClickNoRepeatListener -import com.project.survey.logic.event.Message -import com.project.survey.logic.viewmodel.LoginViewModel import com.project.survey.logic.viewmodel.MainViewModel import com.project.survey.model.ProjectBean import com.project.survey.ui.MainActivity import com.project.survey.ui.base.BaseBindingFragment -import com.project.survey.ui.login.ForgetPwdInputCodeActivity import com.project.survey.ui.login.LoginActivity +import com.project.survey.ui.login.UpdatePwdActivity +import com.project.survey.ui.mine.AboutActivity import com.project.survey.ui.project.ProjectListActivity import com.project.survey.util.ActivityNavUtil import com.project.survey.util.LogoutUtil @@ -81,7 +77,7 @@ class MeFragment : BaseBindingFragment() { ProjectListActivity.start() } mBinding.llChangePwd.setOnClickNoRepeatListener { - ForgetPwdInputCodeActivity.start() + UpdatePwdActivity.start() } // 关于 mBinding.llAbout.setOnClickNoRepeatListener { diff --git a/app/src/main/java/com/project/survey/ui/login/UpdatePwdActivity.kt b/app/src/main/java/com/project/survey/ui/login/UpdatePwdActivity.kt new file mode 100644 index 0000000..0dd2ce6 --- /dev/null +++ b/app/src/main/java/com/project/survey/ui/login/UpdatePwdActivity.kt @@ -0,0 +1,67 @@ +package com.project.survey.ui.login + +import androidx.activity.viewModels +import com.project.survey.databinding.ActivityUpdatePwdBinding +import com.project.survey.extend.setOnClickNoRepeatListener +import com.project.survey.extend.smartDismiss +import com.project.survey.extend.toast +import com.project.survey.logic.viewmodel.LoginViewModel +import com.project.survey.ui.base.BaseBindingActivity +import com.project.survey.util.ActivityNavUtil + +/** + * 更新密码 + */ +class UpdatePwdActivity : BaseBindingActivity() { + + companion object { + fun start() { + ActivityNavUtil.startActivity {} + } + } + + private val viewModel: LoginViewModel by viewModels() + + override fun getBinding(): ActivityUpdatePwdBinding = + ActivityUpdatePwdBinding.inflate(layoutInflater) + + + override fun initView() { + immersionToolbar(mBinding.toolbar) + + viewModel.errorResponse.observe(this) { + toast(it) + } + viewModel.updatePasswordResponse.observe(this) { + finish() + toast(it) + } + } + + override fun initData() { + + } + + override fun initListener() { + mBinding.btnConfirm.setOnClickNoRepeatListener { + val oldPassword = mBinding.passwordViewOld.text.takeIf { it.isNotEmpty() } ?: run { + toast("请输入旧密码") + return@setOnClickNoRepeatListener + } + val newPassword = mBinding.passwordViewOne.text.takeIf { it.isNotEmpty() } ?: run { + toast("请输入新密码") + return@setOnClickNoRepeatListener + } + val newPassword2 = mBinding.passwordViewTwo.text.takeIf { it.isNotEmpty() } ?: run { + toast("请输入确认密码") + return@setOnClickNoRepeatListener + } + if (newPassword != newPassword2) { + toast("新密码输入不一致") + return@setOnClickNoRepeatListener + } + viewModel.updatePassword(oldPassword, newPassword) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/home/AboutActivity.kt b/app/src/main/java/com/project/survey/ui/mine/AboutActivity.kt similarity index 91% rename from app/src/main/java/com/project/survey/ui/home/AboutActivity.kt rename to app/src/main/java/com/project/survey/ui/mine/AboutActivity.kt index 7f4da92..5bfa1ae 100644 --- a/app/src/main/java/com/project/survey/ui/home/AboutActivity.kt +++ b/app/src/main/java/com/project/survey/ui/mine/AboutActivity.kt @@ -1,4 +1,4 @@ -package com.project.survey.ui.home +package com.project.survey.ui.mine import blankj.utilcode.util.AppUtils import com.project.survey.R @@ -24,7 +24,7 @@ class AboutActivity : BaseBindingActivity() { } override fun initData() { - mBinding.tvVersion.text = "工程测量综合管理系统 V${AppUtils.getAppVersionName()}" + mBinding.tvVersion.text = "工程测量综合管理系统\nV${AppUtils.getAppVersionName()}" } override fun initListener() { diff --git a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt index b49aa79..216c47d 100644 --- a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt +++ b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt @@ -47,6 +47,7 @@ class ProjectListActivity : BaseBindingActivity(), O private val viewModel: ProjectViewModel by viewModels() private val adapter by lazy { ProjectListAdapter() } + private var searchContent: String? = null override fun initView() { immersionToolbar(mBinding.toolbar, "项目列表") @@ -62,7 +63,8 @@ class ProjectListActivity : BaseBindingActivity(), O // initTabLayout() // 搜索 mBinding.searchWidget.setOnEditorSearchListener { - // 搜索 it + searchContent = it.ifBlank { null } + fetchData() } mBinding.smartRefreshLayout.setOnRefreshListener(this) @@ -76,7 +78,7 @@ class ProjectListActivity : BaseBindingActivity(), O toast(it) mBinding.smartRefreshLayout.smartDismiss() } - viewModel.projectResponse.observe(this) { + viewModel.projectListResponse.observe(this) { mBinding.smartRefreshLayout.smartDismiss() if (it.isNotEmpty()) { adapter.submitList(it) @@ -88,7 +90,7 @@ class ProjectListActivity : BaseBindingActivity(), O } private fun fetchData() { - viewModel.fetchProjectList() + viewModel.fetchProjectList(searchContent) } override fun onRefresh(refreshLayout: RefreshLayout) { diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 366d516..c90bc63 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -23,9 +23,9 @@ + tools:text="工程测量综合管理系统\nV1.0.0" /> @@ -60,8 +61,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Copyright© 2023-2025" - android:textColor="@color/text_color_666" - android:textSize="@dimen/sw_14sp" + android:textColor="@color/text_color_999" + android:textSize="@dimen/sw_12sp" app:layout_constraintBottom_toTopOf="@id/tv_company" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> @@ -72,8 +73,8 @@ android:layout_height="wrap_content" android:layout_marginBottom="@dimen/sw_50dp" android:text="上海勘测设计研究院有限公司" - android:textColor="@color/text_color_666" - android:textSize="@dimen/sw_14sp" + android:textColor="@color/text_color_999" + android:textSize="@dimen/sw_12sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/layout/activity_update_pwd.xml b/app/src/main/res/layout/activity_update_pwd.xml new file mode 100644 index 0000000..6762a1f --- /dev/null +++ b/app/src/main/res/layout/activity_update_pwd.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +