diff --git a/app/build.gradle b/app/build.gradle
index 8ba7264..8b52f60 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
applicationId "com.police.policedatasystem"
minSdk 24
targetSdk 33
- versionCode 10026
- versionName "1.0.26"
+ versionCode 10029
+ versionName "1.0.29"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7546b9c..62ffa2e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -39,12 +39,18 @@
android:theme="@style/Theme.PoliceDataSystem"
tools:ignore="MissingTvBanner"
tools:targetApi="31">
+
+
applyDept;
+ public List applyPeople;
+ public RequestClient requestClient;
+
+ private com.police.policedatasystem.databinding.ActivityApplyBinding binding;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = ActivityApplyBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+ requestClient = RequestClient.instance();
+ binding.ivBack.setOnClickListener(view -> finish());
+ initView();
+ }
+
+ private void initView() {
+ viewModel = new ApplyPostViewModel(this);
+ binding.includeApply.tvCommitBtn.setOnClickListener(view -> addApply());
+ binding.rlLoading.setOnClickListener(view -> {
+ });
+ binding.includeApply.tvQueryOrg.setOnClickListener(view -> showDeptDialog((TextView) view, "选择部门", applyDept));
+ binding.includeApply.tvQueryName.setOnClickListener(view -> showPerson(applyPeople));
+ viewModel.getApplyDept();
+ binding.includeApply.tvQueryOrg.setOnClickListener(view -> showDept(applyDept));
+ binding.includeApply.etSearchTitle.setText(getIntent().getStringExtra("jqbh"));
+// binding.includeApply.tvQueryName2.setOnClickListener(view -> {
+// //打开相册选择一张图片
+// openAlbum();
+// });
+ }
+
+
+ private void openAlbum() {
+ Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+ intent.setType("image/*");
+ startActivityForResult(intent, 250);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ //相册
+ if (requestCode == 250 && resultCode == RESULT_OK && data != null) {
+ nrFj = UiUtils.uriToBase64(this, data.getData());
+// binding.includeApply.tvQueryName2.setText(data.getData().toString());
+ }
+ }
+
+ private String nrFj = "";
+
+ public void showDept(List applyDept) {
+ if (applyDept == null || applyDept.isEmpty()) {
+ Toast.makeText(this, "暂无归属部门", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ showDeptDialog(binding.includeApply.tvQueryOrg, "选择归属部门", applyDept);
+ }
+
+ public void showPerson(List applyPeople) {
+ if (applyPeople == null || applyPeople.isEmpty()) {
+ Toast.makeText(this, "暂无审批人", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ List names = applyPeople.stream().map(ApplyPerson::getUserName).collect(Collectors.toList());
+ showDialog(binding.includeApply.tvQueryName, "选择审批人", names);
+ }
+
+ public void showDialog(TextView textView, String title, List items) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ DialogSelectorBinding selectorBinding = DialogSelectorBinding.inflate(getLayoutInflater());
+ View dialogView = selectorBinding.getRoot();
+ selectorBinding.tvDialogTitle.setText(title);
+ RecyclerView recyclerView = selectorBinding.rcv;
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
+ BaseQuickAdapter adapter = new BaseQuickAdapter(R.layout.item_dialog_selector, items) {
+ @Override
+ protected void convert(@NonNull BaseViewHolder baseViewHolder, String s) {
+ baseViewHolder.setText(R.id.tv_item_text, s);
+ }
+ };
+ recyclerView.setAdapter(adapter);
+ builder.setView(dialogView);
+ AlertDialog dialog = builder.create();
+ adapter.setOnItemClickListener((adapter1, view, position) -> {
+ textView.setText(items.get(position));
+ dialog.dismiss();
+ });
+ dialog.show();
+ }
+
+ public void showDeptDialog(TextView textView, String title, List items) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.TransparentAlertDialog);
+ DialogDeptSelectorBinding selectorBinding = DialogDeptSelectorBinding.inflate(getLayoutInflater());
+ View dialogView = selectorBinding.getRoot();
+ selectorBinding.tvDialogTitle.setText(title);
+ RecyclerView recyclerView = selectorBinding.rcv;
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
+ List data = new ArrayList<>();
+ for (ApplyDept item : items) {
+ if ("0".equals(item.getpId())) {
+ data.add(item);
+ break;
+ }
+ }
+ BaseQuickAdapter adapter = new BaseQuickAdapter(R.layout.item_select_dept, data) {
+ @Override
+ protected void convert(@NonNull BaseViewHolder baseViewHolder, ApplyDept s) {
+ baseViewHolder.setText(R.id.tv_title, s.getName());
+ boolean hasChild = false;
+ for (ApplyDept item : items) {
+ if (s.getId().equals(item.getpId())) {
+ hasChild = true;
+ break;
+ }
+ }
+ baseViewHolder.setVisible(R.id.iv_sanjiao, hasChild);
+ if (s.isOpen()) {
+ baseViewHolder.setImageResource(R.id.iv_sanjiao, R.mipmap.icon_down_sanjiao);
+ baseViewHolder.setImageResource(R.id.iv_box, R.mipmap.icon_selected);
+ baseViewHolder.setTextColor(R.id.tv_title, getResources().getColor(R.color.main_color));
+ baseViewHolder.setBackgroundColor(R.id.tv_title, getResources().getColor(R.color.selected_bg_color));
+ } else {
+ baseViewHolder.setImageResource(R.id.iv_sanjiao, R.mipmap.icon_right_sanjiao);
+ baseViewHolder.setImageResource(R.id.iv_box, R.mipmap.icon_unselected);
+ baseViewHolder.setTextColor(R.id.tv_title, getResources().getColor(R.color.color_666));
+ baseViewHolder.setBackgroundColor(R.id.tv_title, getResources().getColor(R.color.white));
+ }
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < s.getLevel(); i++) {
+ sb.append(" ");
+ }
+ baseViewHolder.setText(R.id.v_level, sb);
+ }
+ };
+ recyclerView.setAdapter(adapter);
+ builder.setView(dialogView);
+ AlertDialog dialog = builder.create();
+ adapter.setOnItemClickListener((adapter1, view, position) -> {
+ ApplyDept dept = data.get(position);
+ boolean open = dept.isOpen();
+ int addCount = 1;
+ for (ApplyDept item : items) {
+ if (item.getpId().equals(dept.getId())) {
+ if (open) {
+ removeItem(data, item);
+ } else {
+ item.setLevel(dept.getLevel() + 1);
+ data.add(position + addCount, item);
+ addCount += 1;
+ }
+ }
+ }
+ if (open) {
+ cancelSelected(dept);
+ } else {
+ enterSelected(data, dept);
+ }
+ adapter.setList(data);
+ selectorBinding.tvEnter.setOnClickListener(view1 -> {
+ long selectId = -1;
+ ApplyDept selectDept = null;
+ for (ApplyDept item : applyDept) {
+ if (item.isOpen()) {
+ item.setOpen(false);
+ if (selectId < Long.parseLong(item.getId())) {
+ selectId = Long.parseLong(item.getId());
+ selectDept = item;
+ }
+ }
+ }
+ if (selectId >= 0) {
+ textView.setText(selectDept.getTitle());
+ viewModel.getApplyPerson(selectId + "");
+ dialog.dismiss();
+ } else {
+ Toast.makeText(this, "请选择一个归属部门", Toast.LENGTH_SHORT).show();
+ }
+
+ });
+ });
+ dialog.show();
+ }
+
+ private void removeItem(List data, ApplyDept dept) {
+ data.remove(dept);
+ for (int i = 0; i < data.size(); i++) {
+ if (data.get(i).getpId().equals(dept.getId())) {
+ removeItem(data, data.get(i));
+ }
+ }
+ }
+
+ /**
+ * 发送成功,跳转到成功页面
+ */
+ public void sendSuccess() {
+ Toast.makeText(this, "提交成功!", Toast.LENGTH_SHORT).show();
+ finish();
+ }
+
+ /**
+ * 取消勾选
+ */
+ private void cancelSelected(ApplyDept dept) {
+ dept.setOpen(false);
+ for (ApplyDept item : applyDept) {
+ if (item.getpId().equals(dept.getId())) {
+ cancelSelected(item);
+ }
+ }
+ }
+
+ /**
+ * 选择勾选
+ */
+ private void enterSelected(List data, ApplyDept dept) {
+ for (ApplyDept item : applyDept) {
+ if (item.getpId().equals(dept.getpId()) && !item.equals(dept)) {
+ cancelSelected(item);
+ for (ApplyDept i : applyDept) {
+ if (i.getpId().equals(item.getId())) {
+ removeItem(data, i);
+ }
+ }
+ }
+ }
+ dept.setOpen(true);
+ }
+
+ /**
+ * 提交
+ */
+ private void addApply() {
+ HashMap params = new HashMap<>();
+ params.put("jqbh", binding.includeApply.etSearchTitle.getText().toString());
+ params.put("sy", "7");
+ params.put("sqnr", binding.includeApply.etQueryBody.getText().toString());
+ params.put("nrFj", nrFj);
+ params.put("shrName", binding.includeApply.tvQueryName.getText().toString());
+ for (ApplyPerson item : applyPeople) {
+ if (item.getUserName().equals(binding.includeApply.tvQueryName.getText().toString())) {
+ params.put("shrSfhm", item.getLoginName());
+ break;
+ }
+ }
+ viewModel.addApply(params);
+ }
+
+ public void loadingShow() {
+ binding.rlLoading.setVisibility(View.VISIBLE);
+ }
+
+ public void loadingNone() {
+ binding.rlLoading.setVisibility(View.GONE);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/police/policedatasystem/apply/activity/QueryApplyResultActivity.java b/app/src/main/java/com/police/policedatasystem/apply/activity/QueryApplyResultActivity.java
new file mode 100644
index 0000000..397e8d4
--- /dev/null
+++ b/app/src/main/java/com/police/policedatasystem/apply/activity/QueryApplyResultActivity.java
@@ -0,0 +1,58 @@
+package com.police.policedatasystem.apply.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.police.policedatasystem.apply.viewmodel.ApplyResultViewModel;
+import com.police.policedatasystem.databinding.ActivityQueryApplyResultBinding;
+import com.police.policedatasystem.mine.activity.ApplyDetailActivity;
+import com.police.policedatasystem.mine.adapter.MineApplyListAdapter;
+import com.police.policedatasystem.mine.model.Apply;
+
+import java.util.List;
+
+public class QueryApplyResultActivity extends AppCompatActivity {
+
+ private ActivityQueryApplyResultBinding binding;
+ private MineApplyListAdapter adapter;
+ private List applyList;
+ private ApplyResultViewModel viewModel;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = ActivityQueryApplyResultBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+ viewModel = new ApplyResultViewModel(this);
+ binding.ivBack.setOnClickListener(view -> finish());
+ binding.mineRvGroup.setLayoutManager(new LinearLayoutManager(this));
+ adapter = new MineApplyListAdapter();
+ binding.mineRvGroup.setAdapter(adapter);
+ adapter.setOnItemClickListener((adapter1, view, position) -> applyDetail(applyList.get(position).getBh()));
+ viewModel.getApplyList(getIntent().getStringExtra("jqbh"));
+// viewModel.getApplyList("22010020240411234457000018");
+ }
+
+ public void applyList(List list) {
+ applyList = list;
+ adapter.setList(list);
+ }
+
+ public void applyDetail(String applyDetail) {
+ Intent intent = new Intent(this, ApplyDetailActivity.class);
+ intent.putExtra("applyDetail", applyDetail);
+ startActivity(intent);
+ }
+
+ public void loadingShow() {
+ binding.rlLoading.setVisibility(View.VISIBLE);
+ }
+
+ public void loadingNone() {
+ binding.rlLoading.setVisibility(View.GONE);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/police/policedatasystem/apply/fragment/ApplyFragment.java b/app/src/main/java/com/police/policedatasystem/apply/fragment/ApplyFragment.java
index 93db8fa..d3207a5 100644
--- a/app/src/main/java/com/police/policedatasystem/apply/fragment/ApplyFragment.java
+++ b/app/src/main/java/com/police/policedatasystem/apply/fragment/ApplyFragment.java
@@ -1,5 +1,7 @@
package com.police.policedatasystem.apply.fragment;
+import static android.app.Activity.RESULT_OK;
+
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
@@ -31,7 +33,6 @@ import com.police.policedatasystem.databinding.DialogSelectorBinding;
import com.police.policedatasystem.databinding.DropdownLayout4Binding;
import com.police.policedatasystem.databinding.FragmentApplyBinding;
import com.police.policedatasystem.indexActivity;
-import com.police.policedatasystem.main.App;
import com.police.policedatasystem.util.UiUtils;
import java.util.ArrayList;
@@ -62,29 +63,15 @@ public class ApplyFragment extends Fragment {
binding.includeApply.tvCommitBtn.setOnClickListener(view -> addApply());
binding.rlLoading.setOnClickListener(view -> {
});
- binding.vLock.setOnClickListener(view -> {
- });
viewModel.getApplyType();
viewModel.getApplyDept();
viewModel.getApplyXXLY();
viewModel.getApplyJWLX();
binding.includeApply.tvQueryOrg.setOnClickListener(view -> showDept(applyDept));
- }
-
- @Override
- public void onResume() {
- super.onResume();
- if (App.isLock) {
- binding.includeApply.etSearchTitle.setText(App.jqbh);
- binding.vLock.setVisibility(View.VISIBLE);
- } else {
- binding.vLock.setVisibility(View.INVISIBLE);
- }
- }
-
- @Override
- public void onStart() {
- super.onStart();
+// binding.includeApply.tvQueryName2.setOnClickListener(view -> {
+// //打开相册选择一张图片
+// openAlbum();
+// });
}
/**
@@ -92,7 +79,7 @@ public class ApplyFragment extends Fragment {
*
* @param applyTypes 申请事由集合
*/
- public void setPopupWindow(List applyTypes) {
+ public void setPopupWindow(List applyTypes) {//布局,include,自定义view,service服务,启动方式
if (applyTypes.isEmpty()) {
Toast.makeText(this.getContext(), "用户未在大数据实战赋能系统登记,无法进行赋能", Toast.LENGTH_SHORT).show();
return;
@@ -257,6 +244,7 @@ public class ApplyFragment extends Fragment {
}
params.put("sy", dictValue);
params.put("sqnr", binding.includeApply.etQueryBody.getText().toString());
+// params.put("nrFj", nrFj);
params.put("shrName", binding.includeApply.tvQueryName.getText().toString());
for (ApplyPerson item : applyPeople) {
if (item.getUserName().equals(binding.includeApply.tvQueryName.getText().toString())) {
@@ -267,6 +255,8 @@ public class ApplyFragment extends Fragment {
viewModel.addApply(params);
}
+// private String nrFj = "";
+
/**
* 发送成功,跳转到成功页面
*/
@@ -275,6 +265,22 @@ public class ApplyFragment extends Fragment {
getActivity().startActivity(new Intent(getActivity(), SuccessActivity.class));
}
+ private void openAlbum() {
+ Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+ intent.setType("image/*");
+ startActivityForResult(intent, 250);
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ //相册
+ if (requestCode == 250 && resultCode == RESULT_OK && data != null) {
+// nrFj = UiUtils.uriToBase64(this.getContext(), data.getData());
+// binding.includeApply.tvQueryName2.setText(data.getData().toString());
+ }
+ }
+
public void showDialog(TextView textView, String title, List items) {
if (getContext() == null) return;
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
diff --git a/app/src/main/java/com/police/policedatasystem/apply/viewmodel/ApplyPostViewModel.java b/app/src/main/java/com/police/policedatasystem/apply/viewmodel/ApplyPostViewModel.java
new file mode 100644
index 0000000..066f21f
--- /dev/null
+++ b/app/src/main/java/com/police/policedatasystem/apply/viewmodel/ApplyPostViewModel.java
@@ -0,0 +1,110 @@
+package com.police.policedatasystem.apply.viewmodel;
+
+import androidx.annotation.NonNull;
+
+import com.police.policedatasystem.apply.activity.ApplyActivity;
+import com.police.policedatasystem.apply.model.ApplyDept;
+import com.police.policedatasystem.apply.model.ApplyPerson;
+import com.police.policedatasystem.apply.model.ApplyType;
+import com.police.policedatasystem.http.CustomCallBack;
+import com.police.policedatasystem.util.UiUtils;
+
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+
+import okhttp3.Call;
+
+public class ApplyPostViewModel {
+ public ApplyActivity activity;
+
+ public ApplyPostViewModel(ApplyActivity activity) {
+ this.activity = activity;
+ }
+
+
+ public void getApplyDept() {
+ activity.loadingShow();
+ activity.requestClient.getApplyDept(new CustomCallBack>() {
+ @Override
+ public void onError(@NonNull Call call, @NonNull Exception e) {
+ UiUtils.toast(e.getMessage());
+ activity.loadingNone();
+ }
+
+ @Override
+ public void onSuccess(List value) {
+ activity.applyDept = value;
+ activity.loadingNone();
+ }
+ });
+ }
+
+ public void getApplyPerson(String deptId) {
+ activity.loadingShow();
+ activity.requestClient.getApplyPerson(deptId, new CustomCallBack>() {
+ @Override
+ public void onError(@NonNull Call call, @NonNull Exception e) {
+ UiUtils.toast(e.getMessage());
+ activity.loadingNone();
+ }
+
+ @Override
+ public void onSuccess(List value) {
+ activity.applyPeople = value;
+ activity.loadingNone();
+ }
+ });
+ }
+//
+// public void getApplyJWLX() {
+// activity.loadingShow();
+// activity.requestClient.getApplyJWLX(new CustomCallBack>() {
+// @Override
+// public void onError(@NonNull Call call, @NonNull Exception e) {
+// UiUtils.toast(e.getMessage());
+// activity.loadingNone();
+// }
+//
+// @Override
+// public void onSuccess(List value) {
+// activity.applyJWLX = value;
+// activity.loadingNone();
+// }
+// });
+// }
+//
+// public void getApplyXXLY() {
+// activity.loadingShow();
+// activity.requestClient.getApplyXXLY(new CustomCallBack>() {
+// @Override
+// public void onError(@NonNull Call call, @NonNull Exception e) {
+// UiUtils.toast(e.getMessage());
+// activity.loadingNone();
+// }
+//
+// @Override
+// public void onSuccess(List value) {
+// activity.applyXXLY = value;
+// activity.loadingNone();
+// }
+// });
+// }
+
+ public void addApply(HashMap map) {
+ activity.loadingShow();
+ activity.requestClient.addApply(map, new CustomCallBack