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() { + @Override + public void onError(@NonNull Call call, @NonNull Exception e) { + UiUtils.toast(e.getMessage()); + fragment.loadingNone(); + } + + @Override + public void onSuccess(Object value) { + fragment.sendSuccess(); + fragment.loadingNone(); + } + }); + } } diff --git a/app/src/main/java/com/police/policedatasystem/data/activity/PoliceEmergencyDetailActivity.java b/app/src/main/java/com/police/policedatasystem/data/activity/PoliceEmergencyDetailActivity.java index e2085b4..e625f5e 100644 --- a/app/src/main/java/com/police/policedatasystem/data/activity/PoliceEmergencyDetailActivity.java +++ b/app/src/main/java/com/police/policedatasystem/data/activity/PoliceEmergencyDetailActivity.java @@ -1,19 +1,37 @@ package com.police.policedatasystem.data.activity; +import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; +import android.net.Uri; import android.os.Bundle; import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import com.bumptech.glide.Glide; import com.google.gson.Gson; -import com.police.policedatasystem.main.App; -import com.police.policedatasystem.databinding.ActivityPoliceEmergencyDetailBinding; +import com.police.policedatasystem.R; +import com.police.policedatasystem.apply.model.ApplyType; +import com.police.policedatasystem.apply.model.DetailQueryResult; import com.police.policedatasystem.data.model.PoliceEmergencyDetail; +import com.police.policedatasystem.databinding.ActivityPoliceEmergencyDetailBinding; +import com.police.policedatasystem.http.CustomCallBack; +import com.police.policedatasystem.http.RequestClient; +import com.police.policedatasystem.main.App; +import com.police.policedatasystem.mine.activity.ApplyDetailActivity; import com.police.policedatasystem.util.Constants; import com.police.policedatasystem.util.UiUtils; +import java.util.List; + +import okhttp3.Call; + /** * 警情详情页面 */ @@ -31,28 +49,157 @@ public class PoliceEmergencyDetailActivity extends Activity { binding.ivBack.setOnClickListener(view -> finish()); PoliceEmergencyDetail detail = new Gson().fromJson(getIntent().getStringExtra("param"), PoliceEmergencyDetail.class); if (UiUtils.isNotEmpty(detail.getZp())) { - Glide.with(App.getApp()).asBitmap().load(detail.getZp()).into(binding.ivZp); + Glide.with(App.getApp()).asBitmap().load(detail.getZp()).into(binding.includePersonInfo.ivZp); } - setText(binding.tvJcjbh, detail.getJcjbh());//报警编号 - setText(binding.tvBjjyqk, detail.getBjjyqk());//报警内容 - setText(binding.tvBjrlxdh, detail.getBjrlxdh());//报警电话 - setText(binding.tvJjsj, UiUtils.formatTime(detail.getJjsj()));//报警时间 - setText(binding.tvAsjfsdddzmc, detail.getAsjfsdddzmc());//报警位置 - setText(binding.tvCjdwgajgjgdm, detail.getCjdwgajgjgdm());//出警单位 - setText(binding.tvCjrxm, detail.getCjrxm());//出警民警 - setText(binding.tvBq, detail.getBq());//标签 - setText(binding.tvJg, detail.getJg());//籍贯 - setText(binding.tvXm, detail.getXm());//姓名 - setText(binding.tvXb, detail.getXb());//性别 - setText(binding.tvMz, detail.getMz());//民族 - setText(binding.tvHyzk, detail.getHyzk());//婚姻状况 - setText(binding.tvSfzh, detail.getBjrzjhm());//身份证号 - setText(binding.tvNl, detail.getNl());//年龄 - setText(binding.tvFwcs, detail.getFwcs());//服务场所 - setText(binding.tvLsbjcs, detail.getLsbjcs());//历史报警次数 - setText(binding.tvJqlb, detail.getJqlb());//警情类别 - setText(binding.tvCllb, detail.getCllx());//处理类型 - setText(binding.tvCljg, detail.getCljg());//处理结果 + setText(binding.includeBaseInfo.tvJcjbh, detail.getJcjbh());//报警编号 + setText(binding.includeBaseInfo.tvBjjyqk, detail.getBjjyqk());//报警内容 + setText(binding.includeBaseInfo.tvBjrlxdh, detail.getBjrlxdh());//报警电话 + setText(binding.includeBaseInfo.tvJjsj, UiUtils.formatTime(detail.getJjsj()));//报警时间 + setText(binding.includeBaseInfo.tvAsjfsdddzmc, detail.getAsjfsdddzmc());//报警位置 + setText(binding.includeBaseInfo.tvCjdwgajgjgdm, detail.getCjdwgajgjgdm());//出警单位 + setText(binding.includeBaseInfo.tvCjrxm, detail.getCjrxm());//出警民警 + setText(binding.includeBaseInfo.tvJqlb, detail.getJqlb());//警情类别 + setText(binding.includeBaseInfo.tvCllb, detail.getCllx());//处理类型 + setText(binding.includeBaseInfo.tvCljg, detail.getCljg());//处理结果 + + setText(binding.includePersonInfo.tvBq, detail.getBq());//标签 + setText(binding.includePersonInfo.tvJg, detail.getJg());//籍贯 + setText(binding.includePersonInfo.tvXm, detail.getXm());//姓名 + setText(binding.includePersonInfo.tvXb, detail.getXb());//性别 + setText(binding.includePersonInfo.tvMz, detail.getMz());//民族 + setText(binding.includePersonInfo.tvHyzk, detail.getHyzk());//婚姻状况 + setText(binding.includePersonInfo.tvSfzh, detail.getBjrzjhm());//身份证号 + setText(binding.includePersonInfo.tvNl, detail.getNl());//年龄 + setText(binding.includePersonInfo.tvFwcs, detail.getFwcs());//服务场所 + setText(binding.includePersonInfo.tvLsbjcs, detail.getLsbjcs());//历史报警次数 + + setText(binding.includeCjyaInfo.tvContent, detail.getLsbjcs());//todo 处警预案 + + binding.includeQueryInfo.tvQueryType1.setOnClickListener(view -> { + queryType = 1; + changeView(); + }); + binding.includeQueryInfo.tvQueryType2.setOnClickListener(view -> { + queryType = 2; + changeView(); + }); + binding.includeQueryInfo.tvQueryType3.setOnClickListener(view -> { + queryType = 3; + changeView(); + }); + binding.includeQueryInfo.tvQueryBtn.setOnClickListener(view -> { + sendQuery(); + }); + binding.includeApplyInfo.tvQueryResult.setOnClickListener(view -> { + //跳转到赋能详情 + jumpApplyDetail(detail.getJcjbh()); + }); + binding.includeApplyInfo.tvGoApply.setOnClickListener(view -> { + jumpApplyFragment(detail.getJcjbh()); + }); + binding.includeApplyInfo.tvMakeCall.setOnClickListener(view -> { + //拨打电话660110 + makeCall(); + }); + } + + private void jumpApplyFragment(String jqbh) { + RequestClient.instance().getApplyType(new CustomCallBack>() { + @Override + public void onError(Call call, @NonNull Exception e) { + + } + + @Override + public void onSuccess(List value) { + if (value.isEmpty()) { + Toast.makeText(PoliceEmergencyDetailActivity.this, "用户未在大数据实战赋能系统登记,无法填写工单", Toast.LENGTH_SHORT).show(); + } else { + App.mainIndex = 1; + App.isLock = true; + App.jqbh = jqbh; + finish(); + } + } + }); + + } + + private void jumpApplyDetail(String jqbh) { + RequestClient.instance().getApplyType(new CustomCallBack>() { + @Override + public void onError(Call call, @NonNull Exception e) { + + } + + @Override + public void onSuccess(List value) { + if (value.isEmpty()) { + Toast.makeText(PoliceEmergencyDetailActivity.this, "用户未在大数据实战赋能系统登记,无法查看结果", Toast.LENGTH_SHORT).show(); + } else { + Intent intent = new Intent(PoliceEmergencyDetailActivity.this, ApplyDetailActivity.class); + intent.putExtra("jqbh", jqbh); + startActivity(intent); + } + } + }); + } + + private void makeCall() { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) + != PackageManager.PERMISSION_GRANTED) { + // 权限尚未被授予 + ActivityCompat.requestPermissions(this, + new String[]{Manifest.permission.CALL_PHONE}, + 500); + } else { + // 权限已经被授予,可以拨打电话 + Intent intent = new Intent(Intent.ACTION_CALL); + intent.setData(Uri.parse("tel:660110")); + if (intent.resolveActivity(getPackageManager()) != null) { + startActivity(intent); + } + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { + if (requestCode == 500) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + // 权限被授予,可以拨打电话 + makeCall(); + } + } + } + + private void sendQuery() { + String str = binding.includeQueryInfo.etInput.getText().toString(); + if (str.isEmpty()) { + Toast.makeText(this, "请输入查询内容", Toast.LENGTH_SHORT).show(); + return; + } + RequestClient.instance().policeEmergencyDetailQuery(queryType, str, new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + Toast.makeText(PoliceEmergencyDetailActivity.this, "查询失败", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onSuccess(DetailQueryResult value) { + binding.includeQueryInfo.tvQueryResult.setText(value.getGOBACK()); + } + }); + } + + private int queryType = 1; + + private void changeView() { + binding.includeQueryInfo.tvQueryType1.setTextColor(queryType == 1 ? getColor(R.color.white) : getColor(R.color.color_999)); + binding.includeQueryInfo.tvQueryType2.setTextColor(queryType == 2 ? getColor(R.color.white) : getColor(R.color.color_999)); + binding.includeQueryInfo.tvQueryType3.setTextColor(queryType == 3 ? getColor(R.color.white) : getColor(R.color.color_999)); + binding.includeQueryInfo.tvQueryType1.setBackgroundResource(queryType == 1 ? R.drawable.all_7_main_bg : R.drawable.all_7_999_border_bg); + binding.includeQueryInfo.tvQueryType2.setBackgroundResource(queryType == 2 ? R.drawable.all_7_main_bg : R.drawable.all_7_999_border_bg); + binding.includeQueryInfo.tvQueryType3.setBackgroundResource(queryType == 3 ? R.drawable.all_7_main_bg : R.drawable.all_7_999_border_bg); } public static void startAction(Context context, String num) { diff --git a/app/src/main/java/com/police/policedatasystem/data/fragment/DataFragment.java b/app/src/main/java/com/police/policedatasystem/data/fragment/DataFragment.java index 4a33ca6..ae0d995 100644 --- a/app/src/main/java/com/police/policedatasystem/data/fragment/DataFragment.java +++ b/app/src/main/java/com/police/policedatasystem/data/fragment/DataFragment.java @@ -21,11 +21,12 @@ import com.chad.library.adapter.base.BaseQuickAdapter; import com.police.policedatasystem.R; import com.police.policedatasystem.data.adapter.KeyPersonAdapter; import com.police.policedatasystem.data.adapter.PoliceEmergencyAdapter; -import com.police.policedatasystem.databinding.FragmentDataBinding; -import com.police.policedatasystem.indexActivity; import com.police.policedatasystem.data.model.KeyPerson; import com.police.policedatasystem.data.model.PoliceEmergency; import com.police.policedatasystem.data.viewmodel.DataViewModel; +import com.police.policedatasystem.databinding.FragmentDataBinding; +import com.police.policedatasystem.indexActivity; +import com.police.policedatasystem.main.App; import com.scwang.smart.refresh.footer.ClassicsFooter; import com.scwang.smart.refresh.header.ClassicsHeader; @@ -51,6 +52,9 @@ public class DataFragment extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { binding = FragmentDataBinding.inflate(inflater); initView(); + currentTabBar = 1; + currentTab = 1; + filterType = 0; Activity activity = getActivity(); if (activity instanceof indexActivity) { act = (indexActivity) activity; @@ -71,6 +75,7 @@ public class DataFragment extends Fragment { } public void initData() { + if (viewModel == null) return; viewModel.keyPersonInit(); viewModel.getKeyPersonMessageCount(); } @@ -79,7 +84,7 @@ public class DataFragment extends Fragment { public void onResume() { super.onResume(); if (!act.findAddress) { - act.requestClient.init(); + act.requestClient.init(this::initData); } else { initData(); } @@ -279,12 +284,12 @@ public class DataFragment extends Fragment { } public void loadingShow() { - getActivity().runOnUiThread(() -> binding.rlLoading.setVisibility(View.VISIBLE)); + App.getHandler().post(() -> binding.rlLoading.setVisibility(View.VISIBLE)); } public void loadingNone() { - getActivity().runOnUiThread(() -> binding.rlLoading.setVisibility(View.GONE)); + App.getHandler().post(() -> binding.rlLoading.setVisibility(View.GONE)); } private void setPopupWindow() { diff --git a/app/src/main/java/com/police/policedatasystem/data/model/PoliceEmergencyDetail.java b/app/src/main/java/com/police/policedatasystem/data/model/PoliceEmergencyDetail.java index 5d4fccf..0249fe7 100644 --- a/app/src/main/java/com/police/policedatasystem/data/model/PoliceEmergencyDetail.java +++ b/app/src/main/java/com/police/policedatasystem/data/model/PoliceEmergencyDetail.java @@ -1,7 +1,6 @@ package com.police.policedatasystem.data.model; import java.io.Serializable; -import java.util.List; /** * 警情详情 diff --git a/app/src/main/java/com/police/policedatasystem/http/BaseRequestClient.java b/app/src/main/java/com/police/policedatasystem/http/BaseRequestClient.java index 5da8ea7..3249e32 100644 --- a/app/src/main/java/com/police/policedatasystem/http/BaseRequestClient.java +++ b/app/src/main/java/com/police/policedatasystem/http/BaseRequestClient.java @@ -14,7 +14,6 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.police.policedatasystem.http.requestparams.RequestParams; import com.police.policedatasystem.http.requestparams.ResponseParams; -import com.police.policedatasystem.indexActivity; import com.police.policedatasystem.main.App; import com.police.policedatasystem.main.model.ResourceList; import com.police.policedatasystem.main.model.UserCredential; @@ -37,11 +36,11 @@ import okhttp3.Response; import okhttp3.logging.HttpLoggingInterceptor; public class BaseRequestClient { - public final indexActivity activity; private OkHttpClient okHttpClient; + private FindAddressCallback callback; - public BaseRequestClient(indexActivity activity) { - this.activity = activity; + public interface FindAddressCallback { + void success(); } /* @@ -63,7 +62,8 @@ public class BaseRequestClient { } - public void init() { + public void init(FindAddressCallback callback) { + this.callback = callback; HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); // 设置日志级别,例如打印请求和响应的body okHttpClient = new OkHttpClient.Builder() @@ -100,9 +100,9 @@ public class BaseRequestClient { if (PARAMS_KEY_UA_RET_SUCCESS == resultCode) { Constants.APP_CREDENTIAL = bundle.getString(PARAMS_KEY_UA_APP_CREDENTIAL); Constants.USER_CREDENTIAL = bundle.getString(PARAMS_KEY_UA_USER_CREDENTIAL); - Constants.USER_ID = new Gson().fromJson(Constants.USER_CREDENTIAL, UserCredential.class).getCredential().getLoad().getUserInfo().getJh(); - Constants.SFZH = new Gson().fromJson(Constants.USER_CREDENTIAL, UserCredential.class).getCredential().getLoad().getUserInfo().getSfzh(); - Constants.USER_ORG_ID = new Gson().fromJson(Constants.USER_CREDENTIAL, UserCredential.class).getCredential().getLoad().getUserInfo().getOrgId(); + Constants.setUserId(new Gson().fromJson(Constants.USER_CREDENTIAL, UserCredential.class).getCredential().getLoad().getUserInfo().getJh()); + Constants.setSFZH(new Gson().fromJson(Constants.USER_CREDENTIAL, UserCredential.class).getCredential().getLoad().getUserInfo().getSfzh()); + Constants.setORG_ID(new Gson().fromJson(Constants.USER_CREDENTIAL, UserCredential.class).getCredential().getLoad().getUserInfo().getOrgId()); //根据票据寻址 findAddress(); } else { @@ -144,7 +144,9 @@ public class BaseRequestClient { Constants.resourceListsMap.put(item.getResourceId(), item); } //2.发起请求,获取重点人数据 - activity.initData(); + if (callback != null) { + callback.success(); + } } else { if (UiUtils.isEmpty(resourceList)) { UiUtils.toast("寻址失败,错误码:" + resultCode); @@ -173,67 +175,39 @@ public class BaseRequestClient { @Override public void onFailure(@NonNull Call call, @NonNull IOException e) { // 请求失败 - activity.runOnUiThread(() -> callBack.onError(call, e)); + App.getHandler().post(() -> callBack.onError(call, e)); } @Override public void onResponse(@NonNull Call call, @NonNull Response response) { if (!response.isSuccessful()) { - activity.runOnUiThread(() -> callBack.onError(call, new IOException("Unexpected code " + response))); + App.getHandler().post(() -> callBack.onError(call, new IOException("Unexpected code " + response))); return; } try { // 请求成功,处理响应数据 if (response.body() == null) { - activity.runOnUiThread(() -> callBack.onError(call, new Exception("服务器返回数据异常"))); + App.getHandler().post(() -> callBack.onError(call, new Exception("服务器返回数据异常"))); return; } String responseBody = response.body().string(); -// if (urlKey.equals(Constants.APPLY_TYPE_ID)){ -// responseBody = "{\n" + -// "\"code\":\"200\",\n" + -// "\"data\":{\n" + -// "\"dataList\":[\n" + -// "{\n" + -// "\"fieldValues\":[\n" + -// "{\n" + -// "\"field\":\"outjson\",\n" + -// "\"value\":\"[{\\\"dictLabel\\\":\\\"管控重点人\\\",\\\"dictSort\\\":1,\\\"dictValue\\\":\\\"1\\\"},{\\\"dictLabel\\\":\\\"核验信息\\\",\\\"dictSort\\\":3,\\\"dictValue\\\":\\\"3\\\"},{\\\"dictLabel\\\":\\\"追踪逃犯\\\",\\\"dictSort\\\":2,\\\"dictValue\\\":\\\"6\\\"},{\\\"dictLabel\\\":\\\"处置警情\\\",\\\"dictSort\\\":0,\\\"dictValue\\\":\\\"0\\\"},{\\\"dictLabel\\\":\\\"核查线索\\\",\\\"dictSort\\\":2,\\\"dictValue\\\":\\\"2\\\"},{\\\"dictLabel\\\":\\\"其他\\\",\\\"dictSort\\\":5,\\\"dictValue\\\":\\\"5\\\"},{\\\"dictLabel\\\":\\\"处置案情\\\",\\\"dictSort\\\":1,\\\"dictValue\\\":\\\"7\\\"}]\"\n" + -// "}\n" + -// "]\n" + -// "}\n" + -// "],\n" + -// "\"page\":{\n" + -// "\"total\":7,\n" + -// "\"pageNo\":10,\n" + -// "\"pageSize\":1\n" + -// "}\n" + -// "},\n" + -// "\"messageId\":\"788a1cc4-2009-4744-ba66-7503ca37b0f2\",\n" + -// "\"message\":\"ok\",\n" + -// "\"version\":\"1.0\"\n" + -// "}"; -// } - if (urlKey.equals(Constants.APPLY_TYPE_ID)){ - responseBody="[{\"checked\":false,\"id\":\"220000000000\",\"name\":\"吉林省公安厅\",\"nocheck\":false,\"open\":false,\"pId\":\"0\",\"title\":\"吉林省公安厅\"},{\"checked\":false,\"id\":\"220100000000\",\"name\":\"吉林省长春市公安局\",\"nocheck\":false,\"open\":false,\"pId\":\"220000000000\",\"title\":\"吉林省长春市公安局\"},{\"checked\":false,\"id\":\"220197000000\",\"name\":\"吉林省长春市公安局经济技术开发区分局\",\"nocheck\":false,\"open\":false,\"pId\":\"220100000000\",\"title\":\"吉林省长春市公安局经济技术开发区分局\"},{\"checked\":false,\"id\":\"220197170000\",\"name\":\"吉林省长春市公安局经济技术开发区分局花园路派出所\",\"nocheck\":false,\"open\":false,\"pId\":\"220197000000\",\"title\":\"吉林省长春市公安局经济技术开发区分局花园路派出所\"}]"; - } ResponseParams responseParams = new Gson().fromJson(responseBody, ResponseParams.class); if (!"200".equals(responseParams.getCode())) { - activity.runOnUiThread(() -> callBack.onError(call, new Exception("服务器出错,请联系开发人员或稍后重试!"))); + App.getHandler().post(() -> callBack.onError(call, new Exception("服务器出错,请联系开发人员或稍后重试!"))); return; } if (responseParams.getData().getDataList() == null || responseParams.getData().getDataList().isEmpty()) { - activity.runOnUiThread(() -> callBack.onError(call, new Exception("服务器返回数据异常"))); + App.getHandler().post(() -> callBack.onError(call, new Exception("服务器返回数据异常"))); return; } ResponseParams.FieldData fieldData = responseParams.getData().getDataList().get(0); if (fieldData.getFieldValues() == null || fieldData.getFieldValues().isEmpty()) { - activity.runOnUiThread(() -> callBack.onError(call, new Exception("服务器返回数据异常"))); + App.getHandler().post(() -> callBack.onError(call, new Exception("服务器返回数据异常"))); return; } - activity.runOnUiThread(() -> callBack.onSuccess(fieldData.getFieldValues().get(0).getValue())); + App.getHandler().post(() -> callBack.onSuccess(fieldData.getFieldValues().get(0).getValue())); } catch (Exception e) { - activity.runOnUiThread(() -> callBack.onError(call, e)); + App.getHandler().post(() -> callBack.onError(call, e)); } } }); diff --git a/app/src/main/java/com/police/policedatasystem/http/RequestClient.java b/app/src/main/java/com/police/policedatasystem/http/RequestClient.java index ca343c8..23c53f1 100644 --- a/app/src/main/java/com/police/policedatasystem/http/RequestClient.java +++ b/app/src/main/java/com/police/policedatasystem/http/RequestClient.java @@ -7,6 +7,7 @@ import com.google.gson.reflect.TypeToken; 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.model.DetailQueryResult; import com.police.policedatasystem.data.model.DataCount; import com.police.policedatasystem.data.model.KeyPerson; import com.police.policedatasystem.data.model.KeyPersonDetail; @@ -18,7 +19,8 @@ import com.police.policedatasystem.http.requestparams.GetKeyPersonMessageCountPa import com.police.policedatasystem.http.requestparams.GetOrgKeyPersonListParams; import com.police.policedatasystem.http.requestparams.GetPoliceEmergencyDetailParams; import com.police.policedatasystem.http.requestparams.GetPoliceEmergencyListParams; -import com.police.policedatasystem.indexActivity; +import com.police.policedatasystem.mine.model.Apply; +import com.police.policedatasystem.mine.model.ApplyDetail; import com.police.policedatasystem.util.Constants; import java.util.HashMap; @@ -28,8 +30,15 @@ import okhttp3.Call; public class RequestClient extends BaseRequestClient { - public RequestClient(indexActivity activity) { - super(activity); + private RequestClient() { + } + + private static final class RequestClientHolder { + static final RequestClient requestClient = new RequestClient(); + } + + public static RequestClient instance() { + return RequestClientHolder.requestClient; } /** @@ -66,7 +75,7 @@ public class RequestClient extends BaseRequestClient { params.setSfhm(Constants.SFZH); params.setDept(Constants.USER_ORG_ID); params.setPageSize(Constants.PAGE_SIZE + ""); - request(Constants.KEY_PERSON_ID, new Gson().toJson(params), new CustomCallBack() { + request(Constants.ORG_KEY_PERSON_ID, new Gson().toJson(params), new CustomCallBack() { @Override public void onError(Call call, @NonNull Exception e) { callback.onError(call, e); @@ -114,7 +123,6 @@ public class RequestClient extends BaseRequestClient { */ public void getPoliceEmergency(GetPoliceEmergencyListParams params, CustomCallBack> callBack) { params.setSfhm(Constants.SFZH); -// params.setSfhm("220104198105200331"); params.setPageSize(Constants.PAGE_SIZE + ""); request(Constants.POLICE_EMERGENCY_ID, new Gson().toJson(params), new CustomCallBack() { @Override @@ -163,9 +171,9 @@ public class RequestClient extends BaseRequestClient { params.setSfhm(Constants.SFZH); params.setJybh(Constants.USER_ID); params.setDept(Constants.USER_ORG_ID); -// params.setSfhm("220104198105200331"); +// params.setSfhm("220183197210264653"); // params.setJybh("106222"); -// params.setDept(Constants.USER_ORG_ID); +// params.setDept("220183210000"); request(Constants.KEY_PERSON_MESSAGE_COUNT_ID, new Gson().toJson(params), new CustomCallBack() { @Override public void onError(Call call, @NonNull Exception e) { @@ -225,13 +233,14 @@ public class RequestClient extends BaseRequestClient { } }); } + /** * 获取申请支援审批人 */ - public void getApplyPerson(CustomCallBack> callBack) { + public void getApplyPerson(String deptId, CustomCallBack> callBack) { HashMap params = new HashMap<>(); params.put("type", "3"); - params.put("deptId", Constants.USER_ORG_ID); + params.put("deptId", deptId); params.put("sfhm", Constants.SFZH); request(Constants.APPLY_TYPE_ID, new Gson().toJson(params), new CustomCallBack() { @Override @@ -247,4 +256,209 @@ public class RequestClient extends BaseRequestClient { } }); } + + /** + * 获取申请支援-消息来源 + */ + public void getApplyXXLY(CustomCallBack> callBack) { + HashMap params = new HashMap<>(); + params.put("type", "4"); + params.put("deptId", Constants.USER_ORG_ID); + params.put("sfhm", Constants.SFZH); + request(Constants.APPLY_TYPE_ID, new Gson().toJson(params), new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + callBack.onError(call, e); + } + + @Override + public void onSuccess(String value) { + List applyTypes = new Gson().fromJson(value, new TypeToken>() { + }.getType()); + callBack.onSuccess(applyTypes); + } + }); + } + + /** + * 获取申请支援-警务类型 + */ + public void getApplyJWLX(CustomCallBack> callBack) { + HashMap params = new HashMap<>(); + params.put("type", "5"); + params.put("deptId", Constants.USER_ORG_ID); + params.put("sfhm", Constants.SFZH); + request(Constants.APPLY_TYPE_ID, new Gson().toJson(params), new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + callBack.onError(call, e); + } + + @Override + public void onSuccess(String value) { + List applyTypes = new Gson().fromJson(value, new TypeToken>() { + }.getType()); + callBack.onSuccess(applyTypes); + } + }); + } + + /** + * 获取我的赋能-办理状态 + */ + public void getMineBLZT(CustomCallBack> callBack) { + HashMap params = new HashMap<>(); + params.put("type", "6"); + params.put("deptId", Constants.USER_ORG_ID); + params.put("sfhm", Constants.SFZH); + request(Constants.APPLY_TYPE_ID, new Gson().toJson(params), new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + callBack.onError(call, e); + } + + @Override + public void onSuccess(String value) { + List applyTypes = new Gson().fromJson(value, new TypeToken>() { + }.getType()); + callBack.onSuccess(applyTypes); + } + }); + } + + + /** + * 获取我的赋能-信息来源 + */ + public void getMineXXLY(CustomCallBack> callBack) { + HashMap params = new HashMap<>(); + params.put("type", "7"); + params.put("deptId", Constants.USER_ORG_ID); + params.put("sfhm", Constants.SFZH); + request(Constants.APPLY_TYPE_ID, new Gson().toJson(params), new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + callBack.onError(call, e); + } + + @Override + public void onSuccess(String value) { + List applyTypes = new Gson().fromJson(value, new TypeToken>() { + }.getType()); + callBack.onSuccess(applyTypes); + } + }); + } + + /** + * 申请赋能-提交申请 + */ + public void addApply(HashMap params, CustomCallBack callBack) { + params.put("sfhm", Constants.SFZH); + request(Constants.APPLY_COMMIT_ID, new Gson().toJson(params), new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + callBack.onError(call, e); + } + + @Override + public void onSuccess(String value) { + callBack.onSuccess(null); + } + }); + } + + /** + * 我的赋能-查询我申请的赋能{ + * "sfhm": "220104199208240015", + * "sqsj": "", + * "sy": "", + * "ly": "", + * "spzt": "", + * "fnbh": "" + * } + */ + public void getApplyList(HashMap params, CustomCallBack> callBack) { + params.put("sfhm", "220183197210264653"); + request(Constants.MINE_LIST_ID, new Gson().toJson(params), new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + callBack.onError(call, e); + } + + @Override + public void onSuccess(String value) { + List applyTypes = new Gson().fromJson(value, new TypeToken>() { + }.getType()); + callBack.onSuccess(applyTypes); + } + }); + } + + /** + * 我的赋能详情 + */ + public void getApplyDetail(String fnbh, CustomCallBack callBack) { + HashMap params = new HashMap<>(); + params.put("sfhm", Constants.SFZH); + params.put("fnbh", fnbh); + params.put("deptId", Constants.USER_ORG_ID); + request(Constants.MINE_DETAIL_ID, new Gson().toJson(params), new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + callBack.onError(call, e); + } + + @Override + public void onSuccess(String value) { + ApplyDetail applyDetail = new Gson().fromJson(value, ApplyDetail.class); + callBack.onSuccess(applyDetail); + } + }); + } + + /** + * 警情详情跳转到我的赋能详情 + */ + public void jumpApplyDetail(String jqbh, CustomCallBack callBack) { + HashMap params = new HashMap<>(); + params.put("sfhm", Constants.SFZH); + params.put("sfzh", Constants.SFZH); + params.put("jqbh", jqbh); + params.put("deptId", Constants.USER_ORG_ID); + request(Constants.MINE_DETAIL_ID, new Gson().toJson(params), new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + callBack.onError(call, e); + } + + @Override + public void onSuccess(String value) { + ApplyDetail applyDetail = new Gson().fromJson(value, ApplyDetail.class); + callBack.onSuccess(applyDetail); + } + }); + } + + /** + * 我的赋能详情 + */ + public void policeEmergencyDetailQuery(int type, String content, CustomCallBack callBack) { + HashMap params = new HashMap<>(); + params.put("sfhm", Constants.SFZH); + params.put("type", type + ""); + params.put("condi", content); + request(Constants.SELF_QUERY_ID, new Gson().toJson(params), new CustomCallBack() { + @Override + public void onError(Call call, @NonNull Exception e) { + callBack.onError(call, e); + } + + @Override + public void onSuccess(String value) { + DetailQueryResult applyDetail = new Gson().fromJson(value, DetailQueryResult.class); + callBack.onSuccess(applyDetail); + } + }); + } } diff --git a/app/src/main/java/com/police/policedatasystem/indexActivity.java b/app/src/main/java/com/police/policedatasystem/indexActivity.java index 63083a9..2dbed77 100644 --- a/app/src/main/java/com/police/policedatasystem/indexActivity.java +++ b/app/src/main/java/com/police/policedatasystem/indexActivity.java @@ -18,8 +18,9 @@ import androidx.fragment.app.FragmentTransaction; import com.police.policedatasystem.apply.fragment.ApplyFragment; import com.police.policedatasystem.data.fragment.DataFragment; import com.police.policedatasystem.databinding.ActivityIndexBinding; +import com.police.policedatasystem.http.BaseRequestClient; import com.police.policedatasystem.http.RequestClient; -import com.police.policedatasystem.improve.fragment.ImproveFragment; +import com.police.policedatasystem.main.App; import com.police.policedatasystem.main.viewmodel.IndexViewModel; import com.police.policedatasystem.mine.fragment.MineFragment; import com.police.policedatasystem.util.Constants; @@ -32,7 +33,7 @@ public class indexActivity extends AppCompatActivity { private final DataFragment dataFragment = new DataFragment(); private final ApplyFragment applyFragment = new ApplyFragment(); private final MineFragment mineFragment = new MineFragment(); - private final ImproveFragment improveFragment = new ImproveFragment(); +// private final ImproveFragment improveFragment = new ImproveFragment(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -41,56 +42,71 @@ public class indexActivity extends AppCompatActivity { setContentView(binding.getRoot()); initView(); viewModel = new IndexViewModel(this); - requestClient = new RequestClient(this); + requestClient = RequestClient.instance(); + requestClient.init(() -> { + initData(); + }); } private void initView() { binding.navBarGroup.navBar1.setOnClickListener(view -> { + App.mainIndex = 0; + App.isLock=false; + changeFootBar(); + }); + binding.navBarGroup.navBar2.setOnClickListener(view -> { + App.mainIndex = 1; + changeFootBar(); + }); + binding.navBarGroup.navBar3.setOnClickListener(view -> { + App.mainIndex = 2; + App.isLock=false; + changeFootBar(); + }); +// binding.navBarGroup.navBar4.setOnClickListener(view -> { +// changeFootBar(3); +// }); + registerBroadcastReceiver(); + } + + private void changeFootBar() { + binding.navBarGroup.navBarIcon1.setImageResource(R.mipmap.icon_data_normal); + binding.navBarGroup.navBarText1.setTextColor(getColor(R.color.normal_color)); + binding.navBarGroup.navBarIcon2.setImageResource(R.mipmap.icon_apply_normal); + binding.navBarGroup.navBarText2.setTextColor(getColor(R.color.normal_color)); + binding.navBarGroup.navBarIcon3.setImageResource(R.mipmap.icon_mine_normal); + binding.navBarGroup.navBarText3.setTextColor(getColor(R.color.normal_color)); +// binding.navBarGroup.navBarIcon4.setImageResource(R.mipmap.icon_improve_normal); +// binding.navBarGroup.navBarText4.setTextColor(getColor(R.color.normal_color)); + if (App.mainIndex == 0) { replaceFragment(dataFragment); binding.navBarGroup.navBarIcon1.setImageResource(R.mipmap.icon_data_selected); binding.navBarGroup.navBarText1.setTextColor(getColor(R.color.selected_color)); - binding.navBarGroup.navBarIcon2.setImageResource(R.mipmap.icon_apply_normal); - binding.navBarGroup.navBarText2.setTextColor(getColor(R.color.normal_color)); - binding.navBarGroup.navBarIcon3.setImageResource(R.mipmap.icon_mine_normal); - binding.navBarGroup.navBarText3.setTextColor(getColor(R.color.normal_color)); - binding.navBarGroup.navBarIcon4.setImageResource(R.mipmap.icon_improve_normal); - binding.navBarGroup.navBarText4.setTextColor(getColor(R.color.normal_color)); - }); - binding.navBarGroup.navBar2.setOnClickListener(view -> { + return; + } + if (App.mainIndex == 1) { replaceFragment(applyFragment); - binding.navBarGroup.navBarIcon1.setImageResource(R.mipmap.icon_data_normal); - binding.navBarGroup.navBarText1.setTextColor(getColor(R.color.normal_color)); binding.navBarGroup.navBarIcon2.setImageResource(R.mipmap.icon_apply_selected); binding.navBarGroup.navBarText2.setTextColor(getColor(R.color.selected_color)); - binding.navBarGroup.navBarIcon3.setImageResource(R.mipmap.icon_mine_normal); - binding.navBarGroup.navBarText3.setTextColor(getColor(R.color.normal_color)); - binding.navBarGroup.navBarIcon4.setImageResource(R.mipmap.icon_improve_normal); - binding.navBarGroup.navBarText4.setTextColor(getColor(R.color.normal_color)); - }); - binding.navBarGroup.navBar3.setOnClickListener(view -> { + return; + } + if (App.mainIndex == 2) { replaceFragment(mineFragment); - binding.navBarGroup.navBarIcon1.setImageResource(R.mipmap.icon_data_normal); - binding.navBarGroup.navBarText1.setTextColor(getColor(R.color.normal_color)); - binding.navBarGroup.navBarIcon2.setImageResource(R.mipmap.icon_apply_normal); - binding.navBarGroup.navBarText2.setTextColor(getColor(R.color.normal_color)); binding.navBarGroup.navBarIcon3.setImageResource(R.mipmap.icon_mine_selected); binding.navBarGroup.navBarText3.setTextColor(getColor(R.color.selected_color)); - binding.navBarGroup.navBarIcon4.setImageResource(R.mipmap.icon_improve_normal); - binding.navBarGroup.navBarText4.setTextColor(getColor(R.color.normal_color)); - }); - binding.navBarGroup.navBar4.setOnClickListener(view -> { - replaceFragment(improveFragment); - binding.navBarGroup.navBarIcon1.setImageResource(R.mipmap.icon_data_normal); - binding.navBarGroup.navBarText1.setTextColor(getColor(R.color.normal_color)); - binding.navBarGroup.navBarIcon2.setImageResource(R.mipmap.icon_apply_normal); - binding.navBarGroup.navBarText2.setTextColor(getColor(R.color.normal_color)); - binding.navBarGroup.navBarIcon3.setImageResource(R.mipmap.icon_mine_normal); - binding.navBarGroup.navBarText3.setTextColor(getColor(R.color.normal_color)); - binding.navBarGroup.navBarIcon4.setImageResource(R.mipmap.icon_improve_selected); - binding.navBarGroup.navBarText4.setTextColor(getColor(R.color.selected_color)); - }); - replaceFragment(dataFragment); - registerBroadcastReceiver(); + return; + } + if (App.mainIndex == 3) { + //replaceFragment(improveFragment); +// binding.navBarGroup.navBarIcon4.setImageResource(R.mipmap.icon_improve_selected); +// binding.navBarGroup.navBarText4.setTextColor(getColor(R.color.selected_color)); + } + } + + @Override + protected void onResume() { + super.onResume(); + changeFootBar(); } public void initData() { @@ -134,7 +150,9 @@ public class indexActivity extends AppCompatActivity { if (action.contains(ACTION_SUFFIX_UA_LOGIN)) { //再次获取票据 if (requestClient != null) { - requestClient.init(); + requestClient.init(() -> { + initData(); + }); } return; } diff --git a/app/src/main/java/com/police/policedatasystem/main/App.java b/app/src/main/java/com/police/policedatasystem/main/App.java index 15a2423..293bcc3 100644 --- a/app/src/main/java/com/police/policedatasystem/main/App.java +++ b/app/src/main/java/com/police/policedatasystem/main/App.java @@ -6,6 +6,12 @@ import android.os.Handler; public class App extends Application { private static App app; + /** + * 首页显示fragment索引 + */ + public static int mainIndex = 0; + public static boolean isLock = false; + public static String jqbh = ""; private static Handler handler; diff --git a/app/src/main/java/com/police/policedatasystem/mine/activity/ApplyDetailActivity.java b/app/src/main/java/com/police/policedatasystem/mine/activity/ApplyDetailActivity.java new file mode 100644 index 0000000..eaf69da --- /dev/null +++ b/app/src/main/java/com/police/policedatasystem/mine/activity/ApplyDetailActivity.java @@ -0,0 +1,70 @@ +package com.police.policedatasystem.mine.activity; + +import android.os.Bundle; +import android.util.Base64; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +import androidx.appcompat.app.AppCompatActivity; + +import com.github.barteksc.pdfviewer.PDFView; +import com.police.policedatasystem.databinding.ActivityApplyDetailBinding; +import com.police.policedatasystem.mine.model.ApplyDetail; +import com.police.policedatasystem.mine.viewmodel.DetailViewModel; +import com.police.policedatasystem.util.UiUtils; + +public class ApplyDetailActivity extends AppCompatActivity { + + private ActivityApplyDetailBinding binding; + private DetailViewModel viewModel; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivityApplyDetailBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + binding.ivBack.setOnClickListener(view -> finish()); + binding.rlLoading.setOnClickListener(view -> { + + }); + viewModel = new DetailViewModel(this); + if (getIntent().getStringExtra("applyDetail") == null) { + viewModel.jumpApplyDetail(getIntent().getStringExtra("jqbh")); + } else { + viewModel.getApplyDetail(getIntent().getStringExtra("applyDetail")); + } + + } + + public void applyDetail(ApplyDetail detail) { + binding.tvDetailFnbh.setText(detail.getBh()); + binding.tvDetailSqsy.setText(detail.getSy()); + binding.tvDetailSqsj.setText(detail.getCreateTimeStr()); + binding.tvDetailJwlx.setText(detail.getLy()); + binding.tvDetailShzt.setText(detail.getSpzt()); +// binding.tvDetailFnxq.setText(detail.getFj()); + // 加载PDF文件 +// File file = new File("/path/to/your/pdf/file.pdf"); // 替换为你的PDF文件路径 + if (detail.getFj() != null && !detail.getFj().isEmpty()) { + for (String item : detail.getFj()) { + PDFView pdfView = new PDFView(this, null); + pdfView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, UiUtils.dp2Px(500))); + pdfView.fromBytes(Base64.decode(item, Base64.DEFAULT)) + .enableSwipe(true) // 允许滑动翻页 + .enableDoubletap(true) // 允许双击缩放 + .enableAnnotationRendering(true) // 允许渲染注释 + .load(); + binding.llGroup.addView(pdfView); + } + } + } + + 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/mine/adapter/MineApplyListAdapter.java b/app/src/main/java/com/police/policedatasystem/mine/adapter/MineApplyListAdapter.java new file mode 100644 index 0000000..da04f76 --- /dev/null +++ b/app/src/main/java/com/police/policedatasystem/mine/adapter/MineApplyListAdapter.java @@ -0,0 +1,28 @@ +package com.police.policedatasystem.mine.adapter; + +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.viewholder.BaseViewHolder; +import com.police.policedatasystem.R; +import com.police.policedatasystem.data.model.KeyPerson; +import com.police.policedatasystem.main.App; +import com.police.policedatasystem.mine.model.Apply; +import com.police.policedatasystem.util.UiUtils; + +public class MineApplyListAdapter extends BaseQuickAdapter { + + public MineApplyListAdapter() { + super(R.layout.item_mine_apply); // 指定列表项的布局 + } + + @Override + protected void convert(BaseViewHolder helper, Apply item) { + helper.setText(R.id.tv_fnbh, item.getBh()); + helper.setText(R.id.tv_sqsy, item.getSy()); + helper.setText(R.id.tv_sqsj, item.getCreateTimeStr()); + helper.setText(R.id.tv_xxly, item.getLy()); + helper.setText(R.id.tv_blzt, item.getSpzt()); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/police/policedatasystem/mine/fragment/MineFragment.java b/app/src/main/java/com/police/policedatasystem/mine/fragment/MineFragment.java index 780f4df..fecf969 100644 --- a/app/src/main/java/com/police/policedatasystem/mine/fragment/MineFragment.java +++ b/app/src/main/java/com/police/policedatasystem/mine/fragment/MineFragment.java @@ -1,6 +1,7 @@ package com.police.policedatasystem.mine.fragment; import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; @@ -12,14 +13,36 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +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.model.ApplyType; +import com.police.policedatasystem.databinding.DialogSelectorBinding; import com.police.policedatasystem.databinding.FragmentMineBinding; +import com.police.policedatasystem.indexActivity; +import com.police.policedatasystem.mine.activity.ApplyDetailActivity; +import com.police.policedatasystem.mine.adapter.MineApplyListAdapter; +import com.police.policedatasystem.mine.model.Apply; +import com.police.policedatasystem.mine.viewmodel.MineViewModel; + +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; public class MineFragment extends Fragment { private FragmentMineBinding binding; private PopupWindow popupWindow; + private MineApplyListAdapter adapter; + private List applyList; + private List applyTypes; + private List applyXXLY; + private List applyBLZT; + private final MineViewModel viewModel = new MineViewModel(this, (indexActivity) getActivity()); @Nullable @Override @@ -35,8 +58,75 @@ public class MineFragment extends Fragment { popupWindow.setWidth(binding.mineTypeGroup.getWidth()); popupWindow.showAsDropDown(binding.mineTypeGroup); }); +// binding.refreshLayout.setRefreshHeader(new ClassicsHeader(getContext())); +// binding.refreshLayout.setRefreshFooter(new ClassicsFooter(getContext())); + binding.mineRvGroup.setLayoutManager(new LinearLayoutManager(getContext())); + adapter = new MineApplyListAdapter(); + binding.mineRvGroup.setAdapter(adapter); + adapter.setOnItemClickListener((adapter1, view, position) -> applyDetail(applyList.get(position).getBh())); + binding.mineTvInput.setOnClickListener(view -> { + switch (searchType) { + case "sy": + showDialog((TextView) view, "选择申请事由", applyTypes.stream() + .map(ApplyType::getDictLabel) + .collect(Collectors.toList())); + break; + case "ly": + showDialog((TextView) view, "选择信息来源", applyXXLY.stream() + .map(ApplyType::getDictLabel) + .collect(Collectors.toList())); + break; + case "spzt": + showDialog((TextView) view, "选择办理状态", applyBLZT.stream() + .map(ApplyType::getDictLabel) + .collect(Collectors.toList())); + break; + default: + } + + }); + binding.tvMineSearchBtn.setOnClickListener(view -> searchData()); + searchData(); } + private void searchData() { + String value = ""; + switch (searchType) { + case "sy": + for (ApplyType item : applyTypes) { + String str = binding.mineTvInput.getText().toString(); + if (item.getDictLabel().equals(str)) { + value = item.getDictValue(); + break; + } + } + break; + case "ly": + for (ApplyType item : applyXXLY) { + if (item.getDictLabel().equals(binding.mineTvInput.getText().toString())) { + value = item.getDictValue(); + break; + } + } + break; + case "spzt": + for (ApplyType item : applyBLZT) { + if (item.getDictLabel().equals(binding.mineTvInput.getText().toString())) { + value = item.getDictValue(); + break; + } + } + break; + default: + value = binding.mineEtInput.getText().toString(); + } + HashMap map = new HashMap<>(); + map.put(searchType, value); + viewModel.getApplyList(map); + } + + private String searchType = "fnbh"; + private void setPopupWindow() { // 初始化 PopupWindow popupWindow = new PopupWindow(getContext()); @@ -59,27 +149,56 @@ public class MineFragment extends Fragment { TextView textView5 = contentView.findViewById(R.id.textView5); // 假设这是菜单项2的ID textView1.setOnClickListener(v -> { // 处理菜单项 1 的点击事件 - binding.tvMineSearchTitle.setText("赋能编码"); + binding.tvMineSearchTitle.setText("赋能编号"); + searchType = "fnbh"; + binding.mineTvInput.setVisibility(View.INVISIBLE); + binding.mineEtInput.setText(""); + binding.mineEtInput.setVisibility(View.VISIBLE); popupWindow.dismiss(); // 关闭 PopupWindow }); textView2.setOnClickListener(v -> { // 处理菜单项 2 的点击事件 binding.tvMineSearchTitle.setText("申请事由"); + searchType = "sy"; + binding.mineTvInput.setVisibility(View.VISIBLE); + binding.mineTvInput.setText(""); + binding.mineEtInput.setVisibility(View.INVISIBLE); + if (applyTypes == null) { + viewModel.getApplyType(); + } popupWindow.dismiss(); // 关闭 PopupWindow }); textView3.setOnClickListener(v -> { // 处理菜单项 2 的点击事件 binding.tvMineSearchTitle.setText("申请时间"); + searchType = "sqsj"; + binding.mineTvInput.setVisibility(View.INVISIBLE); + binding.mineEtInput.setText(""); + binding.mineEtInput.setVisibility(View.VISIBLE); popupWindow.dismiss(); // 关闭 PopupWindow }); textView4.setOnClickListener(v -> { // 处理菜单项 2 的点击事件 binding.tvMineSearchTitle.setText("信息来源"); + searchType = "ly"; + binding.mineTvInput.setVisibility(View.VISIBLE); + binding.mineTvInput.setText(""); + binding.mineEtInput.setVisibility(View.INVISIBLE); + if (applyXXLY == null) { + viewModel.getMineXXLY(); + } popupWindow.dismiss(); // 关闭 PopupWindow }); textView5.setOnClickListener(v -> { // 处理菜单项 2 的点击事件 binding.tvMineSearchTitle.setText("办理状态"); + searchType = "spzt"; + binding.mineTvInput.setVisibility(View.VISIBLE); + binding.mineTvInput.setText(""); + binding.mineEtInput.setVisibility(View.INVISIBLE); + if (applyBLZT == null) { + viewModel.getMineBLZT(); + } popupWindow.dismiss(); // 关闭 PopupWindow }); // 将自定义布局设置为 PopupWindow 的内容视图 @@ -88,4 +207,63 @@ public class MineFragment extends Fragment { popupWindow.setFocusable(true); popupWindow.setOutsideTouchable(true); // 设置点击 PopupWindow 外部区域使其消失 } + + public void applyType(List list) { + applyTypes = list; + } + + public void applyBLZT(List list) { + applyBLZT = list; + } + + public void applyXXLY(List list) { + applyXXLY = list; + } + + 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 applyList(List list) { + applyList = list; + adapter.setList(list); + } + + public void applyDetail(String applyDetail) { + Intent intent = new Intent(this.getActivity(), ApplyDetailActivity.class); + intent.putExtra("applyDetail", applyDetail); + startActivity(intent); + } + + public void loadingShow() { + if (getActivity() != null) { + getActivity().runOnUiThread(() -> binding.mineRlLoading.setVisibility(View.VISIBLE)); + } + } + + public void loadingNone() { + if (getActivity() != null) { + getActivity().runOnUiThread(() -> binding.mineRlLoading.setVisibility(View.GONE)); + } + } } diff --git a/app/src/main/java/com/police/policedatasystem/mine/model/Apply.java b/app/src/main/java/com/police/policedatasystem/mine/model/Apply.java new file mode 100644 index 0000000..dfe2552 --- /dev/null +++ b/app/src/main/java/com/police/policedatasystem/mine/model/Apply.java @@ -0,0 +1,61 @@ +package com.police.policedatasystem.mine.model; + +import java.io.Serializable; + +/** + * { + * "bh": "JL0100002016", + * "createTimeStr": "2024-03-13 09:05:39.0", + * "ly": "PC", + * "params": {}, + * "spzt": "审批驳回", + * "sy": "处置警情" + * } + */ +public class Apply implements Serializable { + private String bh;//赋能编号 + private String sy;//申请事由 + private String createTimeStr;//申请时间 + private String ly;//信息来源 + private String spzt;//办理状态 + + public String getBh() { + return bh; + } + + public void setBh(String bh) { + this.bh = bh; + } + + public String getSy() { + return sy; + } + + public void setSy(String sy) { + this.sy = sy; + } + + public String getCreateTimeStr() { + return createTimeStr; + } + + public void setCreateTimeStr(String createTimeStr) { + this.createTimeStr = createTimeStr; + } + + public String getLy() { + return ly; + } + + public void setLy(String ly) { + this.ly = ly; + } + + public String getSpzt() { + return spzt; + } + + public void setSpzt(String spzt) { + this.spzt = spzt; + } +} diff --git a/app/src/main/java/com/police/policedatasystem/mine/model/ApplyDetail.java b/app/src/main/java/com/police/policedatasystem/mine/model/ApplyDetail.java new file mode 100644 index 0000000..2dfe2fd --- /dev/null +++ b/app/src/main/java/com/police/policedatasystem/mine/model/ApplyDetail.java @@ -0,0 +1,71 @@ +package com.police.policedatasystem.mine.model; + +import java.io.Serializable; +import java.util.List; + +/** + * { + * "bh": "JL0100002016", + * "createTimeStr": "2024-03-13 09:05:39.0", + * "ly": "PC", + * "params": {}, + * "spzt": "审批驳回", + * "sy": "处置警情" + * } + */ +public class ApplyDetail implements Serializable { + private String bh;//赋能编号 + private String sy;//申请事由 + private String createTimeStr;//申请时间 + private String ly;//信息来源 + private String spzt;//办理状态 + private List fj;//附件 + + public List getFj() { + return fj; + } + + public void setFj(List fj) { + this.fj = fj; + } + + public String getBh() { + return bh; + } + + public void setBh(String bh) { + this.bh = bh; + } + + public String getSy() { + return sy; + } + + public void setSy(String sy) { + this.sy = sy; + } + + public String getCreateTimeStr() { + return createTimeStr; + } + + public void setCreateTimeStr(String createTimeStr) { + this.createTimeStr = createTimeStr; + } + + public String getLy() { + return ly; + } + + public void setLy(String ly) { + this.ly = ly; + } + + public String getSpzt() { + return spzt; + } + + public void setSpzt(String spzt) { + this.spzt = spzt; + } +} diff --git a/app/src/main/java/com/police/policedatasystem/mine/viewmodel/DetailViewModel.java b/app/src/main/java/com/police/policedatasystem/mine/viewmodel/DetailViewModel.java new file mode 100644 index 0000000..4fbb33c --- /dev/null +++ b/app/src/main/java/com/police/policedatasystem/mine/viewmodel/DetailViewModel.java @@ -0,0 +1,53 @@ +package com.police.policedatasystem.mine.viewmodel; + +import androidx.annotation.NonNull; + +import com.police.policedatasystem.http.CustomCallBack; +import com.police.policedatasystem.http.RequestClient; +import com.police.policedatasystem.mine.activity.ApplyDetailActivity; +import com.police.policedatasystem.mine.model.ApplyDetail; +import com.police.policedatasystem.util.UiUtils; + +import okhttp3.Call; + +public class DetailViewModel { + public ApplyDetailActivity activity; + public RequestClient requestClient = RequestClient.instance(); + + public DetailViewModel(ApplyDetailActivity activity) { + this.activity = activity; + } + + public void getApplyDetail(String fnbh) { + activity.loadingShow(); + requestClient.getApplyDetail(fnbh, new CustomCallBack() { + @Override + public void onError(@NonNull Call call, @NonNull Exception e) { + UiUtils.toast(e.getMessage()); + activity.loadingNone(); + } + + @Override + public void onSuccess(ApplyDetail value) { + activity.applyDetail(value); + activity.loadingNone(); + } + }); + } + public void jumpApplyDetail(String fnbh) { + activity.loadingShow(); + requestClient.jumpApplyDetail(fnbh, new CustomCallBack() { + @Override + public void onError(@NonNull Call call, @NonNull Exception e) { + UiUtils.toast(e.getMessage()); + activity.loadingNone(); + } + + @Override + public void onSuccess(ApplyDetail value) { + activity.applyDetail(value); + activity.loadingNone(); + } + }); + } +} diff --git a/app/src/main/java/com/police/policedatasystem/mine/viewmodel/MineViewModel.java b/app/src/main/java/com/police/policedatasystem/mine/viewmodel/MineViewModel.java new file mode 100644 index 0000000..10fa936 --- /dev/null +++ b/app/src/main/java/com/police/policedatasystem/mine/viewmodel/MineViewModel.java @@ -0,0 +1,94 @@ +package com.police.policedatasystem.mine.viewmodel; + +import androidx.annotation.NonNull; + +import com.police.policedatasystem.apply.model.ApplyType; +import com.police.policedatasystem.http.CustomCallBack; +import com.police.policedatasystem.http.RequestClient; +import com.police.policedatasystem.indexActivity; +import com.police.policedatasystem.mine.fragment.MineFragment; +import com.police.policedatasystem.mine.model.Apply; +import com.police.policedatasystem.util.UiUtils; + +import java.util.HashMap; +import java.util.List; + +import okhttp3.Call; + +public class MineViewModel { + private final MineFragment fragment; + public indexActivity activity; + + public MineViewModel(MineFragment fragment, indexActivity activity) { + this.fragment = fragment; + this.activity = activity; + } + + public void getApplyList(HashMap params) { + fragment.loadingShow(); + RequestClient.instance().getApplyList(params, 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.applyList(value); + fragment.loadingNone(); + } + }); + } + + public void getApplyType() { + fragment.loadingShow(); + RequestClient.instance().getApplyType(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.applyType(value); + fragment.loadingNone(); + } + }); + } + + public void getMineBLZT() { + fragment.loadingShow(); + RequestClient.instance().getMineBLZT(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.applyBLZT(value); + fragment.loadingNone(); + } + }); + } + + public void getMineXXLY() { + fragment.loadingShow(); + RequestClient.instance().getMineXXLY(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(); + } + }); + } +} diff --git a/app/src/main/java/com/police/policedatasystem/util/Constants.java b/app/src/main/java/com/police/policedatasystem/util/Constants.java index 7815740..69dae0e 100644 --- a/app/src/main/java/com/police/policedatasystem/util/Constants.java +++ b/app/src/main/java/com/police/policedatasystem/util/Constants.java @@ -45,6 +45,10 @@ public final class Constants { * 赋能详情查询 */ public static final String MINE_DETAIL_ID = "220000000000-3-0100-8c3e36bb5bdb4ee8b55b4ad0c4a83d13"; + /** + * 自助查询 + */ + public static final String SELF_QUERY_ID = "220000000000-3-0100-dec70ae1354e4281b6eeced50dc2a7be"; /** * 组织机构id */ @@ -62,12 +66,24 @@ public final class Constants { /** * 当前用户身份证号 */ - public static String SFZH = "100307"; + public static String SFZH = "220183197210264653"; + + public static void setUserId(String str) { + USER_ID = str; + } + + public static void setSFZH(String str) { +// SFZH = str; + } + + public static void setORG_ID(String str) { +// USER_ORG_ID = str; + } /** * 当前用户警员组织代码 */ - public static String USER_ORG_ID = "22018421000";//22018421000//220106290000 + public static String USER_ORG_ID = "220183210000";//22018421000//220106290000 /** * 寻址后得到的数据-接口列表 */ diff --git a/app/src/main/java/com/police/policedatasystem/util/UiUtils.java b/app/src/main/java/com/police/policedatasystem/util/UiUtils.java index beaa034..25618de 100644 --- a/app/src/main/java/com/police/policedatasystem/util/UiUtils.java +++ b/app/src/main/java/com/police/policedatasystem/util/UiUtils.java @@ -23,7 +23,7 @@ public class UiUtils { } public static void toast(String str) { - App.getApp().getHandler().post(() -> Toast.makeText(App.getApp(), str, Toast.LENGTH_LONG).show()); + App.getHandler().post(() -> Toast.makeText(App.getApp(), str, Toast.LENGTH_LONG).show()); } public static boolean isEmpty(String str) { diff --git a/app/src/main/res/drawable/all_15_fff_bg.xml b/app/src/main/res/drawable/all_15_fff_bg.xml new file mode 100644 index 0000000..f1400b6 --- /dev/null +++ b/app/src/main/res/drawable/all_15_fff_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/all_7_4b8e01_bg.xml b/app/src/main/res/drawable/all_7_4b8e01_bg.xml new file mode 100644 index 0000000..3a05311 --- /dev/null +++ b/app/src/main/res/drawable/all_7_4b8e01_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/all_7_999_border_bg.xml b/app/src/main/res/drawable/all_7_999_border_bg.xml new file mode 100644 index 0000000..b45947a --- /dev/null +++ b/app/src/main/res/drawable/all_7_999_border_bg.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/all_7_999_bottom_border_bg.xml b/app/src/main/res/drawable/all_7_999_bottom_border_bg.xml new file mode 100644 index 0000000..bfae86a --- /dev/null +++ b/app/src/main/res/drawable/all_7_999_bottom_border_bg.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/all_7_de7900_bg.xml b/app/src/main/res/drawable/all_7_de7900_bg.xml new file mode 100644 index 0000000..f5329ff --- /dev/null +++ b/app/src/main/res/drawable/all_7_de7900_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/all_7_line_ccc_bg.xml b/app/src/main/res/drawable/all_7_line_ccc_bg.xml index f7fd2cb..8c730b3 100644 --- a/app/src/main/res/drawable/all_7_line_ccc_bg.xml +++ b/app/src/main/res/drawable/all_7_line_ccc_bg.xml @@ -1,6 +1,9 @@ - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/all_7_main_border_bg.xml b/app/src/main/res/drawable/all_7_main_border_bg.xml new file mode 100644 index 0000000..3457491 --- /dev/null +++ b/app/src/main/res/drawable/all_7_main_border_bg.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_apply_detail.xml b/app/src/main/res/layout/activity_apply_detail.xml new file mode 100644 index 0000000..3d9e8b8 --- /dev/null +++ b/app/src/main/res/layout/activity_apply_detail.xml @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_police_emergency_detail.xml b/app/src/main/res/layout/activity_police_emergency_detail.xml index 7ff43c0..0cddfba 100644 --- a/app/src/main/res/layout/activity_police_emergency_detail.xml +++ b/app/src/main/res/layout/activity_police_emergency_detail.xml @@ -36,531 +36,32 @@ android:layout_marginTop="50dp" android:scrollbars="none"> - + android:layout_height="wrap_content" + android:orientation="vertical"> - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_navigation_view.xml b/app/src/main/res/layout/bottom_navigation_view.xml index f39cef6..2d441a8 100644 --- a/app/src/main/res/layout/bottom_navigation_view.xml +++ b/app/src/main/res/layout/bottom_navigation_view.xml @@ -77,27 +77,27 @@ android:textColor="@color/normal_color" /> - + + + + + + + - + + + + + + - - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_dept_selector.xml b/app/src/main/res/layout/dialog_dept_selector.xml new file mode 100644 index 0000000..ff86b68 --- /dev/null +++ b/app/src/main/res/layout/dialog_dept_selector.xml @@ -0,0 +1,40 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_selector.xml b/app/src/main/res/layout/dialog_selector.xml index db13c75..b1e9c58 100644 --- a/app/src/main/res/layout/dialog_selector.xml +++ b/app/src/main/res/layout/dialog_selector.xml @@ -2,10 +2,11 @@ - diff --git a/app/src/main/res/layout/dropdown_layout5.xml b/app/src/main/res/layout/dropdown_layout5.xml index 7148c5c..aa500cf 100644 --- a/app/src/main/res/layout/dropdown_layout5.xml +++ b/app/src/main/res/layout/dropdown_layout5.xml @@ -14,7 +14,7 @@ android:clickable="true" android:focusable="true" android:gravity="center_vertical" - android:text="赋能编码" + android:text="赋能编号" android:textSize="16sp" /> + + @@ -128,6 +129,7 @@ android:layout_marginLeft="45dp" android:background="@drawable/all_7_main_bg" android:paddingHorizontal="5dp" + android:visibility="invisible" android:textColor="@color/white" android:textSize="10sp" tools:text="99+" /> @@ -171,6 +173,7 @@ android:layout_marginLeft="45dp" android:background="@drawable/all_7_main_bg" android:paddingHorizontal="5dp" + android:visibility="invisible" android:textColor="@color/white" android:textSize="10sp" tools:text="99+" /> @@ -287,6 +290,7 @@ android:background="@drawable/all_7_main_bg" android:paddingHorizontal="5dp" android:textColor="@color/white" + android:visibility="invisible" android:textSize="10sp" tools:text="99+" /> @@ -325,6 +329,7 @@ android:layout_toRightOf="@id/tv_area_key_person" android:background="@drawable/all_7_main_bg" android:paddingHorizontal="5dp" + android:visibility="invisible" android:textColor="@color/white" android:textSize="10sp" tools:text="99+" /> diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml index 2fb3edf..76f3e97 100644 --- a/app/src/main/res/layout/fragment_mine.xml +++ b/app/src/main/res/layout/fragment_mine.xml @@ -98,6 +98,18 @@ android:textColor="#333" android:textSize="13sp" /> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_police_emergency_detail_base_info.xml b/app/src/main/res/layout/include_police_emergency_detail_base_info.xml new file mode 100644 index 0000000..273de01 --- /dev/null +++ b/app/src/main/res/layout/include_police_emergency_detail_base_info.xml @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_police_emergency_detail_cjya_info.xml b/app/src/main/res/layout/include_police_emergency_detail_cjya_info.xml new file mode 100644 index 0000000..3d59f1e --- /dev/null +++ b/app/src/main/res/layout/include_police_emergency_detail_cjya_info.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_police_emergency_detail_person_info.xml b/app/src/main/res/layout/include_police_emergency_detail_person_info.xml new file mode 100644 index 0000000..28e6399 --- /dev/null +++ b/app/src/main/res/layout/include_police_emergency_detail_person_info.xml @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/include_police_emergency_detail_query_info.xml b/app/src/main/res/layout/include_police_emergency_detail_query_info.xml new file mode 100644 index 0000000..ef1a27b --- /dev/null +++ b/app/src/main/res/layout/include_police_emergency_detail_query_info.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_apply_fragment_1.xml b/app/src/main/res/layout/item_apply_fragment_1.xml index c30c755..718ea9b 100644 --- a/app/src/main/res/layout/item_apply_fragment_1.xml +++ b/app/src/main/res/layout/item_apply_fragment_1.xml @@ -13,13 +13,26 @@ android:layout_width="wrap_content" android:layout_height="40dp" android:gravity="center" - android:text="警员编号:" + android:text="警情编号:" android:textColor="@color/normal_color" android:textSize="16sp" /> + + android:paddingHorizontal="10dp" + android:paddingVertical="3dp"> diff --git a/app/src/main/res/layout/item_mine_apply.xml b/app/src/main/res/layout/item_mine_apply.xml new file mode 100644 index 0000000..693fd53 --- /dev/null +++ b/app/src/main/res/layout/item_mine_apply.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_select_dept.xml b/app/src/main/res/layout/item_select_dept.xml new file mode 100644 index 0000000..80e1c6b --- /dev/null +++ b/app/src/main/res/layout/item_select_dept.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/icon_apply_detail_query.png b/app/src/main/res/mipmap-xxhdpi/icon_apply_detail_query.png new file mode 100644 index 0000000..5fcffc7 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_apply_detail_query.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_apply_success.png b/app/src/main/res/mipmap-xxhdpi/icon_apply_success.png new file mode 100644 index 0000000..8639671 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_apply_success.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_cjya.png b/app/src/main/res/mipmap-xxhdpi/icon_cjya.png new file mode 100644 index 0000000..064029d Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_cjya.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_czya.png b/app/src/main/res/mipmap-xxhdpi/icon_czya.png new file mode 100644 index 0000000..7d551f6 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_czya.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_down_sanjiao.png b/app/src/main/res/mipmap-xxhdpi/icon_down_sanjiao.png new file mode 100644 index 0000000..9ba30d7 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_down_sanjiao.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_right_sanjiao.png b/app/src/main/res/mipmap-xxhdpi/icon_right_sanjiao.png new file mode 100644 index 0000000..678deb7 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_right_sanjiao.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_selected.png b/app/src/main/res/mipmap-xxhdpi/icon_selected.png new file mode 100644 index 0000000..192e6a9 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_selected.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_unselected.png b/app/src/main/res/mipmap-xxhdpi/icon_unselected.png new file mode 100644 index 0000000..185a316 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_unselected.png differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 5160bef..3b26a68 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -4,12 +4,17 @@ #FF6200EE #FF3700B3 #FF03DAC5 + #052eba #FF018786 #FF000000 #FFFFFFFF #666 + #333 + #999 + #ccc #101010 #052EBA + #33052EBA #00000000 #55cccccc \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 9b31648..125210e 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -16,4 +16,8 @@ + + \ No newline at end of file