From 67516c02caa4191d74403a1ad253f8ae6af3d108 Mon Sep 17 00:00:00 2001
From: lianlilong <409813353@qq.com>
Date: Thu, 11 Apr 2024 23:21:22 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E4=BA=8C=E6=9C=9F=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 5 +-
app/src/main/AndroidManifest.xml | 28 +-
.../apply/activity/SuccessActivity.java | 30 +
.../apply/fragment/ApplyFragment.java | 366 ++++++++++--
.../apply/model/ApplyDept.java | 9 +
.../apply/model/DetailQueryResult.java | 15 +
.../apply/viewmodel/ApplyViewModel.java | 58 +-
.../PoliceEmergencyDetailActivity.java | 193 ++++++-
.../data/fragment/DataFragment.java | 15 +-
.../data/model/PoliceEmergencyDetail.java | 1 -
.../http/BaseRequestClient.java | 64 +--
.../policedatasystem/http/RequestClient.java | 232 +++++++-
.../policedatasystem/indexActivity.java | 98 ++--
.../com/police/policedatasystem/main/App.java | 6 +
.../mine/activity/ApplyDetailActivity.java | 70 +++
.../mine/adapter/MineApplyListAdapter.java | 28 +
.../mine/fragment/MineFragment.java | 180 +++++-
.../policedatasystem/mine/model/Apply.java | 61 ++
.../mine/model/ApplyDetail.java | 71 +++
.../mine/viewmodel/DetailViewModel.java | 53 ++
.../mine/viewmodel/MineViewModel.java | 94 +++
.../policedatasystem/util/Constants.java | 20 +-
.../police/policedatasystem/util/UiUtils.java | 2 +-
app/src/main/res/drawable/all_15_fff_bg.xml | 6 +
app/src/main/res/drawable/all_7_4b8e01_bg.xml | 6 +
.../main/res/drawable/all_7_999_border_bg.xml | 8 +
.../drawable/all_7_999_bottom_border_bg.xml | 14 +
app/src/main/res/drawable/all_7_de7900_bg.xml | 6 +
.../main/res/drawable/all_7_line_ccc_bg.xml | 7 +-
.../res/drawable/all_7_main_border_bg.xml | 8 +
.../main/res/layout/activity_apply_detail.xml | 213 +++++++
.../activity_police_emergency_detail.xml | 539 +-----------------
app/src/main/res/layout/activity_success.xml | 91 +++
.../res/layout/bottom_navigation_view.xml | 42 +-
.../main/res/layout/dialog_dept_selector.xml | 40 ++
app/src/main/res/layout/dialog_selector.xml | 5 +-
app/src/main/res/layout/dropdown_layout5.xml | 2 +-
app/src/main/res/layout/fragment_apply.xml | 7 +
app/src/main/res/layout/fragment_data.xml | 5 +
app/src/main/res/layout/fragment_mine.xml | 12 +
...ude_police_emergency_detail_apply_info.xml | 108 ++++
...lude_police_emergency_detail_base_info.xml | 273 +++++++++
...lude_police_emergency_detail_cjya_info.xml | 63 ++
...de_police_emergency_detail_person_info.xml | 268 +++++++++
...ude_police_emergency_detail_query_info.xml | 154 +++++
.../main/res/layout/item_apply_fragment_1.xml | 17 +-
.../main/res/layout/item_dialog_selector.xml | 6 +-
app/src/main/res/layout/item_mine_apply.xml | 143 +++++
app/src/main/res/layout/item_select_dept.xml | 42 ++
.../mipmap-xxhdpi/icon_apply_detail_query.png | Bin 0 -> 4491 bytes
.../res/mipmap-xxhdpi/icon_apply_success.png | Bin 0 -> 4783 bytes
app/src/main/res/mipmap-xxhdpi/icon_cjya.png | Bin 0 -> 6331 bytes
app/src/main/res/mipmap-xxhdpi/icon_czya.png | Bin 0 -> 5042 bytes
.../res/mipmap-xxhdpi/icon_down_sanjiao.png | Bin 0 -> 5880 bytes
.../res/mipmap-xxhdpi/icon_right_sanjiao.png | Bin 0 -> 3225 bytes
.../main/res/mipmap-xxhdpi/icon_selected.png | Bin 0 -> 3732 bytes
.../res/mipmap-xxhdpi/icon_unselected.png | Bin 0 -> 3157 bytes
app/src/main/res/values/colors.xml | 5 +
app/src/main/res/values/themes.xml | 4 +
59 files changed, 3074 insertions(+), 719 deletions(-)
create mode 100644 app/src/main/java/com/police/policedatasystem/apply/activity/SuccessActivity.java
create mode 100644 app/src/main/java/com/police/policedatasystem/apply/model/DetailQueryResult.java
create mode 100644 app/src/main/java/com/police/policedatasystem/mine/activity/ApplyDetailActivity.java
create mode 100644 app/src/main/java/com/police/policedatasystem/mine/adapter/MineApplyListAdapter.java
create mode 100644 app/src/main/java/com/police/policedatasystem/mine/model/Apply.java
create mode 100644 app/src/main/java/com/police/policedatasystem/mine/model/ApplyDetail.java
create mode 100644 app/src/main/java/com/police/policedatasystem/mine/viewmodel/DetailViewModel.java
create mode 100644 app/src/main/java/com/police/policedatasystem/mine/viewmodel/MineViewModel.java
create mode 100644 app/src/main/res/drawable/all_15_fff_bg.xml
create mode 100644 app/src/main/res/drawable/all_7_4b8e01_bg.xml
create mode 100644 app/src/main/res/drawable/all_7_999_border_bg.xml
create mode 100644 app/src/main/res/drawable/all_7_999_bottom_border_bg.xml
create mode 100644 app/src/main/res/drawable/all_7_de7900_bg.xml
create mode 100644 app/src/main/res/drawable/all_7_main_border_bg.xml
create mode 100644 app/src/main/res/layout/activity_apply_detail.xml
create mode 100644 app/src/main/res/layout/activity_success.xml
create mode 100644 app/src/main/res/layout/dialog_dept_selector.xml
create mode 100644 app/src/main/res/layout/include_police_emergency_detail_apply_info.xml
create mode 100644 app/src/main/res/layout/include_police_emergency_detail_base_info.xml
create mode 100644 app/src/main/res/layout/include_police_emergency_detail_cjya_info.xml
create mode 100644 app/src/main/res/layout/include_police_emergency_detail_person_info.xml
create mode 100644 app/src/main/res/layout/include_police_emergency_detail_query_info.xml
create mode 100644 app/src/main/res/layout/item_mine_apply.xml
create mode 100644 app/src/main/res/layout/item_select_dept.xml
create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_apply_detail_query.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_apply_success.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_cjya.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_czya.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_down_sanjiao.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_right_sanjiao.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_selected.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_unselected.png
diff --git a/app/build.gradle b/app/build.gradle
index 3a70d2d..8ba7264 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
applicationId "com.police.policedatasystem"
minSdk 24
targetSdk 33
- versionCode 10019
- versionName "1.0.19"
+ versionCode 10026
+ versionName "1.0.26"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
@@ -72,4 +72,5 @@ dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.8.1' // OkHttp库
implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation 'com.google.android.material:material:1.8.0'
+ implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ac81e78..7546b9c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,10 +3,21 @@
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="1">
+
+
+
+
+
@@ -26,7 +37,14 @@
android:roundIcon="@mipmap/jinghui"
android:supportsRtl="true"
android:theme="@style/Theme.PoliceDataSystem"
+ tools:ignore="MissingTvBanner"
tools:targetApi="31">
+
+
+
@@ -53,8 +72,13 @@
android:theme="@style/Theme.PoliceDataSystem">
-
-
+
+
+
+
diff --git a/app/src/main/java/com/police/policedatasystem/apply/activity/SuccessActivity.java b/app/src/main/java/com/police/policedatasystem/apply/activity/SuccessActivity.java
new file mode 100644
index 0000000..4f3eaa2
--- /dev/null
+++ b/app/src/main/java/com/police/policedatasystem/apply/activity/SuccessActivity.java
@@ -0,0 +1,30 @@
+package com.police.policedatasystem.apply.activity;
+
+import android.os.Bundle;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.police.policedatasystem.databinding.ActivitySuccessBinding;
+import com.police.policedatasystem.main.App;
+
+public class SuccessActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ ActivitySuccessBinding binding = ActivitySuccessBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+ binding.ivBack.setOnClickListener(view -> {
+ App.mainIndex = 1;
+ finish();
+ });
+ binding.tvApplyBtn.setOnClickListener(view -> {
+ App.mainIndex = 1;
+ finish();
+ });
+ binding.tvMineBtn.setOnClickListener(view -> {
+ App.mainIndex = 2;
+ finish();
+ });
+ }
+}
\ 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 96d4c26..93db8fa 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,6 @@
package com.police.policedatasystem.apply.fragment;
+import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
@@ -8,6 +9,7 @@ import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -19,24 +21,33 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.police.policedatasystem.R;
+import com.police.policedatasystem.apply.activity.SuccessActivity;
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.apply.viewmodel.ApplyViewModel;
+import com.police.policedatasystem.databinding.DialogDeptSelectorBinding;
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;
+import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
public class ApplyFragment extends Fragment {
private FragmentApplyBinding binding;
private ApplyViewModel viewModel;
+ public List applyTypes;
public List applyDept;
public List applyPeople;
+ public List applyXXLY;
+ public List applyJWLX;
+ private String dictValue;
@Nullable
@Override
@@ -48,17 +59,44 @@ public class ApplyFragment extends Fragment {
private void initView() {
viewModel = new ApplyViewModel(this, (indexActivity) this.getActivity());
+ 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();
- viewModel.getApplyType();
- viewModel.getApplyDept();
- viewModel.getApplyPerson();
}
+ /**
+ * 设置申请事由下拉框
+ *
+ * @param applyTypes 申请事由集合
+ */
public void setPopupWindow(List applyTypes) {
+ if (applyTypes.isEmpty()) {
+ Toast.makeText(this.getContext(), "用户未在大数据实战赋能系统登记,无法进行赋能", Toast.LENGTH_SHORT).show();
+ return;
+ }
// 初始化 PopupWindow
PopupWindow popupWindow = new PopupWindow(getContext());
// 加载自定义布局
@@ -70,7 +108,9 @@ public class ApplyFragment extends Fragment {
popupWindow.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
// 设置 PopupWindow 显示的位置(相对于按钮)
popupWindow.showAtLocation(binding.typeGroup, Gravity.NO_GRAVITY, 0, 0);
+ this.applyTypes = applyTypes;
binding.tvApplySearchTitle.setText(applyTypes.get(0).getDictLabel());
+ this.dictValue = applyTypes.get(0).getDictValue();
for (ApplyType item : applyTypes) {
TextView textView = new TextView(getContext());
textView.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
@@ -83,6 +123,7 @@ public class ApplyFragment extends Fragment {
textView.setOnClickListener(view -> {
// 处理菜单项 1 的点击事件
binding.tvApplySearchTitle.setText(item.getDictLabel());
+ changeView(item.getDictValue());
popupWindow.dismiss(); // 关闭 PopupWindow
});
}
@@ -95,22 +136,299 @@ public class ApplyFragment extends Fragment {
popupWindow.setWidth(binding.typeGroup.getWidth());
popupWindow.showAsDropDown(binding.typeGroup);
});
- binding.includeApply.tvQueryName.setOnClickListener(view -> {
- setPopupWindow2(applyDept);
- });
- binding.includeApply.tvQueryOrg.setOnClickListener(view -> {
- setPopupWindow3(applyPeople);
+ binding.includeApply.tvQueryOrg.setOnClickListener(view -> showDeptDialog((TextView) view, "选择部门", applyDept));
+ binding.includeApply.tvQueryName.setOnClickListener(view -> showPerson(applyPeople));
+ binding.includeApply.tvSearchTitle.setOnClickListener(view -> {
+ if ("2".equals(dictValue)) {
+ showXXLY(applyXXLY);
+ }
+ if ("3".equals(dictValue)) {
+ showJWLX(applyJWLX);
+ }
});
}
- public void setPopupWindow2(List applyDept) {
- List names = applyDept.stream().map(ApplyDept::getName).collect(Collectors.toList());
- showDialog(names);
+ /**
+ * 根据申请事由,改变输入选项title
+ *
+ * @param dictValue 申请事由类型
+ */
+ private void changeView(String dictValue) {
+ this.dictValue = dictValue;
+ binding.includeApply.etSearchTitle.setText("");
+ binding.includeApply.tvSearchTitle.setText("");
+ switch (dictValue) {
+ case "0":
+ binding.includeApply.etSearchTitle.setVisibility(View.VISIBLE);
+ binding.includeApply.tvSearchTitle.setVisibility(View.INVISIBLE);
+ binding.includeApply.tvMyKeyPerson.setText("警情编号:");
+ break;
+ case "1":
+ case "6":
+ binding.includeApply.etSearchTitle.setVisibility(View.VISIBLE);
+ binding.includeApply.tvSearchTitle.setVisibility(View.INVISIBLE);
+ binding.includeApply.tvMyKeyPerson.setText("身份证号码:");
+ break;
+ case "2":
+ binding.includeApply.etSearchTitle.setVisibility(View.INVISIBLE);
+ binding.includeApply.tvSearchTitle.setVisibility(View.VISIBLE);
+ binding.includeApply.tvMyKeyPerson.setText("线索来源:");
+ break;
+ case "3":
+ binding.includeApply.etSearchTitle.setVisibility(View.INVISIBLE);
+ binding.includeApply.tvSearchTitle.setVisibility(View.VISIBLE);
+ binding.includeApply.tvMyKeyPerson.setText("警务类型:");
+ break;
+ case "5":
+ binding.includeApply.etSearchTitle.setVisibility(View.VISIBLE);
+ binding.includeApply.tvSearchTitle.setVisibility(View.INVISIBLE);
+ binding.includeApply.tvMyKeyPerson.setText("事由详情:");
+ break;
+ case "7":
+ binding.includeApply.etSearchTitle.setVisibility(View.VISIBLE);
+ binding.includeApply.tvSearchTitle.setVisibility(View.INVISIBLE);
+ binding.includeApply.tvMyKeyPerson.setText("案件编号:");
+ break;
+ default:
+ }
}
- public void setPopupWindow3(List applyPeople) {
+ public void showDept(List applyDept) {
+ if (applyDept == null || applyDept.isEmpty()) return;
+ showDeptDialog(binding.includeApply.tvQueryOrg, "选择归属部门", applyDept);
+ }
+
+ public void showPerson(List applyPeople) {
+ if (applyPeople == null || applyPeople.isEmpty()) {
+ return;
+ }
List names = applyPeople.stream().map(ApplyPerson::getUserName).collect(Collectors.toList());
- showDialog(names);
+ showDialog(binding.includeApply.tvQueryName, "选择审批人", names);
+ }
+
+ public void showXXLY(List applyPeople) {
+ if (applyPeople == null || applyPeople.isEmpty()) return;
+ List names = applyPeople.stream().map(ApplyType::getDictLabel).collect(Collectors.toList());
+ showDialog(binding.includeApply.tvSearchTitle, "选择消息来源", names);
+ }
+
+ public void showJWLX(List applyPeople) {
+ if (applyPeople == null || applyPeople.isEmpty()) return;
+ List names = applyPeople.stream().map(ApplyType::getDictLabel).collect(Collectors.toList());
+ showDialog(binding.includeApply.tvSearchTitle, "选择警务类型", names);
+ }
+
+ /**
+ * 提交
+ */
+ private void addApply() {
+ if (applyTypes == null) {
+ Toast.makeText(this.getContext(), "用户未在大数据实战赋能系统登记,无法进行赋能", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ HashMap params = new HashMap<>();
+ for (ApplyType item : applyTypes) {
+ if (item.getDictLabel().equals(binding.tvApplySearchTitle.getText().toString())) {
+ dictValue = item.getDictValue();
+ break;
+ }
+ }
+ if (dictValue == null) {
+ return;
+ }
+ switch (dictValue) {
+ case "0":
+ case "1":
+ case "5":
+ case "7":
+ params.put("jqbh", binding.includeApply.etSearchTitle.getText().toString());
+ break;
+ case "2":
+ params.put("xsly", binding.includeApply.tvSearchTitle.getText().toString());
+ break;
+ case "3":
+ params.put("jwlx", binding.includeApply.tvSearchTitle.getText().toString());
+ break;
+ case "6":
+ params.put("syBz", binding.includeApply.etSearchTitle.getText().toString());
+ break;
+ default:
+ return;
+ }
+ params.put("sy", dictValue);
+ params.put("sqnr", binding.includeApply.etQueryBody.getText().toString());
+ 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 sendSuccess() {
+ if (getActivity() == null) return;
+ getActivity().startActivity(new Intent(getActivity(), SuccessActivity.class));
+ }
+
+ public void showDialog(TextView textView, String title, List items) {
+ if (getContext() == null) return;
+ AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+ DialogSelectorBinding selectorBinding = DialogSelectorBinding.inflate(getLayoutInflater());
+ View dialogView = selectorBinding.getRoot();
+ selectorBinding.tvDialogTitle.setText(title);
+ RecyclerView recyclerView = selectorBinding.rcv;
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+ 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) {
+ if (getContext() == null) return;
+ AlertDialog.Builder builder = new AlertDialog.Builder(getContext(), R.style.TransparentAlertDialog);
+ DialogDeptSelectorBinding selectorBinding = DialogDeptSelectorBinding.inflate(getLayoutInflater());
+ View dialogView = selectorBinding.getRoot();
+ selectorBinding.tvDialogTitle.setText(title);
+ RecyclerView recyclerView = selectorBinding.rcv;
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+ 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(getContext(), "请选择一个归属部门", 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));
+ }
+ }
+ }
+
+ /**
+ * 取消勾选
+ */
+ 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);
}
public void loadingShow() {
@@ -124,26 +442,4 @@ public class ApplyFragment extends Fragment {
getActivity().runOnUiThread(() -> binding.rlLoading.setVisibility(View.GONE));
}
}
-
- public void showDialog(List items) {
- if (getContext() == null) return;
- AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
- DialogSelectorBinding selectorBinding = DialogSelectorBinding.inflate(getLayoutInflater());
- View dialogView = selectorBinding.getRoot();
- RecyclerView recyclerView = selectorBinding.rcv;
- recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
- 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);
- adapter.setOnItemClickListener((adapter1, view, position) -> {
-
- });
- builder.setView(dialogView);
- AlertDialog dialog = builder.create();
- dialog.show();
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/police/policedatasystem/apply/model/ApplyDept.java b/app/src/main/java/com/police/policedatasystem/apply/model/ApplyDept.java
index f1a1e01..c19dab5 100644
--- a/app/src/main/java/com/police/policedatasystem/apply/model/ApplyDept.java
+++ b/app/src/main/java/com/police/policedatasystem/apply/model/ApplyDept.java
@@ -11,6 +11,7 @@ public class ApplyDept implements Serializable {
private String name;
private String pId;
private String title;
+ private int level = 0;
private boolean open;
private boolean nocheck;
@@ -34,6 +35,14 @@ public class ApplyDept implements Serializable {
return name;
}
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
public void setName(String name) {
this.name = name;
}
diff --git a/app/src/main/java/com/police/policedatasystem/apply/model/DetailQueryResult.java b/app/src/main/java/com/police/policedatasystem/apply/model/DetailQueryResult.java
new file mode 100644
index 0000000..0b85cba
--- /dev/null
+++ b/app/src/main/java/com/police/policedatasystem/apply/model/DetailQueryResult.java
@@ -0,0 +1,15 @@
+package com.police.policedatasystem.apply.model;
+
+import java.io.Serializable;
+
+public class DetailQueryResult implements Serializable {
+ private String GOBACK;
+
+ public String getGOBACK() {
+ return GOBACK;
+ }
+
+ public void setGOBACK(String GOBACK) {
+ this.GOBACK = GOBACK;
+ }
+}
diff --git a/app/src/main/java/com/police/policedatasystem/apply/viewmodel/ApplyViewModel.java b/app/src/main/java/com/police/policedatasystem/apply/viewmodel/ApplyViewModel.java
index 84e74ba..0a55dcb 100644
--- a/app/src/main/java/com/police/policedatasystem/apply/viewmodel/ApplyViewModel.java
+++ b/app/src/main/java/com/police/policedatasystem/apply/viewmodel/ApplyViewModel.java
@@ -11,6 +11,7 @@ import com.police.policedatasystem.indexActivity;
import com.police.policedatasystem.util.UiUtils;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.List;
import okhttp3.Call;
@@ -53,16 +54,15 @@ public class ApplyViewModel {
@Override
public void onSuccess(List value) {
-// value.sort(Comparator.comparing(ApplyDept::getDictSort));
fragment.applyDept = value;
fragment.loadingNone();
}
});
}
- public void getApplyPerson() {
+ public void getApplyPerson(String deptId) {
fragment.loadingShow();
- activity.requestClient.getApplyPerson(new CustomCallBack>() {
+ activity.requestClient.getApplyPerson(deptId,new CustomCallBack>() {
@Override
public void onError(@NonNull Call call, @NonNull Exception e) {
UiUtils.toast(e.getMessage());
@@ -71,10 +71,60 @@ public class ApplyViewModel {
@Override
public void onSuccess(List value) {
-// value.sort(Comparator.comparing(ApplyDept::getDictSort));
fragment.applyPeople = value;
fragment.loadingNone();
}
});
}
+
+ public void getApplyJWLX() {
+ fragment.loadingShow();
+ activity.requestClient.getApplyJWLX(new CustomCallBack>() {
+ @Override
+ public void onError(@NonNull Call call, @NonNull Exception e) {
+ UiUtils.toast(e.getMessage());
+ fragment.loadingNone();
+ }
+
+ @Override
+ public void onSuccess(List value) {
+ fragment.applyJWLX = value;
+ fragment.loadingNone();
+ }
+ });
+ }
+
+ public void getApplyXXLY() {
+ fragment.loadingShow();
+ activity.requestClient.getApplyXXLY(new CustomCallBack>() {
+ @Override
+ public void onError(@NonNull Call call, @NonNull Exception e) {
+ UiUtils.toast(e.getMessage());
+ fragment.loadingNone();
+ }
+
+ @Override
+ public void onSuccess(List value) {
+ fragment.applyXXLY = value;
+ fragment.loadingNone();
+ }
+ });
+ }
+
+ public void addApply(HashMap map) {
+ fragment.loadingShow();
+ activity.requestClient.addApply(map, new CustomCallBack