3
0

2 کامیت‌ها a60c1b0e21 ... c2ae74147b

نویسنده SHA1 پیام تاریخ
  lichao c2ae74147b Merge remote-tracking branch 'origin/master' 5 ماه پیش
  lichao 8e59ce9923 任务详情,移交,反馈页面 5 ماه پیش
100فایلهای تغییر یافته به همراه7417 افزوده شده و 279 حذف شده
  1. 6 3
      app/build.gradle
  2. BIN
      app/libs/imagepicker-release.aar
  3. BIN
      app/libs/mpush-client-java-0.0.6.jar
  4. 51 2
      app/src/main/AndroidManifest.xml
  5. 13 0
      app/src/main/java/com/xwkj/jcjcgz/app/AppLifecyclesImpl.java
  6. 355 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/MPush.java
  7. 81 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/MPushFakeService.java
  8. 61 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/MPushLog.java
  9. 45 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/MPushMessage.java
  10. 105 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/MPushReceiver.java
  11. 242 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/MPushService.java
  12. 104 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/MyReceiver.java
  13. 109 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/NotificationDO.java
  14. 160 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/Notifications.java
  15. 53 0
      app/src/main/java/com/xwkj/jcjcgz/app/push/SPSessionStorage.java
  16. 41 0
      app/src/main/java/com/xwkj/jcjcgz/app/utils/GlideImageLoader.java
  17. 282 0
      app/src/main/java/com/xwkj/jcjcgz/app/utils/KeyboardUtil.java
  18. 116 0
      app/src/main/java/com/xwkj/jcjcgz/app/view/AreaPicker.java
  19. 72 0
      app/src/main/java/com/xwkj/jcjcgz/app/view/DictionaryPicker.java
  20. 90 0
      app/src/main/java/com/xwkj/jcjcgz/app/view/GsdwPicker.java
  21. 70 0
      app/src/main/java/com/xwkj/jcjcgz/app/view/MjPicker.java
  22. 71 0
      app/src/main/java/com/xwkj/jcjcgz/app/view/SmyjGsdwPicker.java
  23. 93 0
      app/src/main/java/com/xwkj/jcjcgz/app/view/XzqhPicker.java
  24. 41 0
      app/src/main/java/com/xwkj/jcjcgz/di/component/AddShrComponent.java
  25. 41 0
      app/src/main/java/com/xwkj/jcjcgz/di/component/DxzpDetailComponent.java
  26. 30 0
      app/src/main/java/com/xwkj/jcjcgz/di/module/AddShrModule.java
  27. 30 0
      app/src/main/java/com/xwkj/jcjcgz/di/module/DxzpDetailModule.java
  28. 29 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/contract/AddShrContract.java
  29. 34 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/contract/DxzpDetailContract.java
  30. 5 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/contract/FzQzFkContract.java
  31. 46 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/AddShrModel.java
  32. 46 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/DxzpDetailModel.java
  33. 1 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/api/Api.java
  34. 7 1
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/api/ReqToBus.java
  35. 58 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/Area.java
  36. 235 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/DictionaryEntity.java
  37. 70 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/GsdwEntity.java
  38. 70 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/MjEntity.java
  39. 40 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/NormalEntity.java
  40. 61 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/PickerResult.java
  41. 78 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/ShrInfo.java
  42. 261 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/TaskDxzpDetailEntity.java
  43. 11 1
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/TaskDxzpEntity.java
  44. 22 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/Wfjmfj.java
  45. 53 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/presenter/AddShrPresenter.java
  46. 128 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/presenter/DxzpDetailPresenter.java
  47. 81 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/presenter/FzQzFkPresenter.java
  48. 244 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/AddShrActivity.java
  49. 323 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/DxzpDetailActivity.java
  50. 617 37
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/FzQzFkActivity.java
  51. 13 1
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/LoginActivity.java
  52. 2 2
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/MainActivity.java
  53. 123 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/TestActivity.java
  54. 41 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/ShrAdapter.java
  55. 21 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/SjhAdapter.java
  56. 12 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/TaskDxzpAdapter.java
  57. 36 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/WdhlxAdapter.java
  58. 36 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/YjDwAdapter.java
  59. 27 3
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/fragment/TaskDxzpFragment.java
  60. 3 3
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/fragment/TaskTypeFragment.java
  61. 126 0
      app/src/main/java/com/xwkj/jcjcgz/mvp/ui/fragment/YjFragment.java
  62. BIN
      app/src/main/res/drawable-xxxhdpi/bj_big.png
  63. BIN
      app/src/main/res/drawable-xxxhdpi/btn_delete_gray.png
  64. BIN
      app/src/main/res/drawable-xxxhdpi/btn_phone_blue.png
  65. BIN
      app/src/main/res/drawable-xxxhdpi/icon_business.png
  66. BIN
      app/src/main/res/drawable-xxxhdpi/icon_camera.png
  67. BIN
      app/src/main/res/drawable-xxxhdpi/icon_closed.png
  68. BIN
      app/src/main/res/drawable-xxxhdpi/icon_delete.png
  69. BIN
      app/src/main/res/drawable-xxxhdpi/icon_ing_blue.png
  70. BIN
      app/src/main/res/drawable-xxxhdpi/icon_ing_gray.png
  71. BIN
      app/src/main/res/drawable-xxxhdpi/icon_plus_blue.png
  72. BIN
      app/src/main/res/drawable-xxxhdpi/icon_transfer.png
  73. BIN
      app/src/main/res/drawable-xxxhdpi/icon_victimize.png
  74. BIN
      app/src/main/res/drawable-xxxhdpi/img_keyboard_normal.9.png
  75. BIN
      app/src/main/res/drawable-xxxhdpi/img_keyboard_pressed.9.png
  76. 5 0
      app/src/main/res/drawable/bg_keyboardview.xml
  77. 5 0
      app/src/main/res/drawable/bg_shape_blue_corner2.xml
  78. 5 0
      app/src/main/res/drawable/bg_shape_blue_corner8.xml
  79. 5 0
      app/src/main/res/drawable/bg_shape_f0f0f0_top_corner8.xml
  80. 5 0
      app/src/main/res/drawable/bg_shape_f5f5f5_corner6.xml
  81. 5 0
      app/src/main/res/drawable/bg_shape_f8f8f8_corner8.xml
  82. 6 0
      app/src/main/res/drawable/bg_shape_stroke1_cccccc_corner4.xml
  83. 5 0
      app/src/main/res/drawable/bg_shape_white_top_corner8.xml
  84. 14 0
      app/src/main/res/drawable/dialog_white.xml
  85. 4 0
      app/src/main/res/drawable/selector_radio.xml
  86. 12 0
      app/src/main/res/drawable/switch_common_track_selected.xml
  87. 12 0
      app/src/main/res/drawable/switch_common_track_unselected.xml
  88. 12 0
      app/src/main/res/drawable/switch_thumb.xml
  89. 5 0
      app/src/main/res/drawable/switch_track_style.xml
  90. 400 0
      app/src/main/res/layout/activity_add_shr.xml
  91. 479 0
      app/src/main/res/layout/activity_dxzp_detail.xml
  92. 805 223
      app/src/main/res/layout/activity_fz_qz_fk.xml
  93. 11 3
      app/src/main/res/layout/activity_login.xml
  94. 53 0
      app/src/main/res/layout/activity_test.xml
  95. 3 0
      app/src/main/res/layout/fragment_rwzx.xml
  96. 14 0
      app/src/main/res/layout/include_keyboardview.xml
  97. 1 0
      app/src/main/res/layout/item_dxzp.xml
  98. 27 0
      app/src/main/res/layout/item_rb.xml
  99. 177 0
      app/src/main/res/layout/item_shr.xml
  100. 25 0
      app/src/main/res/layout/item_sjh.xml

+ 6 - 3
app/build.gradle

@@ -68,14 +68,14 @@ android {
     productFlavors {
         //应用商店版本
         appstore {
-            resValue "string", "app_name", "照片合成"
+            resValue "string", "app_name", "基层基础工作"
             signingConfig signingConfigs.release
             manifestPlaceholders = [UMENG_CHANNEL: "appstore", CATEGORY: "android.intent.category.DEFAULT", APP_ICON: "@mipmap/ic_launcher"]
         }
         //非应用商店版本
         unappstore {
 
-            resValue "string", "app_name", "照片合成"
+            resValue "string", "app_name", "基层基础工作"
             signingConfig signingConfigs.release
             manifestPlaceholders = [UMENG_CHANNEL: "unappstore", CATEGORY: "android.intent.category.LAUNCHER", APP_ICON: "@mipmap/ic_launcher"]
         }
@@ -118,7 +118,7 @@ repositories {
     }
 }
 dependencies {
-    implementation fileTree(include: ['*.jar'], dir: 'libs')
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
     /*   implementation 'me.jessyan:arms:2.5.2'
             implementation 'me.jessyan:arms-imageloader-glide:2.5.2'*/
     //view
@@ -173,7 +173,10 @@ dependencies {
 
 
     implementation 'com.wuyr:secondfloorbehavior:1.0.4'
+    implementation 'com.google.android.flexbox:flexbox:3.0.0'
+    implementation 'com.contrarywind:Android-PickerView:4.1.8'
 
+    implementation(name: 'imagepicker-release', ext: 'aar')
 
 
 }

BIN
app/libs/imagepicker-release.aar


BIN
app/libs/mpush-client-java-0.0.6.jar


+ 51 - 2
app/src/main/AndroidManifest.xml

@@ -9,7 +9,17 @@
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.CALL_PHONE" />
 
+
+    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+
+    <uses-permission android:name="android.permission.CAMERA" />
     <application
         android:name="com.jess.arms.base.BaseApplication"
         android:allowBackup="true"
@@ -18,7 +28,10 @@
         android:networkSecurityConfig="@xml/network_security_config"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
-        <activity android:name=".mvp.ui.activity.FzQzFkActivity" />
+        <activity android:name=".mvp.ui.activity.AddShrActivity" />
+        <activity android:name=".mvp.ui.activity.FzQzFkActivity"
+            android:windowSoftInputMode="stateVisible|adjustResize"/>
+        <activity android:name=".mvp.ui.activity.DxzpDetailActivity" />
         <activity android:name=".mvp.ui.activity.Test1Activity" />
         <activity android:name=".mvp.ui.activity.LoginActivity" />
         <activity android:name=".mvp.ui.activity.AppDetailActivity" />
@@ -31,7 +44,6 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-
         <!--
          只要依赖 AutoSize 就必须填写设计图尺寸, 否则报错, 不想使用 AutoSize 就不要依赖 AutoSize
         只要填写完设计图的尺寸, AutoSize 就会自动启动, 以下 dp 尺寸是根据公式 px / (dpi / 160) 求出, 运算时使用测试机的 dpi 即可
@@ -46,6 +58,43 @@
         <meta-data
             android:name="com.xwkj.jcjcgz.app.GlobalConfiguration"
             android:value="ConfigModule" />
+
+        <!--
+        推送
+        -->
+        <receiver
+            android:name=".app.push.MPushReceiver"
+            android:enabled="true"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
+                <action android:name="com.mpush.HEALTH_CHECK" />
+                <action android:name="com.mpush.NOTIFY_CANCEL" />
+            </intent-filter>
+        </receiver>
+
+        <service
+            android:name=".app.push.MPushService"
+            android:enabled="true"
+            android:exported="true" />
+        <service android:name=".app.push.MPushFakeService" />
+
+        <receiver
+            android:name=".app.push.MyReceiver"
+            android:enabled="true"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="com.mpush.MESSAGE_RECEIVED" />      <!--收到PUSH消息-->
+                <action android:name="com.mpush.KICK_USER" />             <!--收到踢人消息-->
+                <action android:name="com.mpush.CONNECTIVITY_CHANGE" />   <!--收到链接变化-->
+                <action android:name="com.mpush.HANDSHAKE_OK" />          <!--收到握手成功消息-->
+                <action android:name="com.mpush.BIND_USER" />             <!--收到绑定用户消息-->
+                <action android:name="com.mpush.UNBIND_USER" />           <!--收到解绑用户消息-->
+
+                <!--此值要改为自己的应用的applicationId  @see MPushService-->
+                <category android:name="com.xwkj.jcjcgz" />
+            </intent-filter>
+        </receiver>
     </application>
 
 </manifest>

+ 13 - 0
app/src/main/java/com/xwkj/jcjcgz/app/AppLifecyclesImpl.java

@@ -1,7 +1,13 @@
 package com.xwkj.jcjcgz.app;
 
+import android.app.Activity;
 import android.app.Application;
 import android.content.Context;
+import android.graphics.BitmapFactory;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.EditText;
 
 import androidx.annotation.NonNull;
 
@@ -9,12 +15,15 @@ import com.hjq.toast.ToastUtils;
 import com.jess.arms.base.delegate.AppLifecycles;
 import com.jess.arms.integration.cache.IntelligentCache;
 import com.jess.arms.utils.ArmsUtils;
+import com.mpush.client.ClientConfig;
 import com.squareup.leakcanary.LeakCanary;
 import com.squareup.leakcanary.RefWatcher;
 
 import butterknife.ButterKnife;
 
 import com.xwkj.jcjcgz.BuildConfig;
+import com.xwkj.jcjcgz.R;
+import com.xwkj.jcjcgz.app.push.Notifications;
 
 import timber.log.Timber;
 
@@ -63,6 +72,10 @@ public class AppLifecyclesImpl implements AppLifecycles {
         ArmsUtils.obtainAppComponentFromContext(application).extras()
                 .put(IntelligentCache.getKeyOfKeep(RefWatcher.class.getName())
                         , BuildConfig.USE_CANARY ? LeakCanary.install(application) : RefWatcher.DISABLED);
+
+        Notifications.I.init(application);
+        Notifications.I.setSmallIcon(R.mipmap.ic_launcher);
+        Notifications.I.setLargeIcon(BitmapFactory.decodeResource(application.getResources(), R.mipmap.ic_launcher));
     }
 
     @Override

+ 355 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/MPush.java

@@ -0,0 +1,355 @@
+/*
+ * (C) Copyright 2015-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ *     ohun@live.cn (夜色)
+ */
+
+
+package com.xwkj.jcjcgz.app.push;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Build;
+
+import androidx.annotation.Nullable;
+
+import com.mpush.api.Client;
+import com.mpush.api.ClientListener;
+import com.mpush.api.Constants;
+import com.mpush.api.http.HttpRequest;
+import com.mpush.api.http.HttpResponse;
+import com.mpush.api.push.PushContext;
+import com.mpush.client.ClientConfig;
+import com.mpush.util.DefaultLogger;
+
+import java.util.concurrent.Future;
+
+/**
+ * mpush入口工具类,提供mpush配置项设置
+ * 服务的启动,暂停,恢复,停止,用户绑定等方法
+ * <p/>
+ * Created by yxx on 2016/2/13.
+ *
+ * @author ohun@live.cn
+ */
+public final class MPush {
+    private static final String SP_FILE_NAME = "mpush.cfg";
+    private static final String SP_KEY_CV = "clientVersion";
+    private static final String SP_KEY_DI = "deviceId";
+    private static final String SP_KEY_PK = "publicKey";
+    private static final String SP_KEY_AS = "allotServer";
+    private static final String SP_KEY_AT = "account";
+    private static final String SP_KEY_TG = "tags";
+    private static final String SP_KEY_LG = "log";
+    public static MPush I = I();
+    private Context ctx;
+    private ClientConfig clientConfig;
+    private SharedPreferences sp;
+    /*package*/ Client client;
+
+    /**
+     * 获取MPUSH实例
+     *
+     * @return
+     */
+    static /*package*/ MPush I() {
+        if (I == null) {
+            synchronized (MPush.class) {
+                if (I == null) {
+                    I = new MPush();
+                }
+            }
+        }
+        return I;
+    }
+
+    /**
+     * 初始化MPush, 使用之前必须先初始化
+     *
+     * @param context
+     */
+    public void init(Context context) {
+        ctx = context.getApplicationContext();
+        sp = ctx.getSharedPreferences(SP_FILE_NAME, Context.MODE_PRIVATE);
+    }
+
+    /**
+     * 是否已经初始化
+     *
+     * @return
+     */
+    public boolean hasInit() {
+        return ctx != null;
+    }
+
+    /**
+     * 是否已经初始化
+     *
+     * @return
+     */
+    public MPush checkInit(Context context) {
+        if (ctx == null) {
+            init(context);
+        }
+        return this;
+    }
+
+    /**
+     * MPushService 是否已启动
+     *
+     * @return
+     */
+    public boolean hasStarted() {
+        return client != null;
+    }
+
+    /**
+     * MPushClient 是否正在运行
+     *
+     * @return
+     */
+    public boolean hasRunning() {
+        return client != null && client.isRunning();
+    }
+
+    /**
+     * 设置client 配置项
+     *
+     * @param clientConfig
+     */
+    public void setClientConfig(ClientConfig clientConfig) {
+        if (clientConfig.getPublicKey() == null
+                || clientConfig.getAllotServer() == null
+                || clientConfig.getClientVersion() == null) {
+            throw new IllegalArgumentException("publicKey, allocServer can not be null");
+        }
+
+        SharedPreferences.Editor editor = sp.edit();
+        editor.putString(SP_KEY_CV, clientConfig.getClientVersion())
+                .putString(SP_KEY_DI, clientConfig.getDeviceId())
+                .putString(SP_KEY_PK, clientConfig.getPublicKey())
+                .putBoolean(SP_KEY_LG, clientConfig.isLogEnabled())
+                .putString(SP_KEY_AS, clientConfig.getAllotServer());
+        if (clientConfig.getUserId() != null) {
+            editor.putString(SP_KEY_AT, clientConfig.getUserId());
+        }
+
+        if (clientConfig.getTags() != null) {
+            editor.putString(SP_KEY_TG, clientConfig.getTags());
+        }
+        editor.apply();
+        this.clientConfig = clientConfig;
+    }
+
+    /**
+     * 启动推送服务
+     */
+    public void startPush() {
+        if (hasInit()) {
+            ctx.startService(new Intent(ctx, MPushService.class));
+        }
+    }
+
+    /**
+     * 停止推送服务
+     */
+    public void stopPush() {
+        if (hasInit()) {
+            ctx.stopService(new Intent(ctx, MPushService.class));
+        }
+    }
+
+    /**
+     * 暂停推送服务
+     */
+    public void pausePush() {
+        if (hasStarted()) {
+            client.stop();
+        }
+    }
+
+    /**
+     * 恢复推送服务
+     */
+    public void resumePush() {
+        if (hasStarted()) {
+            client.start();
+        }
+    }
+
+    /**
+     * 设置网络状态推送服务
+     */
+    public void onNetStateChange(boolean isConnected) {
+        if (hasStarted()) {
+            client.onNetStateChange(isConnected);
+        }
+    }
+
+    /**
+     * 绑定账号
+     *
+     * @param userId 要绑定的账号
+     */
+    public void bindAccount(String userId, String tags) {
+        if (hasInit()) {
+            sp.edit().putString(SP_KEY_AT, userId).apply();
+            sp.edit().putString(SP_KEY_TG, tags).apply();
+            if (hasStarted() && client.isRunning()) {
+                client.bindUser(userId, tags);
+            } else if (clientConfig != null) {
+                clientConfig.setUserId(userId);
+            }
+        }
+    }
+
+    /**
+     * 解绑账号
+     */
+    public void unbindAccount() {
+        if (hasInit()) {
+            sp.edit().remove(SP_KEY_AT).apply();
+            if (hasStarted() && client.isRunning()) {
+                client.unbindUser();
+            } else {
+                clientConfig.setUserId(null);
+            }
+        }
+    }
+
+    /**
+     * 发送ACK
+     *
+     * @param messageId 要ACK的消息ID
+     * @return
+     */
+    public boolean ack(int messageId) {
+        if (hasStarted() && client.isRunning()) {
+            client.ack(messageId);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 发送Push到服务端
+     *
+     * @param context Push上下文
+     * @return
+     */
+    public Future<Boolean> sendPush(PushContext context) {
+        if (hasStarted() && client.isRunning()) {
+            return client.push(context);
+        }
+        return null;
+    }
+
+    /**
+     * 发送Push到服务端, 不需要ACK
+     *
+     * @param content 要推送的数据
+     * @return
+     */
+    public Future<Boolean> sendPush(byte[] content) {
+        if (hasStarted() && client.isRunning()) {
+            return client.push(PushContext.build(content));
+        }
+        return null;
+    }
+
+    /**
+     * 发送Http代理请求
+     *
+     * @param request 要代理的http请求
+     * @return
+     */
+    public Future<HttpResponse> sendHttpProxy(HttpRequest request) {
+        if (hasStarted() && client.isRunning()) {
+            return client.sendHttp(request);
+        }
+        return null;
+    }
+
+    public void enableLog(boolean enable) {
+        if (clientConfig != null) {
+            clientConfig.setLogEnabled(enable);
+        }
+    }
+
+    @Nullable
+    private ClientConfig getClientConfig() {
+        if (clientConfig == null) {
+            String clientVersion = sp.getString(SP_KEY_CV, null);
+            String deviceId = sp.getString(SP_KEY_DI, null);
+            String publicKey = sp.getString(SP_KEY_PK, null);
+            String allocServer = sp.getString(SP_KEY_AS, null);
+            boolean logEnabled = sp.getBoolean(SP_KEY_LG, false);
+            clientConfig = ClientConfig.build()
+                    .setPublicKey(publicKey)
+                    .setAllotServer(allocServer)
+                    .setDeviceId(deviceId)
+                    .setOsName(Constants.DEF_OS_NAME)
+                    .setOsVersion(Build.VERSION.RELEASE)
+                    .setClientVersion(clientVersion)
+                    .setLogger(new MPushLog())
+                    .setLogEnabled(logEnabled);
+        }
+        if (clientConfig.getClientVersion() == null
+                || clientConfig.getPublicKey() == null
+                || clientConfig.getAllotServer() == null) {
+            return null;
+        }
+
+        if (clientConfig.getSessionStorageDir() == null) {
+            clientConfig.setSessionStorage(new SPSessionStorage(sp));
+        }
+
+        if (clientConfig.getOsVersion() == null) {
+            clientConfig.setOsVersion(Build.VERSION.RELEASE);
+        }
+
+        if (clientConfig.getUserId() == null) {
+            clientConfig.setUserId(sp.getString(SP_KEY_AT, null));
+        }
+
+        if (clientConfig.getTags() == null) {
+            clientConfig.setTags(sp.getString(SP_KEY_TG, null));
+        }
+
+        if (clientConfig.getLogger() instanceof DefaultLogger) {
+            clientConfig.setLogger(new MPushLog());
+        }
+        return clientConfig;
+    }
+
+    synchronized /*package*/ void create(ClientListener listener) {
+        ClientConfig config = this.getClientConfig();
+        if (config != null) {
+            this.client = config.setClientListener(listener).create();
+        }
+    }
+
+    synchronized /*package*/ void destroy() {
+        if (client != null) {
+            client.destroy();
+        }
+        I.client = null;
+        I.clientConfig = null;
+        I.sp = null;
+        I.ctx = null;
+    }
+}

+ 81 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/MPushFakeService.java

@@ -0,0 +1,81 @@
+/*
+ * (C) Copyright 2015-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ *     ohun@live.cn (夜色)
+ */
+
+
+package com.xwkj.jcjcgz.app.push;
+
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.IBinder;
+
+import androidx.core.app.NotificationCompat;
+
+/**
+ * 双Service提高进程优先级,降低被系统杀死机率
+ * <p>
+ * Created by yxx on 2016/2/15.
+ *
+ * @author ohun@live.cn
+ */
+public final class MPushFakeService extends Service {
+    public static final int NOTIFICATION_ID = 1001;
+
+    public static void startForeground(Service service) {
+        service.startService(new Intent(service, MPushFakeService.class));
+
+        NotificationCompat.Builder notification;
+
+        NotificationManager nm = (NotificationManager) service.getSystemService(Context.NOTIFICATION_SERVICE);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+            NotificationChannel channel = new NotificationChannel(Notifications.CHANNEL_ID, "name", NotificationManager.IMPORTANCE_HIGH);
+            channel.enableLights(true);
+            channel.setShowBadge(true);
+            channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
+            nm.createNotificationChannel(channel);
+            notification = new NotificationCompat.Builder(service).setChannelId(Notifications.CHANNEL_ID);
+        } else {
+            notification = new NotificationCompat.Builder(service);
+        }
+
+        service.startForeground(NOTIFICATION_ID, notification.build());
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+//        startForeground(NOTIFICATION_ID, new Notification());
+        stopSelf();
+        return super.onStartCommand(intent, flags, startId);
+    }
+
+    @Override
+    public void onDestroy() {
+        stopForeground(true);
+        super.onDestroy();
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+}

+ 61 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/MPushLog.java

@@ -0,0 +1,61 @@
+/*
+ * (C) Copyright 2015-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ *     ohun@live.cn (夜色)
+ */
+
+
+package com.xwkj.jcjcgz.app.push;
+
+import android.util.Log;
+
+import com.mpush.api.Logger;
+
+/**
+ * Created by yxx on 2016/2/15.
+ *
+ * @author ohun@live.cn
+ */
+public final class MPushLog implements Logger {
+    public static final String sTag = "MPUSH";
+
+    private boolean enable = false;
+
+    @Override
+    public void enable(boolean enabled) {
+        this.enable = enabled;
+    }
+
+    @Override
+    public void d(String s, Object... args) {
+        if (enable) Log.d(sTag, String.format(s, args));
+    }
+
+    @Override
+    public void i(String s, Object... args) {
+        if (enable) Log.i(sTag, String.format(s, args));
+    }
+
+    @Override
+    public void w(String s, Object... args) {
+        if (enable) Log.w(sTag, String.format(s, args));
+    }
+
+    @Override
+    public void e(Throwable e, String s, Object... args) {
+        if (enable) Log.e(sTag, String.format(s, args), e);
+    }
+}

+ 45 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/MPushMessage.java

@@ -0,0 +1,45 @@
+/*
+ * (C) Copyright 2015-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ *     ohun@live.cn (夜色)
+ */
+
+
+package com.xwkj.jcjcgz.app.push;
+
+/**
+ * Created by yxx on 2016/2/15.
+ *
+ * @author ohun@live.cn
+ */
+public interface MPushMessage {
+
+    Integer getNid();
+
+    String getMsgId();
+
+    String getTicker();
+
+    String getTitle();
+
+    String getContent();
+
+    Integer getNumber();
+
+    Byte getFlags();
+
+    String getLargeIcon();
+}

+ 105 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/MPushReceiver.java

@@ -0,0 +1,105 @@
+/*
+ * (C) Copyright 2015-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ *     ohun@live.cn (夜色)
+ */
+
+
+package com.xwkj.jcjcgz.app.push;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.net.NetworkInfo.State;
+import android.os.SystemClock;
+
+import com.mpush.api.Constants;
+
+import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
+
+/**
+ * Created by yxx on 2016/2/14.
+ *
+ * @author ohun@live.cn
+ */
+public final class MPushReceiver extends BroadcastReceiver {
+    public static final String ACTION_HEALTH_CHECK = "com.mpush.HEALTH_CHECK";
+    public static final String ACTION_NOTIFY_CANCEL = "com.mpush.NOTIFY_CANCEL";
+    public static int delay = Constants.DEF_HEARTBEAT;
+    public static State STATE = State.UNKNOWN;
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        String action = intent.getAction();
+        if (ACTION_HEALTH_CHECK.equals(action)) {//处理心跳
+            if (MPush.I.hasStarted()) {
+                if (MPush.I.client.isRunning()) {
+                    if (MPush.I.client.healthCheck()) {
+                        startAlarm(context, delay);
+                    }
+                }
+            }
+        } else if (CONNECTIVITY_ACTION.equals(action)) {//处理网络变化
+            if (hasNetwork(context)) {
+                if (STATE != State.CONNECTED) {
+                    STATE = State.CONNECTED;
+                    if (MPush.I.hasStarted()) {
+                        MPush.I.onNetStateChange(true);
+
+                        //MPush.I.resumePush();
+                    } else {
+                        MPush.I.checkInit(context).startPush();
+                    }
+                }
+            } else {
+                if (STATE != State.DISCONNECTED) {
+                    STATE = State.DISCONNECTED;
+                    MPush.I.onNetStateChange(false);
+
+                    //MPush.I.pausePush();
+                    //cancelAlarm(context);//防止特殊场景下alarm没被取消
+                }
+            }
+        } else if (ACTION_NOTIFY_CANCEL.equals(action)) {//处理通知取消
+            Notifications.I.clean(intent);
+        }
+    }
+
+    static void startAlarm(Context context, int delay) {
+        Intent it = new Intent(MPushReceiver.ACTION_HEALTH_CHECK);
+        PendingIntent pi = PendingIntent.getBroadcast(context, 0, it, 0);
+        AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+        am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + delay, pi);
+        MPushReceiver.delay = delay;
+    }
+
+    static void cancelAlarm(Context context) {
+        Intent it = new Intent(MPushReceiver.ACTION_HEALTH_CHECK);
+        PendingIntent pi = PendingIntent.getBroadcast(context, 0, it, 0);
+        AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+        am.cancel(pi);
+    }
+
+    public static boolean hasNetwork(Context context) {
+        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        NetworkInfo info = cm.getActiveNetworkInfo();
+        return (info != null && info.isConnected());
+    }
+}

+ 242 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/MPushService.java

@@ -0,0 +1,242 @@
+/*
+ * (C) Copyright 2015-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ *     ohun@live.cn (夜色)
+ */
+
+
+package com.xwkj.jcjcgz.app.push;
+
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.IBinder;
+import android.util.Log;
+
+import androidx.annotation.Nullable;
+
+import com.mpush.api.Client;
+import com.mpush.api.ClientListener;
+import com.mpush.api.Constants;
+import com.xwkj.jcjcgz.BuildConfig;
+
+import org.json.JSONObject;
+
+/**
+ * Created by yxx on 2016/2/13.
+ *
+ * @author ohun@live.cn
+ */
+public final class MPushService extends Service implements ClientListener {
+    public static final String ACTION_MESSAGE_RECEIVED = "com.mpush.MESSAGE_RECEIVED";
+    public static final String ACTION_NOTIFICATION_OPENED = "com.mpush.NOTIFICATION_OPENED";
+    public static final String ACTION_KICK_USER = "com.mpush.KICK_USER";
+    public static final String ACTION_CONNECTIVITY_CHANGE = "com.mpush.CONNECTIVITY_CHANGE";
+    public static final String ACTION_HANDSHAKE_OK = "com.mpush.HANDSHAKE_OK";
+    public static final String ACTION_BIND_USER = "com.mpush.BIND_USER";
+    public static final String ACTION_UNBIND_USER = "com.mpush.UNBIND_USER";
+    public static final String EXTRA_PUSH_MESSAGE = "push_message";
+    public static final String EXTRA_PUSH_MESSAGE_ID = "push_message_id";
+    public static final String EXTRA_USER_ID = "user_id";
+    public static final String EXTRA_DEVICE_ID = "device_id";
+    public static final String EXTRA_BIND_RET = "bind_ret";
+    public static final String EXTRA_CONNECT_STATE = "connect_state";
+    public static final String EXTRA_HEARTBEAT = "heartbeat";
+    private int SERVICE_START_DELAYED = 5;
+
+    @Nullable
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        cancelAutoStartService(this);
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        if (!MPush.I.hasStarted()) {
+            MPush.I.checkInit(this).create(this);
+        }
+        if (MPush.I.hasStarted()) {
+            if (MPushReceiver.hasNetwork(this)) {
+                MPush.I.client.start();
+            }
+            MPushFakeService.startForeground(this);
+            flags = START_STICKY;
+            SERVICE_START_DELAYED = 5;
+            return super.onStartCommand(intent, flags, startId);
+        } else {
+            int ret = super.onStartCommand(intent, flags, startId);
+            stopSelf();
+            SERVICE_START_DELAYED += SERVICE_START_DELAYED;
+            return ret;
+        }
+    }
+
+    /**
+     * service停掉后自动启动应用
+     *
+     * @param context
+     * @param delayed 延后启动的时间,单位为秒
+     */
+    private static void startServiceAfterClosed(Context context, int delayed) {
+        AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+        alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + delayed * 1000, getOperation(context));
+    }
+
+    public static void cancelAutoStartService(Context context) {
+        AlarmManager alarm = (AlarmManager) context
+                .getSystemService(Context.ALARM_SERVICE);
+        alarm.cancel(getOperation(context));
+    }
+
+    private static PendingIntent getOperation(Context context) {
+        Intent intent = new Intent(context, MPushService.class);
+        PendingIntent operation = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
+        return operation;
+    }
+
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        MPushReceiver.cancelAlarm(this);
+        MPush.I.destroy();
+        startServiceAfterClosed(this, SERVICE_START_DELAYED);//5s后重启
+    }
+
+    @Override
+    public void onReceivePush(Client client, byte[] content, int messageId) {
+        String message = new String(content, Constants.UTF_8);
+        Log.e("eee", "message ==== " + message);
+/*
+
+
+        if (messageId > 0) MPush.I.ack(messageId);
+
+        if (TextUtils.isEmpty(message)) return;
+
+        NotificationDO ndo = fromJson(message);
+
+        if (ndo != null) {
+            Intent it = new Intent(this, MyReceiver.class);
+            it.setAction(MPushService.ACTION_NOTIFICATION_OPENED);
+            if (ndo.getExtras() != null) it.putExtra("my_extra", ndo.getExtras().toString());
+            if (TextUtils.isEmpty(ndo.getTitle())) ndo.setTitle("MPush");
+            if (TextUtils.isEmpty(ndo.getTicker())) ndo.setTicker(ndo.getTitle());
+            if (TextUtils.isEmpty(ndo.getContent())) ndo.setContent(ndo.getTitle());
+            Notifications.I.notify(ndo, it);
+        }
+*/
+
+
+        sendBroadcast(new Intent(ACTION_MESSAGE_RECEIVED)
+                .addCategory(BuildConfig.APPLICATION_ID)
+                .setClassName(this, MyReceiver.class.getName())
+                .putExtra(EXTRA_PUSH_MESSAGE, content)
+                .putExtra(EXTRA_PUSH_MESSAGE_ID, messageId)
+        );
+    }
+    private NotificationDO fromJson(String message) {
+        try {
+            JSONObject messageDO = new JSONObject(message);
+            if (messageDO != null) {
+                JSONObject jo = new JSONObject(messageDO.optString("content"));
+                NotificationDO ndo = new NotificationDO();
+                ndo.setContent(jo.optString("content"));
+                ndo.setTitle(jo.optString("title"));
+                ndo.setTicker(jo.optString("ticker"));
+                ndo.setNid(jo.optInt("nid", 1));
+                ndo.setExtras(jo.optJSONObject("extras"));
+                return ndo;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+    @Override
+    public void onKickUser(String deviceId, String userId) {
+        Log.e("eee", "onKickUser is run !!!! userId ===== " + userId);
+        MPush.I.unbindAccount();
+        sendBroadcast(new Intent(ACTION_KICK_USER)
+                .addCategory(BuildConfig.APPLICATION_ID)
+                .setClassName(this, "com.mpush.demo.MyReceiver")
+                .putExtra(EXTRA_DEVICE_ID, deviceId)
+                .putExtra(EXTRA_USER_ID, userId)
+        );
+    }
+
+    @Override
+    public void onBind(boolean success, String userId) {
+        Log.e("eee", "onBind is run !!!! userId ===== " + userId);
+        sendBroadcast(new Intent(ACTION_BIND_USER)
+                .addCategory(BuildConfig.APPLICATION_ID)
+                .setClassName(this, "com.mpush.demo.MyReceiver")
+                .putExtra(EXTRA_BIND_RET, success)
+                .putExtra(EXTRA_USER_ID, userId)
+        );
+    }
+
+    @Override
+    public void onUnbind(boolean success, String userId) {
+        Log.e("eee", "onUnbind is run !!!! userId ===== " + userId);
+        sendBroadcast(new Intent(ACTION_UNBIND_USER)
+                .addCategory(BuildConfig.APPLICATION_ID)
+                .setClassName(this, "com.mpush.demo.MyReceiver")
+                .putExtra(EXTRA_BIND_RET, success)
+                .putExtra(EXTRA_USER_ID, userId)
+        );
+    }
+
+    @Override
+    public void onConnected(Client client) {
+        Log.e("eee", "onConnected is run !!!! ");
+        sendBroadcast(new Intent(ACTION_CONNECTIVITY_CHANGE)
+                .addCategory(BuildConfig.APPLICATION_ID)
+                .setClassName(this, "com.mpush.demo.MyReceiver")
+                .putExtra(EXTRA_CONNECT_STATE, true)
+        );
+    }
+
+    @Override
+    public void onDisConnected(Client client) {
+        Log.e("eee", "onDisConnected is run !!!! ");
+        MPushReceiver.cancelAlarm(this);
+        sendBroadcast(new Intent(ACTION_CONNECTIVITY_CHANGE)
+                .addCategory(BuildConfig.APPLICATION_ID)
+                .setClassName(this, "com.mpush.demo.MyReceiver")
+                .putExtra(EXTRA_CONNECT_STATE, false)
+        );
+    }
+
+    @Override
+    public void onHandshakeOk(Client client, int heartbeat) {
+        MPushReceiver.startAlarm(this, heartbeat - 1000);
+        sendBroadcast(new Intent(ACTION_HANDSHAKE_OK)
+                .addCategory(BuildConfig.APPLICATION_ID)
+                .setClassName(this, "com.mpush.demo.MyReceiver")
+                .putExtra(EXTRA_HEARTBEAT, heartbeat)
+        );
+    }
+}

+ 104 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/MyReceiver.java

@@ -0,0 +1,104 @@
+package com.xwkj.jcjcgz.app.push;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.mpush.api.Constants;
+import com.xwkj.jcjcgz.mvp.ui.activity.DxzpDetailActivity;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class MyReceiver extends BroadcastReceiver {
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        Log.e("eee", "MyReceiver onReceive is run !!!!");
+        if (MPushService.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
+            byte[] bytes = intent.getByteArrayExtra(MPushService.EXTRA_PUSH_MESSAGE);
+            int messageId = intent.getIntExtra(MPushService.EXTRA_PUSH_MESSAGE_ID, 0);
+            String message = new String(bytes, Constants.UTF_8);
+            Log.e("eee", message);
+
+//            Toast.makeText(context, "收到新的通知:" + message, Toast.LENGTH_SHORT).show();
+
+            if (messageId > 0) MPush.I.ack(messageId);
+
+            if (TextUtils.isEmpty(message)) return;
+
+            NotificationDO ndo = fromJson(message);
+
+            if (ndo != null) {
+                Intent it = new Intent(context, MyReceiver.class);
+                it.setAction(MPushService.ACTION_NOTIFICATION_OPENED);
+                it.putExtra("test", "test");
+                if (ndo.getExtras() != null) it.putExtra("extra", ndo.getExtras().toString());
+                if (TextUtils.isEmpty(ndo.getTitle())) ndo.setTitle("推送");
+                if (TextUtils.isEmpty(ndo.getTicker())) ndo.setTicker(ndo.getTitle());
+                if (TextUtils.isEmpty(ndo.getContent())) ndo.setContent(ndo.getTitle());
+                Notifications.I.notify(ndo, it);
+            }
+        } else if (MPushService.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
+            Notifications.I.clean(intent);
+            Log.e("eee", Notifications.EXTRA_MESSAGE_ID + "=======" + intent.getStringExtra(Notifications.EXTRA_MESSAGE_ID));
+            String extras = intent.getStringExtra("extra");
+            if (!TextUtils.isEmpty(extras)) {
+                try {
+                    JSONObject jsonObject = new JSONObject(extras);
+                    String messageId = jsonObject.optString("messageId");
+                    Intent start = new Intent(context, DxzpDetailActivity.class);
+                    start.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                    start.putExtra("id", messageId);
+                    context.startActivity(start);
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+            }
+//            Toast.makeText(context, "通知被点击了, extras=" + extras, Toast.LENGTH_SHORT).show();
+        } else if (MPushService.ACTION_KICK_USER.equals(intent.getAction())) {
+//            Toast.makeText(context, "用户被踢下线了", Toast.LENGTH_SHORT).show();
+        } else if (MPushService.ACTION_BIND_USER.equals(intent.getAction())) {
+/*            Toast.makeText(context, "绑定用户:"
+                            + intent.getStringExtra(MPushService.EXTRA_USER_ID)
+                            + (intent.getBooleanExtra(MPushService.EXTRA_BIND_RET, false) ? "成功" : "失败")
+                    , Toast.LENGTH_SHORT).show();*/
+        } else if (MPushService.ACTION_UNBIND_USER.equals(intent.getAction())) {
+/*            Toast.makeText(context, "解绑用户:"
+                            + (intent.getBooleanExtra(MPushService.EXTRA_BIND_RET, false)
+                            ? "成功"
+                            : "失败")
+                    , Toast.LENGTH_SHORT).show();*/
+        } else if (MPushService.ACTION_CONNECTIVITY_CHANGE.equals(intent.getAction())) {
+/*            Toast.makeText(context, intent.getBooleanExtra(MPushService.EXTRA_CONNECT_STATE, false)
+                            ? "MPUSH连接建立成功"
+                            : "MPUSH连接断开"
+                    , Toast.LENGTH_SHORT).show();*/
+        } else if (MPushService.ACTION_HANDSHAKE_OK.equals(intent.getAction())) {
+/*            Toast.makeText(context, "MPUSH握手成功, 心跳:" + intent.getIntExtra(MPushService.EXTRA_HEARTBEAT, 0)
+                    , Toast.LENGTH_SHORT).show();*/
+        }
+    }
+
+    private NotificationDO fromJson(String message) {
+        try {
+            JSONObject messageDO = new JSONObject(message);
+            if (messageDO != null) {
+                JSONObject jo = new JSONObject(messageDO.optString("content"));
+                NotificationDO ndo = new NotificationDO();
+                ndo.setContent(jo.optString("content"));
+                ndo.setTitle(jo.optString("title"));
+                ndo.setTicker(jo.optString("ticker"));
+                ndo.setNid(jo.optInt("nid", 1));
+                ndo.setExtras(jo.optJSONObject("extras"));
+                return ndo;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}

+ 109 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/NotificationDO.java

@@ -0,0 +1,109 @@
+package com.xwkj.jcjcgz.app.push;
+
+import org.json.JSONObject;
+
+/**
+ * Created by yxx on 2016/2/19.
+ *
+ * @author ohun@live.cn
+ */
+public final class NotificationDO implements MPushMessage {
+    private String msgId;
+    private String title;
+    private String content;
+    private Integer nid; //主要用于聚合通知,非必填
+    private Byte flags; //特性字段。 0x01:声音   0x02:震动 0x03:闪灯
+    private String largeIcon; // 大图标
+    private String ticker; //和title一样
+    private Integer number;
+    private JSONObject extras;
+
+    @Override
+    public Integer getNid() {
+        return nid;
+    }
+
+    @Override
+    public String getMsgId() {
+        return msgId;
+    }
+
+    @Override
+    public String getTicker() {
+        return ticker;
+    }
+
+    @Override
+    public String getTitle() {
+        return title;
+    }
+
+    @Override
+    public String getContent() {
+        return content;
+    }
+
+    @Override
+    public Integer getNumber() {
+        return number;
+    }
+
+    @Override
+    public Byte getFlags() {
+        return flags;
+    }
+
+    @Override
+    public String getLargeIcon() {
+        return largeIcon;
+    }
+
+    public NotificationDO setMsgId(String msgId) {
+        this.msgId = msgId;
+        return this;
+    }
+
+    public NotificationDO setTitle(String title) {
+        this.title = title;
+        return this;
+    }
+
+    public NotificationDO setContent(String content) {
+        this.content = content;
+        return this;
+    }
+
+    public NotificationDO setNid(Integer nid) {
+        this.nid = nid;
+        return this;
+    }
+
+    public NotificationDO setFlags(Byte flags) {
+        this.flags = flags;
+        return this;
+    }
+
+    public NotificationDO setLargeIcon(String largeIcon) {
+        this.largeIcon = largeIcon;
+        return this;
+    }
+
+    public NotificationDO setTicker(String ticker) {
+        this.ticker = ticker;
+        return this;
+    }
+
+    public NotificationDO setNumber(Integer number) {
+        this.number = number;
+        return this;
+    }
+
+    public JSONObject getExtras() {
+        return extras;
+    }
+
+    public NotificationDO setExtras(JSONObject extras) {
+        this.extras = extras;
+        return this;
+    }
+}

+ 160 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/Notifications.java

@@ -0,0 +1,160 @@
+/*
+ * (C) Copyright 2015-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ *     ohun@live.cn (夜色)
+ */
+
+
+package com.xwkj.jcjcgz.app.push;
+
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.os.Build;
+
+import androidx.core.app.NotificationCompat;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public final class Notifications {
+    public static final String EXTRA_MESSAGE_ID = "msg_id";
+    public static final String CHANNEL_ID = "com.lc.id";
+    public static final Notifications I = new Notifications();
+    private int nIdSeq = 1;
+    private final Map<Integer, Integer> nIds = new HashMap<>();
+    private Context context;
+    private NotificationManager nm;
+    private int smallIcon;
+    private Bitmap largeIcon;
+    private int defaults;
+
+    public void init(Context context) {
+        this.context = context;
+        this.nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+        int defaults = Notification.DEFAULT_ALL
+                | Notification.FLAG_AUTO_CANCEL;
+        this.defaults = defaults;
+    }
+
+    public boolean hasInit() {
+        return context != null;
+    }
+
+    public Notifications setSmallIcon(int smallIcon) {
+        this.smallIcon = smallIcon;
+        return this;
+    }
+
+    public Notifications setLargeIcon(Bitmap largeIcon) {
+        this.largeIcon = largeIcon;
+        return this;
+    }
+
+    public Notifications setDefaults(int defaults) {
+        this.defaults = defaults;
+        return this;
+    }
+
+    public int notify(MPushMessage message, Intent clickIT) {
+        if (message == null || clickIT == null) return -1;
+        Integer nid = message.getNid();
+        //1.如果NID不存在则新生成一个,且新生成的Id在nIds是不存在的
+        if (nid == null || nid <= 0) {
+            do {
+                nid = nIdSeq++;
+            } while (nIds.containsKey(nid));
+        }
+
+        //处理总数
+        Integer count = nIds.get(nid);
+        if (count == null) {
+            count = 0;
+        }
+        nIds.put(nid, ++count);
+        Intent cancelIT = new Intent(MPushReceiver.ACTION_NOTIFY_CANCEL);
+        cancelIT.putExtra(EXTRA_MESSAGE_ID, nid);
+//        clickIT.putExtra(EXTRA_MESSAGE_ID, nid);
+//        clickIT.putExtra("notify", "notify");
+        PendingIntent clickPI = PendingIntent.getBroadcast(context, nid, clickIT, PendingIntent.FLAG_UPDATE_CURRENT);//处理点击
+        PendingIntent cancelPI = PendingIntent.getBroadcast(context, nid, cancelIT, PendingIntent.FLAG_UPDATE_CURRENT);//处理滑动取消
+
+        NotificationCompat.Builder notification;
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+            NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "name", NotificationManager.IMPORTANCE_HIGH);
+            channel.enableLights(true);
+            channel.setShowBadge(true);
+            channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
+            nm.createNotificationChannel(channel);
+            notification = build(clickPI, cancelPI,
+                    message.getTitle(),
+                    message.getTitle(),
+                    message.getContent(),
+                    count).setChannelId(CHANNEL_ID);
+        } else {
+            notification = build(clickPI, cancelPI,
+                    message.getTitle(),
+                    message.getTitle(),
+                    message.getContent(),
+                    count);
+        }
+       /* nm.notify(nid, build(clickPI, cancelPI,
+                message.getTitle(),
+                message.getTitle(),
+                message.getContent(),
+                count));*/
+        nm.notify(nid, notification.build());
+        return nid;
+    }
+
+    public void clean(Integer nId) {
+        Integer count = nIds.remove(nId);
+        if (count != null) nm.cancel(nId);
+    }
+
+    public void clean(Intent intent) {
+        int nId = intent.getIntExtra(Notifications.EXTRA_MESSAGE_ID, 0);
+        if (nId > 0) clean(nId);
+    }
+
+    public void cleanAll() {
+        nIds.clear();
+        nm.cancelAll();
+    }
+
+    private NotificationCompat.Builder build(PendingIntent clickIntent, PendingIntent cancelIntent,
+                               String ticker, String title, String content, int number) {
+        return new NotificationCompat.Builder(context)
+                .setSmallIcon(smallIcon)
+                .setLargeIcon(largeIcon)
+                .setContentTitle(title)
+                .setContentText(content)
+                .setTicker(ticker)
+                .setContentIntent(clickIntent)
+                .setDeleteIntent(cancelIntent)
+                .setNumber(number)
+                .setAutoCancel(true)
+                .setOnlyAlertOnce(true)
+                        //.setLights(0xff00ff00, 5000, 5000)
+                .setDefaults(defaults)
+                ;
+    }
+
+}

+ 53 - 0
app/src/main/java/com/xwkj/jcjcgz/app/push/SPSessionStorage.java

@@ -0,0 +1,53 @@
+/*
+ * (C) Copyright 2015-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ *     ohun@live.cn (夜色)
+ */
+
+
+package com.xwkj.jcjcgz.app.push;
+
+import android.content.SharedPreferences;
+
+import com.mpush.api.connection.SessionStorage;
+
+/**
+ * Created by yxx on 2016/2/15.
+ *
+ * @author ohun@live.cn
+ */
+public final class SPSessionStorage implements SessionStorage {
+    private final SharedPreferences sp;
+
+    public SPSessionStorage(SharedPreferences sp) {
+        this.sp = sp;
+    }
+
+    @Override
+    public void saveSession(String sessionContext) {
+        sp.edit().putString("session", sessionContext).apply();
+    }
+
+    @Override
+    public String getSession() {
+        return sp.getString("session", null);
+    }
+
+    @Override
+    public void clearSession() {
+        sp.edit().remove("session").apply();
+    }
+}

+ 41 - 0
app/src/main/java/com/xwkj/jcjcgz/app/utils/GlideImageLoader.java

@@ -0,0 +1,41 @@
+package com.xwkj.jcjcgz.app.utils;
+
+import android.app.Activity;
+import android.net.Uri;
+import android.widget.ImageView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.lzy.imagepicker.loader.ImageLoader;
+import com.xwkj.jcjcgz.R;
+
+import java.io.File;
+
+public class GlideImageLoader implements ImageLoader {
+
+    @Override
+    public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) {
+
+        Glide.with(activity)                             //配置上下文
+                .load(Uri.fromFile(new File(path)))      //设置图片路径(fix #8,文件名包含%符号 无法识别和显示)
+                .error(R.mipmap.default_image)           //设置错误图片
+                .placeholder(R.mipmap.default_image)     //设置占位图片
+                .diskCacheStrategy(DiskCacheStrategy.ALL)//缓存全尺寸
+                .into(imageView);
+    }
+
+    @Override
+    public void displayImagePreview(Activity activity, String path, ImageView imageView, int width, int height) {
+        Glide.with(activity)                             //配置上下文
+                .load(Uri.fromFile(new File(path)))      //设置图片路径(fix #8,文件名包含%符号 无法识别和显示)
+                .error(R.mipmap.default_image)           //设置错误图片
+                .placeholder(R.mipmap.default_image)     //设置占位图片
+                .diskCacheStrategy(DiskCacheStrategy.ALL)//缓存全尺寸
+                .into(imageView);
+    }
+
+    @Override
+    public void clearMemoryCache() {
+        //这里是清除缓存的方法,根据需要自己实现
+    }
+}

+ 282 - 0
app/src/main/java/com/xwkj/jcjcgz/app/utils/KeyboardUtil.java

@@ -0,0 +1,282 @@
+package com.xwkj.jcjcgz.app.utils;
+
+import android.app.Activity;
+import android.content.Context;
+import android.inputmethodservice.Keyboard;
+import android.inputmethodservice.KeyboardView;
+import android.os.Build;
+import android.text.Editable;
+import android.text.InputType;
+import android.view.View;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+
+import com.xwkj.jcjcgz.R;
+import com.zkjc.common.utils.KeyModel;
+import com.zkjc.common.utils.MyKeyBoardView;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+
+public class KeyboardUtil {
+    private Activity mActivity;
+    private boolean  mIfRandom;
+
+    private MyKeyBoardView mKeyboardView;
+    private Keyboard mKeyboardNumber;//数字键盘
+    private EditText mEditText;
+
+    public KeyboardUtil(Activity activity) {
+        this(activity, false);
+    }
+
+    public KeyboardUtil(Activity activity, boolean ifRandom) {
+        this.mActivity = activity;
+        this.mIfRandom = ifRandom;
+        mKeyboardNumber = new Keyboard(mActivity, R.xml.keyboard_number);
+        mKeyboardView = (MyKeyBoardView) mActivity.findViewById(R.id.keyboard_view);
+    }
+
+    /**
+     * edittext绑定自定义键盘
+     *
+     * @param editText 需要绑定自定义键盘的edittext
+     */
+    public void attachTo(EditText editText) {
+        this.mEditText = editText;
+        hideSystemSofeKeyboard(mActivity.getApplicationContext(), mEditText);
+        showSoftKeyboard();
+    }
+
+    public void showSoftKeyboard() {
+        if (mKeyboardNumber == null) {
+            mKeyboardNumber = new Keyboard(mActivity, R.xml.keyboard_number);
+        }
+        if (mKeyboardView == null) {
+            mKeyboardView = (MyKeyBoardView) mActivity.findViewById(R.id.keyboard_view);
+        }
+        if (mIfRandom) {
+            randomKeyboardNumber();
+        } else {
+            mKeyboardView.setKeyboard(mKeyboardNumber);
+        }
+        mKeyboardView.setEnabled(true);
+        mKeyboardView.setPreviewEnabled(false);
+        mKeyboardView.setVisibility(View.VISIBLE);
+        mKeyboardView.setOnKeyboardActionListener(mOnKeyboardActionListener);
+
+    }
+
+    private KeyboardView.OnKeyboardActionListener mOnKeyboardActionListener = new KeyboardView.OnKeyboardActionListener() {
+        @Override
+        public void onPress(int primaryCode) {
+
+        }
+
+        @Override
+        public void onRelease(int primaryCode) {
+
+        }
+
+        @Override
+        public void onKey(int primaryCode, int[] keyCodes) {
+            Editable editable = mEditText.getText();
+            int start = mEditText.getSelectionStart();
+            if (primaryCode == Keyboard.KEYCODE_DELETE) {// 回退
+                if (editable != null && editable.length() > 0) {
+                    if (start > 0) {
+                        editable.delete(start - 1, start);
+                    }
+                }
+            } else if (primaryCode == Keyboard.KEYCODE_CANCEL) {// 隐藏键盘
+                hideKeyboard();
+                if (mOnCancelClick != null) {
+                    mOnCancelClick.onCancellClick();
+                }
+            } else if (primaryCode == Keyboard.KEYCODE_DONE) {// 隐藏键盘
+                hideKeyboard();
+                if (mOnOkClick != null) {
+                    mOnOkClick.onOkClick();
+                }
+            } else {
+                editable.insert(start, Character.toString((char) primaryCode));
+            }
+        }
+
+        @Override
+        public void onText(CharSequence text) {
+
+        }
+
+        @Override
+        public void swipeLeft() {
+
+        }
+
+        @Override
+        public void swipeRight() {
+
+        }
+
+        @Override
+        public void swipeDown() {
+
+        }
+
+        @Override
+        public void swipeUp() {
+
+        }
+    };
+
+    /**
+     * EditText获取焦点并显示软键盘
+     */
+    public static void showSoftInputFromWindow(final Activity activity, final EditText editText) {
+        int sdkInt = Build.VERSION.SDK_INT;
+        if (sdkInt >= 11) {
+            try {
+                Class<EditText> cls = EditText.class;
+                Method setShowSoftInputOnFocus;
+                setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
+                setShowSoftInputOnFocus.setAccessible(true);
+                setShowSoftInputOnFocus.invoke(editText, true);
+
+            } catch (SecurityException e) {
+                e.printStackTrace();
+            } catch (NoSuchMethodException e) {
+                e.printStackTrace();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else {
+            editText.setInputType(InputType.TYPE_CLASS_TEXT);
+        }
+        editText.setFocusable(true);
+        editText.setFocusableInTouchMode(true);
+        editText.requestFocus();
+        editText.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
+                imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);// 显示输入法
+            }
+        },100);
+//        activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+    }
+
+    /**
+     * 隐藏系统键盘
+     *
+     * @param editText
+     */
+    public static void hideSystemSofeKeyboard(final Context context, final EditText editText) {
+        int sdkInt = Build.VERSION.SDK_INT;
+        if (sdkInt >= 11) {
+            try {
+                Class<EditText> cls = EditText.class;
+                Method setShowSoftInputOnFocus;
+                setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
+                setShowSoftInputOnFocus.setAccessible(true);
+                setShowSoftInputOnFocus.invoke(editText, false);
+
+            } catch (SecurityException e) {
+                e.printStackTrace();
+            } catch (NoSuchMethodException e) {
+                e.printStackTrace();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else {
+            editText.setInputType(InputType.TYPE_NULL);
+        }
+
+        editText.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                // 如果软键盘已经显示,则隐藏
+                InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+                imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
+            }
+        }, 100);
+    }
+
+    public interface OnOkClick {
+        void onOkClick();
+    }
+
+    public interface onCancelClick {
+        void onCancellClick();
+    }
+
+    public OnOkClick mOnOkClick = null;
+    public onCancelClick mOnCancelClick;
+
+    public void setOnOkClick(OnOkClick onOkClick) {
+        mOnOkClick = onOkClick;
+    }
+
+    public void setOnCancelClick(onCancelClick onCancelClick) {
+        mOnCancelClick = onCancelClick;
+    }
+
+
+    private boolean isNumber(String str) {
+        String wordstr = "0123456789";
+        return wordstr.contains(str);
+    }
+
+    private void randomKeyboardNumber() {
+        List<Keyboard.Key> keyList = mKeyboardNumber.getKeys();
+        // 查找出0-9的数字键
+        List<Keyboard.Key> newkeyList = new ArrayList<Keyboard.Key>();
+        for (int i = 0; i < keyList.size(); i++) {
+            if (keyList.get(i).label != null
+                    && isNumber(keyList.get(i).label.toString())) {
+                newkeyList.add(keyList.get(i));
+            }
+        }
+        // 数组长度
+        int count = newkeyList.size();
+        // 结果集
+        List<KeyModel> resultList = new ArrayList<KeyModel>();
+        // 用一个LinkedList作为中介
+        LinkedList<KeyModel> temp = new LinkedList<KeyModel>();
+        // 初始化temp
+        for (int i = 0; i < count; i++) {
+            temp.add(new KeyModel(48 + i, i + ""));
+        }
+        // 取数
+        Random rand = new Random();
+        for (int i = 0; i < count; i++) {
+            int num = rand.nextInt(count - i);
+            resultList.add(new KeyModel(temp.get(num).getCode(),
+                    temp.get(num).getLable()));
+            temp.remove(num);
+        }
+        for (int i = 0; i < newkeyList.size(); i++) {
+            newkeyList.get(i).label = resultList.get(i).getLable();
+            newkeyList.get(i).codes[0] = resultList.get(i)
+                    .getCode();
+        }
+
+        mKeyboardView.setKeyboard(mKeyboardNumber);
+    }
+
+    public void showKeyboard() {
+        int visibility = mKeyboardView.getVisibility();
+        if (visibility == View.GONE || visibility == View.INVISIBLE) {
+            mKeyboardView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public void hideKeyboard() {
+        int visibility = mKeyboardView.getVisibility();
+        if (visibility == View.VISIBLE) {
+            mKeyboardView.setVisibility(View.GONE);
+        }
+    }
+}

+ 116 - 0
app/src/main/java/com/xwkj/jcjcgz/app/view/AreaPicker.java

@@ -0,0 +1,116 @@
+package com.xwkj.jcjcgz.app.view;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
+import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
+import com.bigkoo.pickerview.view.OptionsPickerView;
+import com.google.gson.Gson;
+import com.xwkj.jcjcgz.mvp.model.entity.Area;
+import com.xwkj.jcjcgz.mvp.model.entity.DictionaryEntity;
+
+import org.json.JSONArray;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AreaPicker {
+    private Context mContext;
+    private OnAreaSelectListener mListener;
+    public interface OnAreaSelectListener{
+        void onAreaSelect(Area area);
+    }
+    public AreaPicker(Context context, List<DictionaryEntity.Xzqh> jsonBean) {
+        mContext = context;
+        initJsonData(jsonBean);
+    }
+
+    private List<DictionaryEntity.Xzqh> options1Items = new ArrayList<>();
+    private ArrayList<ArrayList<DictionaryEntity.Xzqh>> options2Items = new ArrayList<>();
+    private ArrayList<ArrayList<ArrayList<DictionaryEntity.Xzqh>>> options3Items = new ArrayList<>();
+    public void showPickerView(Area area, String title) {// 弹出选择器
+
+        OptionsPickerView pvOptions = new OptionsPickerBuilder(mContext, new OnOptionsSelectListener() {
+            @Override
+            public void onOptionsSelect(int options1, int options2, int options3, View v) {
+                //返回的分别是三个级别的选中位置
+                String opt1tx = options1Items.size() > 0 ?
+                        options1Items.get(options1).getPickerViewText() : "";
+
+                String opt2tx = options2Items.size() > 0
+                        && options2Items.get(options1).size() > 0 ?
+                        options2Items.get(options1).get(options2).getName() : "";
+
+                String opt3tx = options2Items.size() > 0
+                        && options3Items.get(options1).size() > 0
+                        && options3Items.get(options1).get(options2).size() > 0 ?
+                        options3Items.get(options1).get(options2).get(options3).getName() : "";
+
+                Area area = new Area();
+                area.setCity(opt1tx);
+                area.setArea(opt2tx);
+                area.setStreet(opt3tx);
+                area.setCityIndex(options1);
+                area.setAreaIndex(options2);
+                area.setStreetIndex(options3);
+                if (mListener != null) {
+                    mListener.onAreaSelect(area);
+                }
+            }
+        })
+
+                .setTitleText(title)
+                .setDividerColor(Color.BLACK)
+                .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
+
+/*                .setDividerColor(context.getResources().getColor(R.color.vipfont))//分频器颜色
+                .setTitleColor(context.getResources().getColor(R.color.white))//标题文字颜色
+                .setSubmitColor(context.getResources().getColor(R.color.white))//确定按钮文字颜色
+                .setCancelColor(context.getResources().getColor(R.color.white))//取消按钮文字颜色
+                .setTitleBgColor(context.getResources().getColor(R.color.zitixuanzhong))//标题背景颜色 Night mode
+                .setBgColor(Color.WHITE)//滚轮背景颜色 Night mode*/
+
+                .setContentTextSize(20)
+                .setSelectOptions(area != null? area.getCityIndex() : 0, area != null? area.getAreaIndex() : 0, area != null? area.getStreetIndex() : 0)
+                .build();
+
+        pvOptions.setPicker(options1Items, options2Items, options3Items);//三级选择器
+        pvOptions.show();
+    }
+    private void initJsonData(List<DictionaryEntity.Xzqh> jsonBean) {//解析数据
+
+        options1Items = jsonBean;
+
+        for (int i = 0; i < jsonBean.size(); i++) {//遍历城市
+            ArrayList<DictionaryEntity.Xzqh> cityList = new ArrayList<>();//该省的城市列表(第二级)
+            ArrayList<ArrayList<DictionaryEntity.Xzqh>> province_AreaList = new ArrayList<>();//该省的所有地区列表(第三极)
+
+            for (int c = 0; c < jsonBean.get(i).getChildren().size(); c++) {//遍历该省份的所有城市
+                String cityName = jsonBean.get(i).getChildren().get(c).getName();
+                cityList.add(jsonBean.get(i).getChildren().get(c));//添加城市
+                ArrayList<DictionaryEntity.Xzqh> city_AreaList = new ArrayList<>();//该城市的所有地区列表
+
+                city_AreaList.addAll(jsonBean.get(i).getChildren().get(c).getChildren());
+                province_AreaList.add(city_AreaList);//添加该省所有地区数据
+            }
+
+            /**
+             * 添加城市数据
+             */
+            options2Items.add(cityList);
+
+            /**
+             * 添加地区数据
+             */
+            options3Items.add(province_AreaList);
+        }
+
+
+    }
+
+    public void setListener(OnAreaSelectListener mListener) {
+        this.mListener = mListener;
+    }
+}

+ 72 - 0
app/src/main/java/com/xwkj/jcjcgz/app/view/DictionaryPicker.java

@@ -0,0 +1,72 @@
+package com.xwkj.jcjcgz.app.view;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
+import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
+import com.bigkoo.pickerview.view.OptionsPickerView;
+import com.xwkj.jcjcgz.mvp.model.entity.DictionaryEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.PickerResult;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DictionaryPicker {
+    private Context mContext;
+    private OnAreaSelectListener mListener;
+    private OptionsPickerView pvOptions;
+
+    public interface OnAreaSelectListener{
+        void onAreaSelect(PickerResult area);
+    }
+    public DictionaryPicker(Context context, List<DictionaryEntity.DictionaryItem> jsonBean) {
+        mContext = context;
+        initJsonData(jsonBean);
+    }
+
+    private List<DictionaryEntity.DictionaryItem> options1Items = new ArrayList<>();
+
+    public void showPickerView(PickerResult result, String title) {// 弹出选择器
+
+        if (pvOptions == null) {
+            pvOptions = new OptionsPickerBuilder(mContext, new OnOptionsSelectListener() {
+                @Override
+                public void onOptionsSelect(int options1, int options2, int options3, View v) {
+                    //返回的分别是三个级别的选中位置
+                    DictionaryEntity.DictionaryItem opt1tx = options1Items.size() > 0 ?
+                            options1Items.get(options1) : null;
+                    if (opt1tx != null) {
+                        PickerResult pickerResult = new PickerResult();
+                        pickerResult.setLv1Id(opt1tx.getValue());
+                        pickerResult.setLv1Value(opt1tx.getLabel());
+                        pickerResult.setLv1Index(options1);
+
+                        if (mListener != null) {
+                            mListener.onAreaSelect(pickerResult);
+                        }
+                    }
+                }
+            })
+
+                    .setTitleText(title)
+                    .setDividerColor(Color.BLACK)
+                    .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
+                    .setContentTextSize(20)
+                    .setSelectOptions(result != null? result.getLv1Index() : 0)
+                    .build();
+        }
+
+        pvOptions.setPicker(options1Items);
+        pvOptions.show();
+    }
+    private void initJsonData(List<DictionaryEntity.DictionaryItem> gsdwSj) {
+        options1Items = gsdwSj;
+    }
+
+
+    public void setListener(OnAreaSelectListener mListener) {
+        this.mListener = mListener;
+    }
+}

+ 90 - 0
app/src/main/java/com/xwkj/jcjcgz/app/view/GsdwPicker.java

@@ -0,0 +1,90 @@
+package com.xwkj.jcjcgz.app.view;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
+import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
+import com.bigkoo.pickerview.view.OptionsPickerView;
+import com.xwkj.jcjcgz.mvp.model.entity.DictionaryEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.PickerResult;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class GsdwPicker {
+    private Context mContext;
+    private OnAreaSelectListener mListener;
+    public interface OnAreaSelectListener{
+        void onAreaSelect(PickerResult area);
+    }
+    public GsdwPicker(Context context, List<DictionaryEntity.Gsdw> jsonBean) {
+        mContext = context;
+        initData(jsonBean);
+    }
+
+    private List<DictionaryEntity.Gsdw> options1Items = new ArrayList<>();
+    private ArrayList<ArrayList<DictionaryEntity.Gsdw>> options2Items = new ArrayList<>();
+    public void showPickerView(PickerResult result) {// 弹出选择器
+
+        OptionsPickerView pvOptions = new OptionsPickerBuilder(mContext, new OnOptionsSelectListener() {
+            @Override
+            public void onOptionsSelect(int options1, int options2, int options3, View v) {
+                DictionaryEntity.Gsdw opt1tx = options1Items.size() > 0 ?
+                        options1Items.get(options1) : null;
+
+                DictionaryEntity.Gsdw opt2tx = options2Items.size() > 0
+                        && options2Items.get(options1).size() > 0 ?
+                        options2Items.get(options1).get(options2) : null;
+
+                if (opt1tx != null && opt2tx != null) {
+                    PickerResult pickerResult = new PickerResult();
+                    pickerResult.setLv1Id(opt1tx.getId());
+                    pickerResult.setLv1Value(opt1tx.getDeptName());
+                    pickerResult.setLv1Index(options1);
+
+                    pickerResult.setLv2Id(opt2tx.getId());
+                    pickerResult.setLv2Value(opt2tx.getDeptName());
+                    pickerResult.setLv2Index(options2);
+
+                    if (mListener != null) {
+                        mListener.onAreaSelect(pickerResult);
+                    }
+                }
+            }
+        })
+
+                .setTitleText("归属单位")
+                .setDividerColor(Color.BLACK)
+                .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
+                .setContentTextSize(20)
+                .isDialog(true)
+                .setLayoutRes()
+                .setSelectOptions(result != null? result.getLv1Index() : 0, result != null? result.getLv2Index() : 0)
+                .build();
+
+        pvOptions.setPicker(options1Items, options2Items);
+        pvOptions.show();
+    }
+    private void initData(List<DictionaryEntity.Gsdw> gsdwSj) {
+
+
+        options1Items = gsdwSj;
+
+        for (int i = 0; i < gsdwSj.size(); i++) {//遍历市局
+
+            /**
+             * 添加分局数据
+             */
+            options2Items.add((ArrayList<DictionaryEntity.Gsdw>) gsdwSj.get(i).getChildren());
+        }
+
+
+    }
+
+
+    public void setListener(OnAreaSelectListener mListener) {
+        this.mListener = mListener;
+    }
+}

+ 70 - 0
app/src/main/java/com/xwkj/jcjcgz/app/view/MjPicker.java

@@ -0,0 +1,70 @@
+package com.xwkj.jcjcgz.app.view;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
+import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
+import com.bigkoo.pickerview.view.OptionsPickerView;
+import com.xwkj.jcjcgz.mvp.model.entity.GsdwEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.MjEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.PickerResult;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MjPicker {
+    private Context mContext;
+    private OnAreaSelectListener mListener;
+
+    public interface OnAreaSelectListener{
+        void onAreaSelect(PickerResult area);
+    }
+    public MjPicker(Context context, List<MjEntity.Mj> jsonBean) {
+        mContext = context;
+        initJsonData(jsonBean);
+    }
+
+    private List<MjEntity.Mj> options1Items = new ArrayList<>();
+
+    public void showPickerView(PickerResult result, String title) {// 弹出选择器
+
+            OptionsPickerView pvOptions = new OptionsPickerBuilder(mContext, new OnOptionsSelectListener() {
+                @Override
+                public void onOptionsSelect(int options1, int options2, int options3, View v) {
+                    MjEntity.Mj opt1tx = options1Items.size() > 0 ?
+                            options1Items.get(options1) : null;
+                    if (opt1tx != null) {
+                        PickerResult pickerResult = new PickerResult();
+                        pickerResult.setLv1Id(opt1tx.getId());
+                        pickerResult.setLv1Value(opt1tx.getName());
+                        pickerResult.setLv1Index(options1);
+
+                        if (mListener != null) {
+                            mListener.onAreaSelect(pickerResult);
+                        }
+                    }
+                }
+            })
+
+                    .setTitleText(title)
+                    .setDividerColor(Color.BLACK)
+                    .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
+                    .setContentTextSize(20)
+                    .isDialog(true)
+                    .setSelectOptions(result != null? result.getLv1Index() : 0)
+                    .build();
+
+        pvOptions.setPicker(options1Items);
+        pvOptions.show();
+    }
+    private void initJsonData(List<MjEntity.Mj> gsdwSj) {
+        options1Items = gsdwSj;
+    }
+
+
+    public void setListener(OnAreaSelectListener mListener) {
+        this.mListener = mListener;
+    }
+}

+ 71 - 0
app/src/main/java/com/xwkj/jcjcgz/app/view/SmyjGsdwPicker.java

@@ -0,0 +1,71 @@
+package com.xwkj.jcjcgz.app.view;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
+import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
+import com.bigkoo.pickerview.view.OptionsPickerView;
+import com.xwkj.jcjcgz.mvp.model.entity.DictionaryEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.GsdwEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.PickerResult;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SmyjGsdwPicker {
+    private Context mContext;
+    private OnAreaSelectListener mListener;
+
+    public interface OnAreaSelectListener{
+        void onAreaSelect(PickerResult area);
+    }
+    public SmyjGsdwPicker(Context context, List<GsdwEntity.Gsdw> jsonBean) {
+        mContext = context;
+        initJsonData(jsonBean);
+    }
+
+    private List<GsdwEntity.Gsdw> options1Items = new ArrayList<>();
+
+    public void showPickerView(PickerResult result, String title) {// 弹出选择器
+
+            OptionsPickerView pvOptions = new OptionsPickerBuilder(mContext, new OnOptionsSelectListener() {
+                @Override
+                public void onOptionsSelect(int options1, int options2, int options3, View v) {
+                    //返回的分别是三个级别的选中位置
+                    GsdwEntity.Gsdw opt1tx = options1Items.size() > 0 ?
+                            options1Items.get(options1) : null;
+                    if (opt1tx != null) {
+                        PickerResult pickerResult = new PickerResult();
+                        pickerResult.setLv1Id(opt1tx.getId());
+                        pickerResult.setLv1Value(opt1tx.getDeptName());
+                        pickerResult.setLv1Index(options1);
+
+                        if (mListener != null) {
+                            mListener.onAreaSelect(pickerResult);
+                        }
+                    }
+                }
+            })
+
+                    .setTitleText(title)
+                    .setDividerColor(Color.BLACK)
+                    .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
+                    .setContentTextSize(20)
+                    .isDialog(true)
+                    .setSelectOptions(result != null? result.getLv1Index() : 0)
+                    .build();
+
+        pvOptions.setPicker(options1Items);
+        pvOptions.show();
+    }
+    private void initJsonData(List<GsdwEntity.Gsdw> gsdwSj) {
+        options1Items = gsdwSj;
+    }
+
+
+    public void setListener(OnAreaSelectListener mListener) {
+        this.mListener = mListener;
+    }
+}

+ 93 - 0
app/src/main/java/com/xwkj/jcjcgz/app/view/XzqhPicker.java

@@ -0,0 +1,93 @@
+package com.xwkj.jcjcgz.app.view;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+
+import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
+import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
+import com.bigkoo.pickerview.view.OptionsPickerView;
+import com.xwkj.jcjcgz.mvp.model.entity.DictionaryEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.PickerResult;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 行政区划选择省市
+ */
+public class XzqhPicker {
+    private Context mContext;
+    private OnAreaSelectListener mListener;
+    public interface OnAreaSelectListener{
+        void onAreaSelect(PickerResult area);
+    }
+    public XzqhPicker(Context context, List<DictionaryEntity.Xzqh> jsonBean) {
+        mContext = context;
+        initJsonData(jsonBean);
+    }
+
+    private List<DictionaryEntity.Xzqh> options1Items = new ArrayList<>();
+    private ArrayList<ArrayList<DictionaryEntity.Xzqh>> options2Items = new ArrayList<>();
+    public void showPickerView(PickerResult result) {// 弹出选择器
+
+        OptionsPickerView pvOptions = new OptionsPickerBuilder(mContext, new OnOptionsSelectListener() {
+            @Override
+            public void onOptionsSelect(int options1, int options2, int options3, View v) {
+                //返回的分别是三个级别的选中位置
+                DictionaryEntity.Xzqh opt1tx = options1Items.size() > 0 ?
+                        options1Items.get(options1) : null;
+
+                DictionaryEntity.Xzqh opt2tx = options2Items.size() > 0
+                        && options2Items.get(options1).size() > 0 ?
+                        options2Items.get(options1).get(options2) : null;
+
+                if (opt1tx != null && opt2tx != null) {
+                    PickerResult pickerResult = new PickerResult();
+                    pickerResult.setLv1Id(opt1tx.getCode());
+                    pickerResult.setLv1Value(opt1tx.getName());
+                    pickerResult.setLv1Index(options1);
+
+                    pickerResult.setLv2Id(opt2tx.getCode());
+                    pickerResult.setLv2Value(opt2tx.getName());
+                    pickerResult.setLv2Index(options2);
+
+                    if (mListener != null) {
+                        mListener.onAreaSelect(pickerResult);
+                    }
+                }
+            }
+        })
+
+                .setTitleText("归属省市")
+                .setDividerColor(Color.BLACK)
+                .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
+                .setContentTextSize(20)
+                .isDialog(true)
+                .setSelectOptions(result != null? result.getLv1Index() : 0, result != null? result.getLv2Index() : 0)
+                .build();
+
+        pvOptions.setPicker(options1Items, options2Items);//二级选择器
+        pvOptions.show();
+    }
+    private void initJsonData(List<DictionaryEntity.Xzqh> gsdwSj) {//解析数据
+
+
+        options1Items = gsdwSj;
+
+        for (int i = 0; i < gsdwSj.size(); i++) {//遍历省
+
+            /**
+             * 添加市数据
+             */
+            options2Items.add((ArrayList<DictionaryEntity.Xzqh>) gsdwSj.get(i).getChildren());
+        }
+
+
+    }
+
+
+    public void setListener(OnAreaSelectListener mListener) {
+        this.mListener = mListener;
+    }
+}

+ 41 - 0
app/src/main/java/com/xwkj/jcjcgz/di/component/AddShrComponent.java

@@ -0,0 +1,41 @@
+package com.xwkj.jcjcgz.di.component;
+
+import dagger.BindsInstance;
+import dagger.Component;
+
+import com.jess.arms.di.component.AppComponent;
+
+import com.xwkj.jcjcgz.di.module.AddShrModule;
+import com.xwkj.jcjcgz.mvp.contract.AddShrContract;
+
+import com.jess.arms.di.scope.ActivityScope;
+import com.xwkj.jcjcgz.mvp.ui.activity.AddShrActivity;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/23/2024 08:30
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@ActivityScope
+@Component(modules = AddShrModule.class, dependencies = AppComponent.class)
+public interface AddShrComponent {
+    void inject(AddShrActivity activity);
+
+    @Component.Builder
+    interface Builder {
+        @BindsInstance
+        AddShrComponent.Builder view(AddShrContract.View view);
+
+        AddShrComponent.Builder appComponent(AppComponent appComponent);
+
+        AddShrComponent build();
+    }
+}

+ 41 - 0
app/src/main/java/com/xwkj/jcjcgz/di/component/DxzpDetailComponent.java

@@ -0,0 +1,41 @@
+package com.xwkj.jcjcgz.di.component;
+
+import dagger.BindsInstance;
+import dagger.Component;
+
+import com.jess.arms.di.component.AppComponent;
+
+import com.xwkj.jcjcgz.di.module.DxzpDetailModule;
+import com.xwkj.jcjcgz.mvp.contract.DxzpDetailContract;
+
+import com.jess.arms.di.scope.ActivityScope;
+import com.xwkj.jcjcgz.mvp.ui.activity.DxzpDetailActivity;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/18/2024 14:41
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@ActivityScope
+@Component(modules = DxzpDetailModule.class, dependencies = AppComponent.class)
+public interface DxzpDetailComponent {
+    void inject(DxzpDetailActivity activity);
+
+    @Component.Builder
+    interface Builder {
+        @BindsInstance
+        DxzpDetailComponent.Builder view(DxzpDetailContract.View view);
+
+        DxzpDetailComponent.Builder appComponent(AppComponent appComponent);
+
+        DxzpDetailComponent build();
+    }
+}

+ 30 - 0
app/src/main/java/com/xwkj/jcjcgz/di/module/AddShrModule.java

@@ -0,0 +1,30 @@
+package com.xwkj.jcjcgz.di.module;
+
+import com.jess.arms.di.scope.ActivityScope;
+
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+
+import com.xwkj.jcjcgz.mvp.contract.AddShrContract;
+import com.xwkj.jcjcgz.mvp.model.AddShrModel;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/23/2024 08:30
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@Module
+public abstract class AddShrModule {
+
+    @Binds
+    abstract AddShrContract.Model bindAddShrModel(AddShrModel model);
+}

+ 30 - 0
app/src/main/java/com/xwkj/jcjcgz/di/module/DxzpDetailModule.java

@@ -0,0 +1,30 @@
+package com.xwkj.jcjcgz.di.module;
+
+import com.jess.arms.di.scope.ActivityScope;
+
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+
+import com.xwkj.jcjcgz.mvp.contract.DxzpDetailContract;
+import com.xwkj.jcjcgz.mvp.model.DxzpDetailModel;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/18/2024 14:41
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@Module
+public abstract class DxzpDetailModule {
+
+    @Binds
+    abstract DxzpDetailContract.Model bindDxzpDetailModel(DxzpDetailModel model);
+}

+ 29 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/contract/AddShrContract.java

@@ -0,0 +1,29 @@
+package com.xwkj.jcjcgz.mvp.contract;
+
+import com.jess.arms.mvp.IView;
+import com.jess.arms.mvp.IModel;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/23/2024 08:30
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public interface AddShrContract {
+    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
+    interface View extends IView {
+
+    }
+
+    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
+    interface Model extends IModel {
+
+    }
+}

+ 34 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/contract/DxzpDetailContract.java

@@ -0,0 +1,34 @@
+package com.xwkj.jcjcgz.mvp.contract;
+
+import com.jess.arms.mvp.IView;
+import com.jess.arms.mvp.IModel;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/18/2024 14:41
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public interface DxzpDetailContract {
+    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
+    interface View extends IView {
+
+        void onSuccess(String result);
+
+        void getDictionarySuccess(String result);
+
+        void onYjSuccess(String result);
+    }
+
+    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
+    interface Model extends IModel {
+
+    }
+}

+ 5 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/contract/FzQzFkContract.java

@@ -20,6 +20,11 @@ public interface FzQzFkContract {
     //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
     interface View extends IView {
 
+        void onGetGsdwSuccess(String result);
+
+        void onGetMjSuccess(String result, String id);
+
+        void onSubmitSuccess(String result);
     }
 
     //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存

+ 46 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/AddShrModel.java

@@ -0,0 +1,46 @@
+package com.xwkj.jcjcgz.mvp.model;
+
+import android.app.Application;
+
+import com.google.gson.Gson;
+import com.jess.arms.integration.IRepositoryManager;
+import com.jess.arms.mvp.BaseModel;
+
+import com.jess.arms.di.scope.ActivityScope;
+
+import javax.inject.Inject;
+
+import com.xwkj.jcjcgz.mvp.contract.AddShrContract;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/23/2024 08:30
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@ActivityScope
+public class AddShrModel extends BaseModel implements AddShrContract.Model {
+    @Inject
+    Gson mGson;
+    @Inject
+    Application mApplication;
+
+    @Inject
+    public AddShrModel(IRepositoryManager repositoryManager) {
+        super(repositoryManager);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mGson = null;
+        this.mApplication = null;
+    }
+}

+ 46 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/DxzpDetailModel.java

@@ -0,0 +1,46 @@
+package com.xwkj.jcjcgz.mvp.model;
+
+import android.app.Application;
+
+import com.google.gson.Gson;
+import com.jess.arms.integration.IRepositoryManager;
+import com.jess.arms.mvp.BaseModel;
+
+import com.jess.arms.di.scope.ActivityScope;
+
+import javax.inject.Inject;
+
+import com.xwkj.jcjcgz.mvp.contract.DxzpDetailContract;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/18/2024 14:41
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@ActivityScope
+public class DxzpDetailModel extends BaseModel implements DxzpDetailContract.Model {
+    @Inject
+    Gson mGson;
+    @Inject
+    Application mApplication;
+
+    @Inject
+    public DxzpDetailModel(IRepositoryManager repositoryManager) {
+        super(repositoryManager);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mGson = null;
+        this.mApplication = null;
+    }
+}

+ 1 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/api/Api.java

@@ -11,4 +11,5 @@ package com.xwkj.jcjcgz.mvp.model.api;
  */
 public interface Api {
     String APP_DOMAIN = "http://192.168.0.10";
+//    String APP_DOMAIN = "http://192.168.7.205";
 }

+ 7 - 1
app/src/main/java/com/xwkj/jcjcgz/mvp/model/api/ReqToBus.java

@@ -59,11 +59,17 @@ public class ReqToBus {
         String dataObjId = "220000000000-3-0100-5262bf9ccd72456e802fe9a0b77097e5";
         //正式环境
 
-        String resourceList = sp.getString("resourceList", "[{\n" +
+/*        String resourceList = sp.getString("resourceList", "[{\n" +
                 "\"resourceRegionalismCode\":\"120000000000\",\n" +
                 "\"resourceAddress\":\"http://192.168.0.10/zf/transpond/request\",\n" +
                 "\"resourceId\":\"220000000000-3-0100-5262bf9ccd72456e802fe9a0b77097e5\",\"resourceServiceType\":\"10\"\n" +
                 "}\n" +
+                "]");*/
+        String resourceList = sp.getString("resourceList", "[{\n" +
+                "\"resourceRegionalismCode\":\"120000000000\",\n" +
+                "\"resourceAddress\":\"" + Api.APP_DOMAIN + "/zf/transpond/request\",\n" +
+                "\"resourceId\":\"220000000000-3-0100-5262bf9ccd72456e802fe9a0b77097e5\",\"resourceServiceType\":\"10\"\n" +
+                "}\n" +
                 "]");
         List<AddressEntity> list = JSONObject.parseArray(resourceList, AddressEntity.class);
         String url = "";

+ 58 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/Area.java

@@ -0,0 +1,58 @@
+package com.xwkj.jcjcgz.mvp.model.entity;
+
+public class Area {
+    private String street;
+    private String city;
+    private String area;
+    private int streetIndex;
+    private int cityIndex;
+    private int areaIndex;
+
+    public String getStreet() {
+        return street;
+    }
+
+    public void setStreet(String street) {
+        this.street = street;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getArea() {
+        return area;
+    }
+
+    public void setArea(String area) {
+        this.area = area;
+    }
+
+    public int getStreetIndex() {
+        return streetIndex;
+    }
+
+    public void setStreetIndex(int streetIndex) {
+        this.streetIndex = streetIndex;
+    }
+
+    public int getCityIndex() {
+        return cityIndex;
+    }
+
+    public void setCityIndex(int cityIndex) {
+        this.cityIndex = cityIndex;
+    }
+
+    public int getAreaIndex() {
+        return areaIndex;
+    }
+
+    public void setAreaIndex(int areaIndex) {
+        this.areaIndex = areaIndex;
+    }
+}

+ 235 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/DictionaryEntity.java

@@ -0,0 +1,235 @@
+package com.xwkj.jcjcgz.mvp.model.entity;
+
+import com.contrarywind.interfaces.IPickerViewData;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class DictionaryEntity {
+    private int code;
+    private boolean success;
+    private Dictionary data;
+    private String msg;
+
+    public Dictionary getData() {
+        return data;
+    }
+
+    public void setData(Dictionary data) {
+        this.data = data;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public static class Dictionary implements Serializable {
+
+        private List<DictionaryItem> fkjg; // 反馈结果
+        private List<DictionaryItem> sfbj; //
+        private List<Gsdw> sjfj; // 市级分局
+        private List<DictionaryItem> wdhlx; // 未电话联系
+        private List<Xzqh> xzqh; // 行政区划
+        private List<DictionaryItem> ydhlx; // 已电话联系类型
+        private List<DictionaryItem> jmjg; // 见面结果
+        private List<DictionaryItem> sjzpxx; // 收集涉诈信息
+        private List<DictionaryItem> zplx; // 诈骗类型
+        private List<Xzqh> sqjd; // 社区街道
+
+        public List<Xzqh> getSqjd() {
+            return sqjd;
+        }
+
+        public void setSqjd(List<Xzqh> sqjd) {
+            this.sqjd = sqjd;
+        }
+
+        public List<DictionaryItem> getJmjg() {
+            return jmjg;
+        }
+
+        public void setJmjg(List<DictionaryItem> jmjg) {
+            this.jmjg = jmjg;
+        }
+
+        public List<DictionaryItem> getSjzpxx() {
+            return sjzpxx;
+        }
+
+        public void setSjzpxx(List<DictionaryItem> sjzpxx) {
+            this.sjzpxx = sjzpxx;
+        }
+
+        public List<DictionaryItem> getZplx() {
+            return zplx;
+        }
+
+        public void setZplx(List<DictionaryItem> zplx) {
+            this.zplx = zplx;
+        }
+
+        public List<DictionaryItem> getFkjg() {
+            return fkjg;
+        }
+
+        public void setFkjg(List<DictionaryItem> fkjg) {
+            this.fkjg = fkjg;
+        }
+
+        public List<DictionaryItem> getSfbj() {
+            return sfbj;
+        }
+
+        public void setSfbj(List<DictionaryItem> sfbj) {
+            this.sfbj = sfbj;
+        }
+
+        public List<Gsdw> getSjfj() {
+            return sjfj;
+        }
+
+        public void setSjfj(List<Gsdw> sjfj) {
+            this.sjfj = sjfj;
+        }
+
+        public List<DictionaryItem> getWdhlx() {
+            return wdhlx;
+        }
+
+        public void setWdhlx(List<DictionaryItem> wdhlx) {
+            this.wdhlx = wdhlx;
+        }
+
+        public List<Xzqh> getXzqh() {
+            return xzqh;
+        }
+
+        public void setXzqh(List<Xzqh> xzqh) {
+            this.xzqh = xzqh;
+        }
+
+        public List<DictionaryItem> getYdhlx() {
+            return ydhlx;
+        }
+
+        public void setYdhlx(List<DictionaryItem> ydhlx) {
+            this.ydhlx = ydhlx;
+        }
+    }
+
+    public static class DictionaryItem implements IPickerViewData, Serializable {
+        private String label;
+        private String value;
+
+        public String getValue() {
+            return value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        public String getLabel() {
+            return label;
+        }
+
+        public void setLabel(String label) {
+            this.label = label;
+        }
+
+        @Override
+        public String getPickerViewText() {
+            return getLabel();
+        }
+    }
+
+    public static class Gsdw implements IPickerViewData, Serializable {
+        private String deptName;
+        private List<Gsdw> children;
+        private String id;
+
+        public String getDeptName() {
+            return deptName;
+        }
+
+        public void setDeptName(String deptName) {
+            this.deptName = deptName;
+        }
+
+        public List<Gsdw> getChildren() {
+            return children;
+        }
+
+        public void setChildren(List<Gsdw> children) {
+            this.children = children;
+        }
+
+        public String getId() {
+            return id;
+        }
+
+        public void setId(String id) {
+            this.id = id;
+        }
+
+        @Override
+        public String getPickerViewText() {
+            return getDeptName();
+        }
+    }
+
+    public static class Xzqh implements IPickerViewData, Serializable {
+        private List<Xzqh> children;
+        private String code;
+        private String name;
+
+        public List<Xzqh> getChildren() {
+            return children;
+        }
+
+        public void setChildren(List<Xzqh> children) {
+            this.children = children;
+        }
+
+        public String getCode() {
+            return code;
+        }
+
+        public void setCode(String code) {
+            this.code = code;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        @Override
+        public String getPickerViewText() {
+            return getName();
+        }
+    }
+}

+ 70 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/GsdwEntity.java

@@ -0,0 +1,70 @@
+package com.xwkj.jcjcgz.mvp.model.entity;
+
+import com.contrarywind.interfaces.IPickerViewData;
+
+import java.util.List;
+
+public class GsdwEntity {
+    private int code;
+    private boolean success;
+    private List<Gsdw> data;
+    private String msg;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public List<Gsdw> getData() {
+        return data;
+    }
+
+    public void setData(List<Gsdw> data) {
+        this.data = data;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public static class Gsdw implements IPickerViewData {
+        private String deptName;
+        private String id;
+
+        public String getDeptName() {
+            return deptName;
+        }
+
+        public void setDeptName(String deptName) {
+            this.deptName = deptName;
+        }
+
+        public String getId() {
+            return id;
+        }
+
+        public void setId(String id) {
+            this.id = id;
+        }
+
+        @Override
+        public String getPickerViewText() {
+            return getDeptName();
+        }
+    }
+}

+ 70 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/MjEntity.java

@@ -0,0 +1,70 @@
+package com.xwkj.jcjcgz.mvp.model.entity;
+
+import com.contrarywind.interfaces.IPickerViewData;
+
+import java.util.List;
+
+public class MjEntity {
+    private int code;
+    private boolean success;
+    private List<Mj> data;
+    private String msg;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public List<Mj> getData() {
+        return data;
+    }
+
+    public void setData(List<Mj> data) {
+        this.data = data;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public static class Mj implements IPickerViewData {
+        private String name;
+        private String id;
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getId() {
+            return id;
+        }
+
+        public void setId(String id) {
+            this.id = id;
+        }
+
+        @Override
+        public String getPickerViewText() {
+            return getName();
+        }
+    }
+}

+ 40 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/NormalEntity.java

@@ -0,0 +1,40 @@
+package com.xwkj.jcjcgz.mvp.model.entity;
+
+public class NormalEntity {
+    private int code;
+    private boolean success;
+    private Object data;
+    private String msg;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 61 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/PickerResult.java

@@ -0,0 +1,61 @@
+package com.xwkj.jcjcgz.mvp.model.entity;
+
+public class PickerResult {
+    private String Lv1Id;
+    private String Lv1Value;
+    private int Lv1Index;
+
+    private String Lv2Id;
+    private String Lv2Value;
+    private int Lv2Index;
+
+    public String getLv1Id() {
+        return Lv1Id;
+    }
+
+    public void setLv1Id(String lv1Id) {
+        Lv1Id = lv1Id;
+    }
+
+    public String getLv1Value() {
+        return Lv1Value;
+    }
+
+    public void setLv1Value(String lv1Value) {
+        Lv1Value = lv1Value;
+    }
+
+
+    public String getLv2Id() {
+        return Lv2Id;
+    }
+
+    public void setLv2Id(String lv2Id) {
+        Lv2Id = lv2Id;
+    }
+
+    public String getLv2Value() {
+        return Lv2Value;
+    }
+
+    public void setLv2Value(String lv2Value) {
+        Lv2Value = lv2Value;
+    }
+
+    public int getLv1Index() {
+        return Lv1Index;
+    }
+
+    public void setLv1Index(int lv1Index) {
+        Lv1Index = lv1Index;
+    }
+
+    public int getLv2Index() {
+        return Lv2Index;
+    }
+
+    public void setLv2Index(int lv2Index) {
+        Lv2Index = lv2Index;
+    }
+}
+

+ 78 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/ShrInfo.java

@@ -0,0 +1,78 @@
+package com.xwkj.jcjcgz.mvp.model.entity;
+
+import java.io.Serializable;
+
+public class ShrInfo implements Serializable {
+    private String warnNumber;
+    private String xm;
+    private String sfzh;
+    private String sjh;
+    private String yhzh;
+    private String zfb;
+    private String wx;
+    private String qq;
+
+    public String getWarnNumber() {
+        return warnNumber;
+    }
+
+    public void setWarnNumber(String warnNumber) {
+        this.warnNumber = warnNumber;
+    }
+
+    public String getXm() {
+        return xm;
+    }
+
+    public void setXm(String xm) {
+        this.xm = xm;
+    }
+
+    public String getSfzh() {
+        return sfzh;
+    }
+
+    public void setSfzh(String sfzh) {
+        this.sfzh = sfzh;
+    }
+
+    public String getSjh() {
+        return sjh;
+    }
+
+    public void setSjh(String sjh) {
+        this.sjh = sjh;
+    }
+
+    public String getYhzh() {
+        return yhzh;
+    }
+
+    public void setYhzh(String yhzh) {
+        this.yhzh = yhzh;
+    }
+
+    public String getZfb() {
+        return zfb;
+    }
+
+    public void setZfb(String zfb) {
+        this.zfb = zfb;
+    }
+
+    public String getWx() {
+        return wx;
+    }
+
+    public void setWx(String wx) {
+        this.wx = wx;
+    }
+
+    public String getQq() {
+        return qq;
+    }
+
+    public void setQq(String qq) {
+        this.qq = qq;
+    }
+}

+ 261 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/TaskDxzpDetailEntity.java

@@ -0,0 +1,261 @@
+package com.xwkj.jcjcgz.mvp.model.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class TaskDxzpDetailEntity {
+    private int code;
+    private boolean success;
+    private TaskDxzpDetail data;
+    private String msg;
+
+    public TaskDxzpDetail getData() {
+        return data;
+    }
+
+    public void setData(TaskDxzpDetail data) {
+        this.data = data;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public static class TaskDxzpDetail implements Serializable {
+        /*"warnNumber":"",
+                "dataSourceDct":"",
+                "warnAccount":"18853304494",
+                "accountTypeDct":"",
+                "phoneregLocation":"吉林长春",
+                "ownedOperatorDct":"中国移动",
+                "warnLevelDct":"",
+                "riskFeaturesDct":"",
+                "lastContactTime":"最近联系时间",
+                "engineDiscoveryTime":"引擎发现时间",
+                "createTime":"",
+                "feedbackStatusDct":"",
+                "disposeUnit":"",
+                "tradesNumber":1,
+                "callNumber":"通话次数",
+                "callDuration":"通话时长",
+                "transactionTime":"交易时间",
+                "transactionAmount":"交易金额",
+                "transactionAddress":"交易地点",
+                "transactionResult":"交易结果",
+                "loginUrl":"",
+                "loginDuration":"",
+                "loginCount":"",
+                "victimName":"受害人姓名",
+                "victimIdcard":"受害人身份证号",
+                "victimPhone":"受害人手机号",
+                "victimBankNumber":"受害人银行卡号",
+                "victimAddress":"受害人活动地区",
+                "suspectName":"嫌疑人姓名",
+                "suspectIdcard":"嫌疑人身份证号",
+                "suspectPhone":"嫌疑人手机号",
+                "suspectBankNumber":"嫌疑人银行卡号",
+                "suspectAddress":"嫌疑人活动地区",
+                "warnDissuadeGuide":"",
+                "disposeProvinceCode":"",
+                "disposeCityCode":"",
+                "gsdProvinceCode":"",
+                "gsdCityCode":"",
+                "xfsj":"2024-07-12 15:26:58",
+                "riskFeatures":"冒充电商物流客服类",
+                "riskFeaturesIcon":"http://118.195.196.59:9000/jdrh/icon_type_service_16.png",
+                "fkJzrq":"2024-07-15",
+                "fkjg":"",
+                "gsdwList":[
+        {
+            "dwmc":"1123598813738675201",
+                "createTime":"2024-07-01 07:00:00"
+        }
+]*/
+
+        private String xfsj;
+        private String riskFeatures;
+        private String riskFeaturesIcon;
+        private String fkJzrq;
+        private String fkjg;
+        private String warnAccount;
+        private String warnNumber;
+        private String lastContactTime;
+        private String engineDiscoveryTime;
+        private String dataSourceDct;
+        private String victimBankNumber;
+        private List<Dwmc> gsdwList;
+        private String victimName;
+        private String victimIdcard;
+        private String victimAddress;
+        private String deptId;
+
+        public String getDeptId() {
+            return deptId;
+        }
+
+        public void setDeptId(String deptId) {
+            this.deptId = deptId;
+        }
+
+        public String getLastContactTime() {
+            return lastContactTime;
+        }
+
+        public void setLastContactTime(String lastContactTime) {
+            this.lastContactTime = lastContactTime;
+        }
+
+        public String getEngineDiscoveryTime() {
+            return engineDiscoveryTime;
+        }
+
+        public void setEngineDiscoveryTime(String engineDiscoveryTime) {
+            this.engineDiscoveryTime = engineDiscoveryTime;
+        }
+
+        public String getDataSourceDct() {
+            return dataSourceDct;
+        }
+
+        public void setDataSourceDct(String dataSourceDct) {
+            this.dataSourceDct = dataSourceDct;
+        }
+
+        public String getVictimBankNumber() {
+            return victimBankNumber;
+        }
+
+        public void setVictimBankNumber(String victimBankNumber) {
+            this.victimBankNumber = victimBankNumber;
+        }
+
+        public List<Dwmc> getGsdwList() {
+            return gsdwList;
+        }
+
+        public void setGsdwList(List<Dwmc> gsdwList) {
+            this.gsdwList = gsdwList;
+        }
+
+        public String getVictimName() {
+            return victimName;
+        }
+
+        public void setVictimName(String victimName) {
+            this.victimName = victimName;
+        }
+
+        public String getVictimIdcard() {
+            return victimIdcard;
+        }
+
+        public void setVictimIdcard(String victimIdcard) {
+            this.victimIdcard = victimIdcard;
+        }
+
+        public String getVictimAddress() {
+            return victimAddress;
+        }
+
+        public void setVictimAddress(String victimAddress) {
+            this.victimAddress = victimAddress;
+        }
+
+        public String getWarnNumber() {
+            return warnNumber;
+        }
+
+        public void setWarnNumber(String warnNumber) {
+            this.warnNumber = warnNumber;
+        }
+
+        public String getRiskFeaturesIcon() {
+            return riskFeaturesIcon;
+        }
+
+        public void setRiskFeaturesIcon(String riskFeaturesIcon) {
+            this.riskFeaturesIcon = riskFeaturesIcon;
+        }
+
+        public String getXfsj() {
+            return xfsj;
+        }
+
+        public void setXfsj(String xfsj) {
+            this.xfsj = xfsj;
+        }
+
+        public String getRiskFeatures() {
+            return riskFeatures;
+        }
+
+        public void setRiskFeatures(String riskFeatures) {
+            this.riskFeatures = riskFeatures;
+        }
+
+        public String getFkJzrq() {
+            return fkJzrq;
+        }
+
+        public void setFkJzrq(String fkJzrq) {
+            this.fkJzrq = fkJzrq;
+        }
+
+        public String getFkjg() {
+            return fkjg;
+        }
+
+        public void setFkjg(String fkjg) {
+            this.fkjg = fkjg;
+        }
+
+        public String getWarnAccount() {
+            return warnAccount;
+        }
+
+        public void setWarnAccount(String warnAccount) {
+            this.warnAccount = warnAccount;
+        }
+    }
+
+    public static class Dwmc {
+        private String dwmc;
+        private String createTime;
+
+        public String getDwmc() {
+            return dwmc;
+        }
+
+        public void setDwmc(String dwmc) {
+            this.dwmc = dwmc;
+        }
+
+        public String getCreateTime() {
+            return createTime;
+        }
+
+        public void setCreateTime(String createTime) {
+            this.createTime = createTime;
+        }
+    }
+}

+ 11 - 1
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/TaskDxzpEntity.java

@@ -1,5 +1,6 @@
 package com.xwkj.jcjcgz.mvp.model.entity;
 
+import java.io.Serializable;
 import java.util.List;
 
 public class TaskDxzpEntity {
@@ -52,13 +53,22 @@ public class TaskDxzpEntity {
         }
     }
 
-    public static class Task {
+    public static class Task implements Serializable {
         private String xfsj;
         private String riskFeatures;
         private String riskFeaturesIcon;
         private String fkJzrq;
         private String fkjg;
         private String warnAccount;
+        private String warnNumber;
+
+        public String getWarnNumber() {
+            return warnNumber;
+        }
+
+        public void setWarnNumber(String warnNumber) {
+            this.warnNumber = warnNumber;
+        }
 
         public String getRiskFeaturesIcon() {
             return riskFeaturesIcon;

+ 22 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/model/entity/Wfjmfj.java

@@ -0,0 +1,22 @@
+package com.xwkj.jcjcgz.mvp.model.entity;
+
+public class Wfjmfj {
+    private String warnNumber;
+    private String file;
+
+    public String getWarnNumber() {
+        return warnNumber;
+    }
+
+    public void setWarnNumber(String warnNumber) {
+        this.warnNumber = warnNumber;
+    }
+
+    public String getFile() {
+        return file;
+    }
+
+    public void setFile(String file) {
+        this.file = file;
+    }
+}

+ 53 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/presenter/AddShrPresenter.java

@@ -0,0 +1,53 @@
+package com.xwkj.jcjcgz.mvp.presenter;
+
+import android.app.Application;
+
+import com.jess.arms.integration.AppManager;
+import com.jess.arms.di.scope.ActivityScope;
+import com.jess.arms.mvp.BasePresenter;
+import com.jess.arms.http.imageloader.ImageLoader;
+
+import me.jessyan.rxerrorhandler.core.RxErrorHandler;
+
+import javax.inject.Inject;
+
+import com.xwkj.jcjcgz.mvp.contract.AddShrContract;
+
+
+/**
+ * ================================================
+ * Description:添加受害人
+ * <p>
+ * Created by MVPArmsTemplate on 07/23/2024 08:30
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@ActivityScope
+public class AddShrPresenter extends BasePresenter<AddShrContract.Model, AddShrContract.View> {
+    @Inject
+    RxErrorHandler mErrorHandler;
+    @Inject
+    Application mApplication;
+    @Inject
+    ImageLoader mImageLoader;
+    @Inject
+    AppManager mAppManager;
+
+    @Inject
+    public AddShrPresenter(AddShrContract.Model model, AddShrContract.View rootView) {
+        super(model, rootView);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mErrorHandler = null;
+        this.mAppManager = null;
+        this.mImageLoader = null;
+        this.mApplication = null;
+    }
+}

+ 128 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/presenter/DxzpDetailPresenter.java

@@ -0,0 +1,128 @@
+package com.xwkj.jcjcgz.mvp.presenter;
+
+import android.app.Application;
+
+import com.jess.arms.integration.AppManager;
+import com.jess.arms.di.scope.ActivityScope;
+import com.jess.arms.mvp.BasePresenter;
+import com.jess.arms.http.imageloader.ImageLoader;
+
+import me.jessyan.rxerrorhandler.core.RxErrorHandler;
+
+import javax.inject.Inject;
+
+import com.xwkj.jcjcgz.mvp.contract.DxzpDetailContract;
+import com.xwkj.jcjcgz.mvp.model.api.CommonInterFace;
+import com.xwkj.jcjcgz.mvp.model.api.ReqToBus;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/18/2024 14:41
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+@ActivityScope
+public class DxzpDetailPresenter extends BasePresenter<DxzpDetailContract.Model, DxzpDetailContract.View> {
+    @Inject
+    RxErrorHandler mErrorHandler;
+    @Inject
+    Application mApplication;
+    @Inject
+    ImageLoader mImageLoader;
+    @Inject
+    AppManager mAppManager;
+
+    @Inject
+    public DxzpDetailPresenter(DxzpDetailContract.Model model, DxzpDetailContract.View rootView) {
+        super(model, rootView);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        this.mErrorHandler = null;
+        this.mAppManager = null;
+        this.mImageLoader = null;
+        this.mApplication = null;
+    }
+
+    public void getDetail(Map<String,String> map){
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("mappingName", "/fzyj/detail");
+        map1.put("serviceName", "command-center");
+        map1.put("params", map);
+        ReqToBus.getInstance().init(mApplication).getRequestV2(map1, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.onSuccess(result);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+    }
+    public void getDic(Map<String,String> map){
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("mappingName", "/dict-biz/getDictionary");
+        map1.put("serviceName", "blade-system");
+        map1.put("params", map);
+        ReqToBus.getInstance().init(mApplication).getRequestV2(map1, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.getDictionarySuccess(result);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+    }
+    public void yj(Map<String,String> map){
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("mappingName", "/fzyj/yj");
+        map1.put("serviceName", "command-center");
+        map1.put("params", map);
+        ReqToBus.getInstance().init(mApplication).getRequestV2(map1, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.onYjSuccess(result);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+    }
+}

+ 81 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/presenter/FzQzFkPresenter.java

@@ -12,6 +12,11 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
 import javax.inject.Inject;
 
 import com.xwkj.jcjcgz.mvp.contract.FzQzFkContract;
+import com.xwkj.jcjcgz.mvp.model.api.CommonInterFace;
+import com.xwkj.jcjcgz.mvp.model.api.ReqToBus;
+
+import java.util.HashMap;
+import java.util.Map;
 
 
 /**
@@ -50,4 +55,80 @@ public class FzQzFkPresenter extends BasePresenter<FzQzFkContract.Model, FzQzFkC
         this.mImageLoader = null;
         this.mApplication = null;
     }
+
+    public void getGsdw(Map<String,String> map){
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("mappingName", "/dept/getByParentId");
+        map1.put("serviceName", "blade-system");
+        map1.put("params", map);
+        ReqToBus.getInstance().init(mApplication).getRequestV2(map1, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.onGetGsdwSuccess(result);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+    }
+
+    public void getMj(Map<String,String> map, String id){
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("mappingName", "/user/getByDeptId");
+        map1.put("serviceName", "blade-system");
+        map1.put("params", map);
+        ReqToBus instance = ReqToBus.getInstance();
+        instance.init(mApplication);
+        instance.getRequestV2(map1, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.onGetMjSuccess(result, id);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+    }
+
+    public void submit(Map<String,Object> map){
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("mappingName", "/fzyj/fk");
+        map1.put("serviceName", "command-center");
+        map1.put("params", map);
+        ReqToBus instance = ReqToBus.getInstance();
+        instance.init(mApplication);
+        instance.getRequestV2(map1, new CommonInterFace() {
+            @Override
+            public void onSuccess(String result) {
+                if (mRootView != null) {
+                    mRootView.onSubmitSuccess(result);
+                }
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+            }
+
+            @Override
+            public void onFinsh() {
+
+            }
+        });
+    }
 }

+ 244 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/AddShrActivity.java

@@ -0,0 +1,244 @@
+package com.xwkj.jcjcgz.mvp.ui.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.hjq.toast.ToastUtils;
+import com.jess.arms.base.BaseActivity;
+import com.jess.arms.di.component.AppComponent;
+import com.jess.arms.utils.ArmsUtils;
+
+import com.xwkj.jcjcgz.app.utils.KeyboardUtil;
+import com.xwkj.jcjcgz.di.component.DaggerAddShrComponent;
+import com.xwkj.jcjcgz.mvp.contract.AddShrContract;
+import com.xwkj.jcjcgz.mvp.model.entity.ShrInfo;
+import com.xwkj.jcjcgz.mvp.presenter.AddShrPresenter;
+
+import com.xwkj.jcjcgz.R;
+import com.zkjc.common.base.ZkjcBaseActivity;
+import com.zkjc.common.utils.MyKeyBoardView;
+import com.zkjc.common.utils.RegexUtils;
+import com.zkjc.common.view.CommonTitleBarV3;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+import static com.jess.arms.utils.Preconditions.checkNotNull;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p>
+ * Created by MVPArmsTemplate on 07/23/2024 08:30
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public class AddShrActivity extends ZkjcBaseActivity<AddShrPresenter> implements AddShrContract.View {
+    @BindView(R.id.et_name)
+    EditText etName;
+    @BindView(R.id.et_sfzh)
+    TextView etSfzh;
+    @BindView(R.id.et_phone)
+    EditText etPhone;
+    @BindView(R.id.et_yh)
+    EditText etYh;
+    @BindView(R.id.et_zfb)
+    EditText etZfb;
+    @BindView(R.id.et_wx)
+    EditText etWx;
+    @BindView(R.id.et_qq)
+    EditText etQQ;
+    @BindView(R.id.title_bar)
+    CommonTitleBarV3 titleBar;
+    @BindView(R.id.et_id_card)
+    EditText et_id_card;
+    @BindView(R.id.keyboard_view)
+    MyKeyBoardView keyboardView;
+    @BindView(R.id.ll_price_select)
+    LinearLayout ll_price_select;
+    private KeyboardUtil keyboardUtil;
+
+    @Override
+    public void setupActivityComponent(@NonNull AppComponent appComponent) {
+        DaggerAddShrComponent //如找不到该类,请编译一下项目
+                .builder()
+                .appComponent(appComponent)
+                .view(this)
+                .build()
+                .inject(this);
+    }
+
+    @Override
+    public int initView(@Nullable Bundle savedInstanceState) {
+        return R.layout.activity_add_shr; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+    }
+
+    @Override
+    public void initData(@Nullable Bundle savedInstanceState) {
+        titleBar.setTitle("添加受害人");
+        titleBar.setRight("删除");
+        titleBar.setRightOnClick(v -> {
+            Intent intent = new Intent();
+            intent.putExtra("delete", true);
+            intent.putExtra("position", getIntent().getIntExtra("position", 0));
+            setResult(RESULT_OK, intent);
+            finish();
+        });
+        ShrInfo info = (ShrInfo) getIntent().getSerializableExtra("info");
+        if (info != null) {
+            setData(info);
+        }
+
+
+        keyboardUtil = new KeyboardUtil(this);
+        //身份证键盘
+        keyboardUtil.setOnOkClick(new KeyboardUtil.OnOkClick() {
+            @Override
+            public void onOkClick() {
+                if (TextUtils.isEmpty(et_id_card.getText().toString())) {
+                    keyboardUtil.attachTo(et_id_card);
+                    ToastUtils.show("公民身份号码不能为空");
+                    return;
+                }
+                if (!RegexUtils.checkIdCard(et_id_card.getText().toString())) {
+                    keyboardUtil.attachTo(et_id_card);
+                    ToastUtils.show("您输入的身份证信息有误");
+                    return;
+                }
+
+                //requestData(et_id_card.getText().toString(), true);
+                etSfzh.setText(et_id_card.getText().toString().trim());
+                ll_price_select.setVisibility(View.GONE);
+                et_id_card.getText().clear();
+                Map<String, String> map = new HashMap<>();
+                map.put("rksfzh", etSfzh.getText().toString());
+//                mPresenter.verifyRy(map);
+//                mPresenter.getRyData(map);
+            }
+        });
+        ll_price_select.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                ll_price_select.setVisibility(View.GONE);
+            }
+        });
+        keyboardUtil.setOnCancelClick(new KeyboardUtil.onCancelClick() {
+            @Override
+            public void onCancellClick() {
+                ll_price_select.setVisibility(View.GONE);
+            }
+        });
+        //禁止点击输入框时弹出系统键盘
+        et_id_card.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                keyboardUtil.attachTo(et_id_card);
+                return false;
+            }
+        });
+
+        //身份证号输入框失去焦点隐藏
+        et_id_card.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+            @Override
+            public void onFocusChange(View view, boolean b) {
+                if (!b)
+                    ll_price_select.setVisibility(View.GONE);
+            }
+        });
+        etSfzh.setOnClickListener(view -> {
+            sdsr();
+        });
+    }
+
+    private void sdsr() {
+        keyboardUtil.attachTo(et_id_card);
+
+        et_id_card.setFocusable(true);
+        et_id_card.setFocusableInTouchMode(true);
+        et_id_card.requestFocus();
+        ll_price_select.setVisibility(View.VISIBLE);
+    }
+    private void setData(ShrInfo info) {
+        etName.setText(info.getXm());
+        etPhone.setText(info.getSjh());
+        etSfzh.setText(info.getSfzh());
+        etYh.setText(info.getYhzh());
+        etZfb.setText(info.getZfb());
+        etWx.setText(info.getWx());
+        etQQ.setText(info.getQq());
+    }
+
+    @Override
+    public void showLoading() {
+
+    }
+
+    @Override
+    public void hideLoading() {
+
+    }
+
+    @Override
+    public void showMessage(@NonNull String message) {
+        checkNotNull(message);
+        ArmsUtils.snackbarText(message);
+    }
+
+    @Override
+    public void launchActivity(@NonNull Intent intent) {
+        checkNotNull(intent);
+        ArmsUtils.startActivity(intent);
+    }
+
+    @Override
+    public void killMyself() {
+        finish();
+    }
+
+    @OnClick({R.id.tv_confirm})
+    public void onViewClick(View view) {
+        if (TextUtils.isEmpty(etName.getText().toString())) {
+            ToastUtils.show("请填写姓名");
+        } else {
+            ShrInfo info = new ShrInfo();
+            info.setWarnNumber(getIntent().getStringExtra("warnNumber"));
+            info.setXm(etName.getText().toString());
+            info.setSfzh(etSfzh.getText().toString());
+            info.setSjh(etPhone.getText().toString());
+            info.setYhzh(etYh.getText().toString());
+            info.setZfb(etZfb.getText().toString());
+            info.setWx(etWx.getText().toString());
+            info.setQq(etQQ.getText().toString());
+            Intent intent = new Intent();
+            intent.putExtra("info", info);
+            intent.putExtra("position", getIntent().getIntExtra("position", 0));
+            setResult(RESULT_OK, intent);
+            finish();
+        }
+    }
+}

+ 323 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/DxzpDetailActivity.java

@@ -0,0 +1,323 @@
+package com.xwkj.jcjcgz.mvp.ui.activity;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.android.flexbox.FlexboxLayout;
+import com.google.gson.Gson;
+import com.hjq.toast.ToastUtils;
+import com.jess.arms.di.component.AppComponent;
+import com.jess.arms.utils.ArmsUtils;
+
+import com.squareup.picasso.Picasso;
+import com.xwkj.jcjcgz.di.component.DaggerDxzpDetailComponent;
+import com.xwkj.jcjcgz.mvp.contract.DxzpDetailContract;
+import com.xwkj.jcjcgz.mvp.model.entity.DictionaryEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.NormalEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.TaskDxzpDetailEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.PickerResult;
+import com.xwkj.jcjcgz.mvp.presenter.DxzpDetailPresenter;
+
+import com.xwkj.jcjcgz.R;
+import com.xwkj.jcjcgz.mvp.ui.adapter.SjhAdapter;
+import com.xwkj.jcjcgz.mvp.ui.adapter.YjDwAdapter;
+import com.xwkj.jcjcgz.mvp.ui.fragment.YjFragment;
+import com.zkjc.common.base.ZkjcBaseActivity;
+import com.zkjc.common.view.CommonTitleBarV3;
+
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+import static com.jess.arms.utils.Preconditions.checkNotNull;
+
+
+/**
+ * ================================================
+ * Description:
+ * <p> 电信诈骗详情
+ * Created by MVPArmsTemplate on 07/18/2024 14:41
+ * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
+ * <a href="https://github.com/JessYanCoding">Follow me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
+ * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
+ * ================================================
+ */
+public class DxzpDetailActivity extends ZkjcBaseActivity<DxzpDetailPresenter> implements DxzpDetailContract.View, View.OnClickListener {
+
+    @BindView(R.id.dxzp_detail_tv_name)
+    TextView tvName;
+    @BindView(R.id.dxzp_detail_tv_time)
+    TextView tvTime;
+    @BindView(R.id.dxzp_detail_tv_id)
+    TextView tvId;
+    @BindView(R.id.dxzp_detail_iv_type)
+    ImageView ivType;
+    @BindView(R.id.dxzp_detail_tv_type)
+    TextView tvType;
+    @BindView(R.id.dxzp_detail_tv_sfzh)
+    TextView tvSfzh;
+    @BindView(R.id.dxzp_detail_tv_yh)
+    TextView tvYh;
+    @BindView(R.id.dxzp_detail_tv_area)
+    TextView tvArea;
+    @BindView(R.id.dxzp_detail_tv_ly)
+    TextView tvLy;
+    @BindView(R.id.dxzp_detail_tv_zjlx)
+    TextView tvZjlx;
+    @BindView(R.id.dxzp_detail_tv_yqfx)
+    TextView tvYqfx;
+    @BindView(R.id.dxzp_detail_layout_yj)
+    View layoutYj;
+    @BindView(R.id.dxzp_detail_tv_fk)
+    View tvFk;
+    @BindView(R.id.dxzp_detail_rv_yj)
+    RecyclerView rvYj;
+    @BindView(R.id.dxzp_detail_rv)
+    RecyclerView rvDh;
+    @BindView(R.id.title_bar)
+    CommonTitleBarV3 titleBar;
+    @BindView(R.id.flexboxLayout)
+    FlexboxLayout flexboxLayout;
+    private DictionaryEntity.Dictionary mData;
+    private TaskDxzpDetailEntity.TaskDxzpDetail mDetail;
+
+    @Override
+    public void setupActivityComponent(@NonNull AppComponent appComponent) {
+        DaggerDxzpDetailComponent //如找不到该类,请编译一下项目
+                .builder()
+                .appComponent(appComponent)
+                .view(this)
+                .build()
+                .inject(this);
+    }
+
+    @Override
+    public int initView(@Nullable Bundle savedInstanceState) {
+        return R.layout.activity_dxzp_detail; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
+    }
+
+    @Override
+    public void initData(@Nullable Bundle savedInstanceState) {
+        titleBar.setTitle("待反馈");
+        layoutYj.setOnClickListener(this);
+        Map<String, String> map = new HashMap<>();
+        map.put("warnNumber", getIntent().getStringExtra("id"));
+        mPresenter.getDetail(map);
+        mPresenter.getDic(new HashMap<>());
+        tvFk.setOnClickListener(this);
+    }
+
+    @Override
+    public void showLoading() {
+
+    }
+
+    @Override
+    public void hideLoading() {
+
+    }
+
+    @Override
+    public void showMessage(@NonNull String message) {
+        checkNotNull(message);
+        ArmsUtils.snackbarText(message);
+    }
+
+    @Override
+    public void launchActivity(@NonNull Intent intent) {
+        checkNotNull(intent);
+        ArmsUtils.startActivity(intent);
+    }
+
+    @Override
+    public void killMyself() {
+        finish();
+    }
+
+    @Override
+    public void onSuccess(String result) {
+        TaskDxzpDetailEntity taskEntity = new Gson().fromJson(result, TaskDxzpDetailEntity.class);
+        if (taskEntity.getCode() == 200) {
+            mDetail = taskEntity.getData();
+            String tip;
+            if (!TextUtils.isEmpty(mDetail.getFkjg())) {
+                tip = "";
+            } else {
+                tip = calculateTime(mDetail.getFkJzrq());
+            }
+            tvTime.setText("下发时间:" + mDetail.getXfsj() + tip);
+
+
+            tvType.setText(mDetail.getRiskFeatures());
+            Picasso.with(this).load(mDetail.getRiskFeaturesIcon()).into(ivType);
+            tvName.setText(mDetail.getVictimName());
+            tvSfzh.setText(mDetail.getVictimIdcard());
+            tvYh.setText(mDetail.getVictimBankNumber());
+            tvArea.setText(mDetail.getVictimAddress());
+            tvLy.setText(/*mDetail.getDataSourceDct()*/"96110");
+            tvZjlx.setText(mDetail.getLastContactTime());
+            tvYqfx.setText(mDetail.getEngineDiscoveryTime());
+            List<TaskDxzpDetailEntity.Dwmc> gsdwList = mDetail.getGsdwList();
+//            gsdwList.addAll(gsdwList);
+            rvYj.setLayoutManager(new LinearLayoutManager(this));
+            YjDwAdapter adapter = new YjDwAdapter(gsdwList);
+            rvYj.setAdapter(adapter);
+            /*if (gsdwList != null && !gsdwList.isEmpty()) {
+                TaskDxzpDetailEntity.Dwmc dwmc = gsdwList.get(0);
+                tvPcs.setText(dwmc.getDwmc());
+                tvGssj.setText(dwmc.getCreateTime());
+            }*/
+            List<String> strings = new ArrayList<>();
+            strings.add("吉林长春|中国联通");
+            for (int i = 0; i < strings.size(); i++) {
+                addChildToFlexboxLayout1(strings.get(i));
+            }
+            List<String> list = new ArrayList<>();
+            list.add("1");
+            SjhAdapter adapter1 = new SjhAdapter(list);
+            rvDh.setLayoutManager(new LinearLayoutManager(this));
+            rvDh.setAdapter(adapter1);
+        } else {
+            ToastUtils.show("获取数据出错,请退出页面重新进入");
+        }
+    }
+
+    /**
+     * 添加孩子到布局中 多选
+     */
+    private void addChildToFlexboxLayout1(final String String) {
+        View view = LayoutInflater.from(this).inflate(R.layout.item_yys, null);
+        TextView tv = view.findViewById(R.id.item_yys_tv_name);
+        tv.setText(String);
+        flexboxLayout.addView(view);
+    }
+
+    @Override
+    public void getDictionarySuccess(String result) {
+        DictionaryEntity entity = new Gson().fromJson(result, DictionaryEntity.class);
+        if (entity.getCode() == 200) {
+            mData = entity.getData();
+        } else {
+            ToastUtils.show("获取数据出错,请退出页面重新进入");
+        }
+    }
+
+    @Override
+    public void onYjSuccess(String result) {
+        NormalEntity entity = new Gson().fromJson(result, NormalEntity.class);
+        if (entity.getCode() == 200) {
+            ToastUtils.show("移交成功");
+            finish();
+        } else {
+            ToastUtils.show(entity.getMsg());
+        }
+    }
+
+    private String calculateTime(String end) {
+        if (TextUtils.isEmpty(end)) {
+            return "";
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date date = null;
+        try {
+            date = sdf.parse(end);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        if (date == null) {
+            return "";
+        }
+        long diffInMillies = new Date(date.getTime() + 1 * 24 * 60 * 60 * 1000).getTime() - System.currentTimeMillis();
+        if (diffInMillies < 0) {
+            return " (已超时)";
+        } else {
+            long num = diffInMillies / (1000 * 60 * 60 * 24);
+            if (num < 1) {
+                return " (需当天反馈)";
+            } else {
+                return " (需" + num + "天内反馈)";
+            }
+        }
+    }
+
+    @OnClick({R.id.dxzp_detail_iv_call})
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case R.id.dxzp_detail_layout_yj:{
+                if (mData != null) {
+                    YjFragment yjFragment = YjFragment.newInstance((ArrayList<DictionaryEntity.Gsdw>) mData.getSjfj(), (ArrayList<DictionaryEntity.Xzqh>) mData.getXzqh());
+                    yjFragment.setMyDialogListener(new YjFragment.MyDialogListener() {
+                        @Override
+                        public void onConfirmClick(PickerResult result, String yjsm) {
+                            Map<String, String> map = new HashMap<>();
+                            map.put("warnNumber", getIntent().getStringExtra("id"));
+                            map.put("targetUnitCode", result.getLv2Id());
+                            map.put("transferMsg", yjsm);
+                            mPresenter.yj(map);
+                        }
+                    });
+                    yjFragment.show(getSupportFragmentManager(), "yj");
+                    yjFragment.setCancelable(true);
+                } else {
+                    ToastUtils.show("数据未初始化完成,请稍后点击");
+                }
+            }
+                break;
+            case R.id.dxzp_detail_tv_fk: {
+                if (mData == null) {
+                    ToastUtils.show("数据未初始化完成,请稍后点击");
+                    return;
+                }
+                if (mDetail == null) {
+                    ToastUtils.show("数据未初始化完成,请稍后点击");
+                    return;
+                }
+                Intent intent = new Intent(DxzpDetailActivity.this, FzQzFkActivity.class);
+                intent.putExtra("dept_id", mDetail.getDeptId());
+                intent.putExtra("warnNumber", mDetail.getWarnNumber());
+                intent.putExtra("data", mData);
+                startActivityForResult(intent, 1);
+            }
+            break;
+            case R.id.dxzp_detail_iv_call: {
+                Uri uri = Uri.parse("tel:" + "123");
+                Intent intent = new Intent(Intent.ACTION_CALL);
+                intent.setData(uri);
+                startActivity(intent);
+            }
+            break;
+            default:
+                break;
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode == RESULT_OK) {
+            finish();
+        }
+    }
+}

+ 617 - 37
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/FzQzFkActivity.java

@@ -1,9 +1,17 @@
 package com.xwkj.jcjcgz.mvp.ui.activity;
 
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
 import android.view.View;
-import android.widget.Button;
+import android.view.WindowManager;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
@@ -12,17 +20,58 @@ import android.widget.TextView;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.appcompat.widget.SwitchCompat;
+import androidx.core.widget.NestedScrollView;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 
+import com.bumptech.glide.Glide;
+import com.google.gson.Gson;
+import com.hjq.toast.ToastUtils;
 import com.jess.arms.di.component.AppComponent;
 import com.jess.arms.utils.ArmsUtils;
+import com.lzy.imagepicker.ImagePicker;
+import com.lzy.imagepicker.bean.ImageItem;
+import com.lzy.imagepicker.ui.ImageGridActivity;
+import com.lzy.imagepicker.view.CropImageView;
 import com.xwkj.jcjcgz.R;
+import com.xwkj.jcjcgz.app.EventBusTags;
+import com.xwkj.jcjcgz.app.utils.GlideImageLoader;
+import com.xwkj.jcjcgz.app.view.AreaPicker;
+import com.xwkj.jcjcgz.app.view.DictionaryPicker;
+import com.xwkj.jcjcgz.app.view.MjPicker;
+import com.xwkj.jcjcgz.app.view.SmyjGsdwPicker;
 import com.xwkj.jcjcgz.di.component.DaggerFzQzFkComponent;
 import com.xwkj.jcjcgz.mvp.contract.FzQzFkContract;
+import com.xwkj.jcjcgz.mvp.model.entity.Area;
+import com.xwkj.jcjcgz.mvp.model.entity.DictionaryEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.GsdwEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.MjEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.NormalEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.ShrInfo;
+import com.xwkj.jcjcgz.mvp.model.entity.PickerResult;
+import com.xwkj.jcjcgz.mvp.model.entity.Wfjmfj;
 import com.xwkj.jcjcgz.mvp.presenter.FzQzFkPresenter;
+import com.xwkj.jcjcgz.mvp.ui.adapter.BaseRecycleAdapter;
+import com.xwkj.jcjcgz.mvp.ui.adapter.ShrAdapter;
+import com.xwkj.jcjcgz.mvp.ui.adapter.WdhlxAdapter;
 import com.zkjc.common.base.ZkjcBaseActivity;
+import com.zkjc.common.utils.BitmapUtils;
+import com.zkjc.common.view.CommonTitleBarV3;
+
+import org.greenrobot.eventbus.EventBus;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
 
 import butterknife.BindView;
-import butterknife.ButterKnife;
 import butterknife.OnClick;
 
 import static com.jess.arms.utils.Preconditions.checkNotNull;
@@ -41,9 +90,9 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
  * ================================================
  */
 public class FzQzFkActivity extends ZkjcBaseActivity<FzQzFkPresenter> implements FzQzFkContract.View {
+    private static final int REQUEST_ADD = 1;
+    private static final int REQUEST_MODIFY = 2;
 
-    @BindView(R.id.bt_back)
-    Button btBack;
     @BindView(R.id.view_wdhlx)
     View viewWdhlx;
     @BindView(R.id.rl_wdhlx)
@@ -52,34 +101,6 @@ public class FzQzFkActivity extends ZkjcBaseActivity<FzQzFkPresenter> implements
     View viewYdhlx;
     @BindView(R.id.rl_ydhlx)
     RelativeLayout rlYdhlx;
-    @BindView(R.id.rb_wdh_jj)
-    RadioButton rbWdhJj;
-    @BindView(R.id.rb_wdh_kh)
-    RadioButton rbWdhKh;
-    @BindView(R.id.rb_wdh_bzxq)
-    RadioButton rbWdhBzxq;
-    @BindView(R.id.rg_wdhlx)
-    RadioGroup rgWdhlx;
-    @BindView(R.id.rb_ydh_sddx)
-    RadioButton rbYdhSddx;
-    @BindView(R.id.rb_ydh_wsddx)
-    RadioButton rbYdhWsddx;
-    @BindView(R.id.rb_ydh_tdmh)
-    RadioButton rbYdhTdmh;
-    @BindView(R.id.rb_ydh_wfkxx)
-    RadioButton rbYdhWfkxx;
-    @BindView(R.id.rb_ydh_tdmh_jm)
-    RadioButton rbYdhTdmhJm;
-    @BindView(R.id.rb_ydh_wfk_jm)
-    RadioButton rbYdhWfkJm;
-    @BindView(R.id.rb_ydh_yba)
-    RadioButton rbYdhYba;
-    @BindView(R.id.rb_ydh_sjyhkhbf)
-    RadioButton rbYdhSjyhkhbf;
-    @BindView(R.id.rb_ydh_ydhqz_jm)
-    RadioButton rbYdhYdhqzJm;
-    @BindView(R.id.rg_ydhlx)
-    RadioGroup rgYdhlx;
     @BindView(R.id.tv_bt)
     TextView tvBt;
     @BindView(R.id.tv_fk)
@@ -96,6 +117,86 @@ public class FzQzFkActivity extends ZkjcBaseActivity<FzQzFkPresenter> implements
     TextView tv;
     @BindView(R.id.tv_mj)
     TextView tvMj;
+    @BindView(R.id.tv_pcs)
+    TextView tvPcs;
+    @BindView(R.id.rv_wdhlx)
+    RecyclerView rvWdhlx;
+    @BindView(R.id.rv_ydhlx)
+    RecyclerView rvYdhlx;
+    @BindView(R.id.title_bar)
+    CommonTitleBarV3 titleBar;
+    @BindView(R.id.switch_smyj)
+    SwitchCompat switchSmyj;
+    @BindView(R.id.layout_checked_xsmyj)
+    View layoutXsmyj;
+    @BindView(R.id.scrollView)
+    NestedScrollView scrollView;
+    @BindView(R.id.rv_fkjg)
+    RecyclerView rvFkjg;
+    @BindView(R.id.layout_more)
+    View layoutMore;
+    @BindView(R.id.et_fkqzje)
+    EditText etFkqzje;
+    @BindView(R.id.et_bpje)
+    EditText etBpje;
+    @BindView(R.id.tv_jmdz)
+    TextView tvJmdz;
+    @BindView(R.id.et_xxdz)
+    EditText etXxdz;
+    @BindView(R.id.tv_jmjg)
+    TextView tvJmjg;
+    @BindView(R.id.iv_camera)
+    ImageView ivCamera;
+    @BindView(R.id.tv_szlx)
+    TextView tvSzlx;
+    @BindView(R.id.tv_zplx)
+    TextView tvZplx;
+    @BindView(R.id.rv_shr)
+    RecyclerView rvShr;
+    @BindView(R.id.layout_smyj)
+    View layoutSmyj;
+    @BindView(R.id.layout_dhlx)
+    View layoutDhlx;
+    @BindView(R.id.rg_bj_no)
+    RadioButton rbBjNo;
+    @BindView(R.id.rg_hf_no)
+    RadioButton rbHfNo;
+    @BindView(R.id.et_fksm)
+    EditText etFksm;
+    @BindView(R.id.tv_fksm_count)
+    TextView tvFksmCount;
+    @BindView(R.id.tv_jg_bt)
+    TextView tvJgBt;
+    @BindView(R.id.layout_jmjg)
+    View layoutJmjg;
+    @BindView(R.id.layout_wfjmfj)
+    View layoutWfjmfj;
+    @BindView(R.id.iv_delete)
+    View ivDelete;
+    private DictionaryPicker mSjszxxPicker;
+    private PickerResult mSjszxxResult;
+    private DictionaryPicker mZplxPicker;
+    private PickerResult mZplxResult;
+    private DictionaryPicker mJmjgPicker;
+    private PickerResult mJmjgResult;
+    private DictionaryEntity.Dictionary mZd;
+    private ArrayList<ShrInfo> mShrList;
+    private ShrAdapter mShrAdapter;
+    private SmyjGsdwPicker mGsdwPicker;
+    private PickerResult mGsdwResult;
+    private MjPicker mMjPicker;
+    private PickerResult mMjResult;
+    private boolean wdhlx = true;
+    private List<DictionaryEntity.DictionaryItem> wdhlxData;
+    private WdhlxAdapter wdhlxAdapter;
+    private WdhlxAdapter ydhlxAdapter;
+    private List<DictionaryEntity.DictionaryItem> ydhlxData;
+    private WdhlxAdapter fkjgAdapter;
+    private List<DictionaryEntity.DictionaryItem> fkjgData;
+    private boolean isMj;
+    private String mPictureString;
+    private AreaPicker mXzqhPick;
+    private Area mXzqhResult;
 
     @Override
     public void setupActivityComponent(@NonNull AppComponent appComponent) {
@@ -113,10 +214,135 @@ public class FzQzFkActivity extends ZkjcBaseActivity<FzQzFkPresenter> implements
     }
 
     @Override
+    protected void onResume() {
+        super.onResume();
+        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+    }
+
+    @Override
     public void initData(@Nullable Bundle savedInstanceState) {
+        titleBar.setTitle("反馈");
+        SharedPreferences sp = getSharedPreferences("sys", MODE_PRIVATE);
+        String role_id = sp.getString("role_id", "");
+        isMj = "1677215233615192065".equals(role_id);
+        if (isMj) {
+            layoutDhlx.setVisibility(View.GONE);
+            layoutSmyj.setVisibility(View.GONE);
+            llYjdh.setVisibility(View.VISIBLE);
+            rlXtzs.setVisibility(View.GONE);
+            layoutMore.setVisibility(View.VISIBLE);
+//            tvJgBt.setVisibility(View.VISIBLE);
+            layoutJmjg.setVisibility(View.VISIBLE);
+        }
+        mZd = (DictionaryEntity.Dictionary) getIntent().getSerializableExtra("data");
+        setData(mZd);
+        switchSmyj.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if (isChecked) {
+                    layoutXsmyj.setVisibility(View.VISIBLE);
+                } else {
+                    layoutXsmyj.setVisibility(View.GONE);
+                }
+            }
+        });
+        mShrList = new ArrayList<>();
+        mShrAdapter = new ShrAdapter(mShrList);
+        mShrAdapter.setListener(new BaseRecycleAdapter.OnRecyclerViewListenerV2() {
+            @Override
+            public void onItemClick(View view, int position) {
+                ShrInfo info = mShrList.get(position);
+                switch (view.getId()) {
+                    case R.id.item_shr_iv_delete:
+                        mShrList.remove(position);
+                        mShrAdapter.notifyDataSetChanged();
+                        break;
+                    case R.id.item_shr_layout_root:
+                        Intent intent = new Intent(FzQzFkActivity.this, AddShrActivity.class);
+                        intent.putExtra("info", info);
+                        intent.putExtra("position", position);
+                        startActivityForResult(intent, REQUEST_MODIFY);
+                        break;
+                    default:
+                        break;
+                }
+            }
+
+            @Override
+            public boolean onItemLongClick(View view, int position) {
+                return false;
+            }
+        });
+        rvShr.setLayoutManager(new LinearLayoutManager(this));
+        rvShr.setAdapter(mShrAdapter);
+
+        etFksm.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
 
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                if (s != null) {
+                    if (s.length() > 200) {
+                        s.delete(2000, s.length());
+                        ToastUtils.show("超过最大输入字符");
+                    }
+                    tvFksmCount.setText(s.length() + "");
+                }
+            }
+        });
+
+        Map<String, String> map = new HashMap<>();
+        map.put("deptId", getIntent().getStringExtra("dept_id"));
+        mPresenter.getGsdw(map);
     }
 
+    private void setData(DictionaryEntity.Dictionary data) {
+        wdhlxData = data.getWdhlx();
+        rvWdhlx.setLayoutManager(new LinearLayoutManager(this));
+        wdhlxAdapter = new WdhlxAdapter(wdhlxData);
+        rvWdhlx.setAdapter(wdhlxAdapter);
+        ydhlxData = data.getYdhlx();
+        ydhlxAdapter = new WdhlxAdapter(ydhlxData);
+        rvYdhlx.setLayoutManager(new LinearLayoutManager(this));
+        rvYdhlx.setAdapter(ydhlxAdapter);
+        fkjgData = data.getFkjg();
+        fkjgAdapter = new WdhlxAdapter(fkjgData);
+        rvFkjg.setLayoutManager(new GridLayoutManager(this, 3));
+        rvFkjg.setAdapter(fkjgAdapter);
+/*        for (int i = 0; i < wdhlxData.size(); i++) {
+            DictionaryEntity.DictionaryItem item = wdhlxData.get(i);
+            View root = getLayoutInflater().inflate(R.layout.item_rb, null);
+
+            root.setTag(item);
+            rgWdhlx.addView(root, i, new RadioGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+        }*/
+
+        initImagePicker();
+
+    }
+
+    private void initImagePicker() {
+        ImagePicker imagePicker = ImagePicker.getInstance();
+        imagePicker.setImageLoader(new GlideImageLoader());   //设置图片加载器
+        imagePicker.setShowCamera(true);                      //显示拍照按钮
+        imagePicker.setCrop(true);                            //允许裁剪(单选才有效)
+        imagePicker.setSaveRectangle(true);                   //是否按矩形区域保存
+        imagePicker.setSelectLimit(1);              //选中数量限制
+        imagePicker.setMultiMode(false);                      //多选
+        imagePicker.setStyle(CropImageView.Style.RECTANGLE);  //裁剪框的形状
+        imagePicker.setFocusWidth(ArmsUtils.getScreenWidth(this));                       //裁剪框的宽度。单位像素(圆形自动取宽高最小值)
+        imagePicker.setFocusHeight(ArmsUtils.getScreenHeidth(this));                      //裁剪框的高度。单位像素(圆形自动取宽高最小值)
+        imagePicker.setOutPutX(800);                         //保存文件的宽度。单位像素
+        imagePicker.setOutPutY(800);                        //保存文件的高度。单位像素
+    }
     @Override
     public void showLoading() {
 
@@ -144,7 +370,8 @@ public class FzQzFkActivity extends ZkjcBaseActivity<FzQzFkPresenter> implements
         finish();
     }
 
-    @OnClick({R.id.rl_wdhlx, R.id.rl_ydhlx})
+    @OnClick({R.id.rl_wdhlx, R.id.rl_ydhlx, R.id.rl_xtzs, R.id.layout_add_shr, R.id.tv_szlx,
+            R.id.tv_zplx, R.id.tv_jmjg, R.id.tv_confirm, R.id.layout_jmdz, R.id.iv_camera, R.id.iv_delete})
     public void onViewClicked(View view) {
         switch (view.getId()) {
             case R.id.rl_wdhlx:
@@ -153,29 +380,382 @@ public class FzQzFkActivity extends ZkjcBaseActivity<FzQzFkPresenter> implements
             case R.id.rl_ydhlx:
                 changeUI(R.id.rl_ydhlx);
                 break;
+            case R.id.rl_xtzs:
+                view.setVisibility(View.GONE);
+                layoutMore.setVisibility(View.VISIBLE);
+                break;
+            case R.id.layout_add_shr: {
+
+                Intent intent = new Intent(this, AddShrActivity.class);
+                intent.putExtra("warnNumber", getIntent().getStringExtra("warnNumber"));
+                startActivityForResult(intent, REQUEST_ADD);
+            }
+                break;
+
+            case R.id.tv_szlx:
+                if (mZd != null) {
+                    if (mSjszxxPicker == null) {
+                        mSjszxxPicker = new DictionaryPicker(this, mZd.getSjzpxx());
+                        mSjszxxPicker.setListener(result -> {
+                            mSjszxxResult = result;
+                            tvSzlx.setText(mSjszxxResult.getLv1Value());
+                        });
+                    }
+                    mSjszxxPicker.showPickerView(mSjszxxResult, "请选择涉诈信息");
+                } else {
+                    ToastUtils.show("数据有误,请退出重新进入页面");
+                }
+
+
+                break;
+            case R.id.tv_zplx:
+                if (mZd != null) {
+                    if (mZplxPicker == null) {
+                        mZplxPicker = new DictionaryPicker(this, mZd.getZplx());
+                        mZplxPicker.setListener(result -> {
+                            mZplxResult = result;
+                            tvZplx.setText(mZplxResult.getLv1Value());
+                        });
+                    }
+                    mZplxPicker.showPickerView(mZplxResult, "请选择诈骗类型");
+                } else {
+                    ToastUtils.show("数据有误,请退出重新进入页面");
+                }
+
+                break;
+            case R.id.tv_jmjg:
+                if (mZd != null) {
+                    if (mJmjgPicker == null) {
+                        mJmjgPicker = new DictionaryPicker(this, mZd.getJmjg());
+                        mJmjgPicker.setListener(result -> {
+                            mJmjgResult = result;
+                            if ("3".equals(mJmjgResult.getLv1Id())) {
+                                layoutWfjmfj.setVisibility(View.VISIBLE);
+                            } else {
+                                layoutWfjmfj.setVisibility(View.GONE);
+                            }
+                            tvJmjg.setText(mJmjgResult.getLv1Value());
+                        });
+                    }
+                    mJmjgPicker.showPickerView(mJmjgResult, "请选择见面结果");
+                } else {
+                    ToastUtils.show("数据有误,请退出重新进入页面");
+                }
+
+                break;
+            case R.id.tv_confirm: {
+                submit();
+            }
+            break;
+            case R.id.layout_jmdz: {
+                if (mZd != null) {
+                    if (mXzqhPick == null) {
+                        mXzqhPick = new AreaPicker(this, mZd.getSqjd());
+                        mXzqhPick.setListener(result -> {
+                            mXzqhResult = result;
+                            tvJmdz.setText(mXzqhResult.getCity() + mXzqhResult.getArea() + mXzqhResult.getStreet());
+                        });
+                    }
+                    mXzqhPick.showPickerView(mXzqhResult, "请选择见面地区");
+                } else {
+                    ToastUtils.show("数据有误,请退出重新进入页面");
+                }
+            }
+            break;
+            case R.id.iv_camera: {
+                Intent intent = new Intent(this, ImageGridActivity.class);
+                startActivityForResult(intent, 1);
+            }
+            break;
+            case R.id.iv_delete: {
+                mPictureString = "";
+                ivCamera.setVisibility(View.GONE);
+                ivDelete.setVisibility(View.GONE);
+            }
+            break;
+            default:
+                break;
+        }
+    }
+
+    private void submit() {
+        try {
+            Map<String, Object> map = new HashMap<>();
+            map.put("warnNumber", getIntent().getStringExtra("warnNumber"));
+            if (isMj) {
+                if (mJmjgResult == null) {
+                    ToastUtils.show("请选择见面结果");
+                    return;
+                }
+                if (TextUtils.isEmpty(tvJmdz.getText())) {
+                    ToastUtils.show("请填写见面地址");
+                    return;
+                }
+                if ("3".equals(mJmjgResult.getLv1Id())) {
+                    if (TextUtils.isEmpty(mPictureString)) {
+                        ToastUtils.show("请上传无法见面附件");
+                        return;
+                    } else {
+                        Wfjmfj wfjmfj = new Wfjmfj();
+                        wfjmfj.setWarnNumber(getIntent().getStringExtra("warnNumber"));
+                        wfjmfj.setFile(mPictureString);
+                        map.put("fj", wfjmfj);
+                    }
+
+                }
+                if ("1".equals(mJmjgResult.getLv1Id())) {
+                    if (TextUtils.isEmpty(tvJmdz.getText())) {
+                        ToastUtils.show("请填写见面地区");
+                        return;
+                    }
+                    if (TextUtils.isEmpty(etXxdz.getText())) {
+                        ToastUtils.show("请填写详细地址");
+                        return;
+                    }
+                    map.put("jmdq", tvJmdz.getText().toString());
+                    map.put("jmdz", etXxdz.getText().toString());
+                }
+                map.put("smyj", "0");
+                DictionaryEntity.DictionaryItem dictionaryItem = fkjgData.get(fkjgAdapter.getSelectIndex());
+                map.put("fkjg", dictionaryItem.getLabel());
+                map.put("fkjgDm", dictionaryItem.getValue());
+
+                if (mSjszxxResult != null) {
+                    map.put("sjszxx", mSjszxxResult.getLv1Value());
+                    map.put("sjszxxDm", mSjszxxResult.getLv1Id());
+                }
+                map.put("sfbj", rbBjNo.isChecked() ? "0" : "1");
+                map.put("qzje", etFkqzje.getText().toString());
+                map.put("bpje", etBpje.getText().toString());
+                map.put("xyhf", rbHfNo.isChecked() ? "0" : "1");
+                if (mZplxResult != null) {
+                    map.put("zplx", mZplxResult.getLv1Value());
+                    map.put("zplxDm", mZplxResult.getLv1Id());
+                }
+
+                map.put("fksm", etFksm.getText().toString());
+                if (mJmjgResult != null) {
+                    map.put("jmjg", mJmjgResult.getLv1Value());
+                    map.put("jmjgDm", mJmjgResult.getLv1Id());
+
+                }
+
+
+                map.put("shrList", mShrList);
+
+            } else {
+                if (wdhlx) {
+                    if (mGsdwResult == null) {
+                        ToastUtils.show("请选择归属单位");
+                        return;
+                    }
+                    if (mMjResult == null) {
+                        ToastUtils.show("请选择民警");
+                        return;
+                    }
+                    DictionaryEntity.DictionaryItem item = wdhlxData.get(wdhlxAdapter.getSelectIndex());
+                    map.put("wdhlx", item.getLabel());
+                    map.put("wdhlxDm", item.getValue());
+                    map.put("smyj", "1");
+                    map.put("pcsId", mGsdwResult.getLv1Id());
+                    map.put("userId", mMjResult.getLv1Id());
+
+                } else {
+                    if (switchSmyj.isChecked()) {
+                        if (mGsdwResult == null) {
+                            ToastUtils.show("请选择归属单位");
+                            return;
+                        }
+                        if (mMjResult == null) {
+                            ToastUtils.show("请选择民警");
+                            return;
+                        }
+                        map.put("pcsId", mGsdwResult.getLv1Id());
+                        map.put("userId", mMjResult.getLv1Id());
+                        map.put("smyj", "1");
+                    } else {
+                        map.put("smyj", "0");
+                    }
+                    DictionaryEntity.DictionaryItem item = ydhlxData.get(ydhlxAdapter.getSelectIndex());
+                    map.put("ydhlx", item.getLabel());
+                    map.put("ydhlxDm", item.getValue());
+                    DictionaryEntity.DictionaryItem dictionaryItem = fkjgData.get(fkjgAdapter.getSelectIndex());
+                    map.put("fkjg", dictionaryItem.getLabel());
+                    map.put("fkjgDm", dictionaryItem.getValue());
+
+                    if (mSjszxxResult != null) {
+                        map.put("sjszxx", mSjszxxResult.getLv1Value());
+                        map.put("sjszxxDm", mSjszxxResult.getLv1Id());
+                    }
+                    map.put("sfbj", rbBjNo.isChecked() ? "0" : "1");
+                    map.put("qzje", etFkqzje.getText().toString());
+                    map.put("bpje", etBpje.getText().toString());
+                    map.put("xyhf", rbHfNo.isChecked() ? "0" : "1");
+                    if (mZplxResult != null) {
+                        map.put("zplx", mZplxResult.getLv1Value());
+                        map.put("zplxDm", mZplxResult.getLv1Id());
+                    }
+
+                    map.put("fksm", etFksm.getText().toString());
+                    if (mJmjgResult != null) {
+                        map.put("jmjg", mJmjgResult.getLv1Value());
+                        map.put("jmjgDm", mJmjgResult.getLv1Id());
+
+                    }
+                    map.put("jmdz", tvJmdz.getText().toString());
+
+
+                    map.put("shrList", mShrList);
+
+
+                }
+            }
+
+            mPresenter.submit(map);
+        } catch (Exception e) {
+            ToastUtils.show("数据不完整,请填写完稍后再点击");
         }
     }
 
     private void changeUI(int id) {
         switch (id) {
             case R.id.rl_wdhlx:
+                wdhlx = true;
                 rlWdhlx.setBackground(getDrawable(R.drawable.shape_select));
                 rlYdhlx.setBackground(getDrawable(R.drawable.shape_unselect));
-                rgWdhlx.setVisibility(View.VISIBLE);
-                rgYdhlx.setVisibility(View.GONE);
+                rvWdhlx.setVisibility(View.VISIBLE);
+                rvYdhlx.setVisibility(View.GONE);
                 llYjdh.setVisibility(View.GONE);
                 viewWdhlx.setVisibility(View.VISIBLE);
                 viewYdhlx.setVisibility(View.GONE);
+                switchSmyj.setVisibility(View.GONE);
+                switchSmyj.setChecked(true);
+                layoutXsmyj.setVisibility(View.VISIBLE);
                 break;
             case R.id.rl_ydhlx:
+                wdhlx = false;
                 rlYdhlx.setBackground(getDrawable(R.drawable.shape_select));
                 rlWdhlx.setBackground(getDrawable(R.drawable.shape_unselect));
-                rgYdhlx.setVisibility(View.VISIBLE);
-                rgWdhlx.setVisibility(View.GONE);
+                rvYdhlx.setVisibility(View.VISIBLE);
+                rvWdhlx.setVisibility(View.GONE);
                 llYjdh.setVisibility(View.VISIBLE);
                 viewWdhlx.setVisibility(View.GONE);
                 viewYdhlx.setVisibility(View.VISIBLE);
+                switchSmyj.setVisibility(View.VISIBLE);
+                switchSmyj.setChecked(false);
+                layoutXsmyj.setVisibility(View.GONE);
                 break;
         }
     }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode == RESULT_OK) {
+            switch (requestCode) {
+                case REQUEST_ADD: {
+                    ShrInfo info = (ShrInfo) data.getSerializableExtra("info");
+                    if (info != null) {
+                        mShrList.add(info);
+
+                        mShrAdapter.notifyDataSetChanged();
+                    }
+                }
+                    break;
+                case REQUEST_MODIFY: {
+                    ShrInfo info = (ShrInfo) data.getSerializableExtra("info");
+                    int position = data.getIntExtra("position", 0);
+                    boolean delete = data.getBooleanExtra("delete", false);
+                    if (delete) {
+                        mShrList.remove(position);
+                    } else {
+                        mShrList.set(position, info);
+                    }
+                    mShrAdapter.notifyDataSetChanged();
+                }
+                    break;
+                default:
+                    break;
+            }
+        }
+        if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {
+            //添加图片返回
+            if (data != null && requestCode == 1) {
+                ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS);
+                if (images != null && !images.isEmpty()) {
+                    ImageItem mItem = images.get(0);
+
+                    mPictureString = BitmapUtils.fileToBase64(new File(mItem.path));
+                    ivCamera.setVisibility(View.VISIBLE);
+                    ivDelete.setVisibility(View.VISIBLE);
+
+                    Log.e("eee", "mItem.path ===== " + mItem.path);
+                    Log.e("eee", "mPictureString ===== " + mPictureString);
+                    Glide.with(FzQzFkActivity.this).load(mItem.path).into(ivCamera);
+                }
+
+
+            }
+        }
+    }
+
+    @Override
+    public void onGetGsdwSuccess(String result) {
+        GsdwEntity entity = new Gson().fromJson(result, GsdwEntity.class);
+        if (entity.getCode() == 200) {
+            List<GsdwEntity.Gsdw> data = entity.getData();
+            tvPcs.setOnClickListener(v -> {
+                if (mGsdwPicker == null) {
+                    mGsdwPicker = new SmyjGsdwPicker(this, data);
+                    mGsdwPicker.setListener(pickResult -> {
+                        mGsdwResult = pickResult;
+                        tvPcs.setText(mGsdwResult.getLv1Value());
+                        Map<String, String> map = new HashMap<>();
+                        map.put("deptId", mGsdwResult.getLv1Id());
+                        mPresenter.getMj(map, mGsdwResult.getLv1Id());
+                        tvMj.setText("请选择民警");
+                        mMjResult = null;
+                    });
+                }
+                mGsdwPicker.showPickerView(mGsdwResult, "请选择归属单位");
+            });
+
+        } else {
+            ToastUtils.show(entity.getMsg());
+        }
+    }
+
+    @Override
+    public void onGetMjSuccess(String result, String id) {
+        MjEntity entity = new Gson().fromJson(result, MjEntity.class);
+        if (entity.getCode() == 200) {
+            tvMj.setOnClickListener(v -> {
+                if (mGsdwResult != null && !TextUtils.isEmpty(mGsdwResult.getLv1Id()) && mGsdwResult.getLv1Id().equals(id)) {
+                    List<MjEntity.Mj> data = entity.getData();
+                    mMjPicker = new MjPicker(this, data);
+                    mMjPicker.setListener(pickResult -> {
+                        mMjResult = pickResult;
+                        tvMj.setText(mMjResult.getLv1Value());
+                    });
+                    mMjPicker.showPickerView(mMjResult, "请选择民警");
+                }
+            });
+
+        } else {
+            ToastUtils.show(entity.getMsg());
+        }
+    }
+
+    @Override
+    public void onSubmitSuccess(String result) {
+        NormalEntity entity = new Gson().fromJson(result, NormalEntity.class);
+        if (entity.getCode() == 200) {
+            ToastUtils.show("反馈完成");
+            setResult(RESULT_OK);
+            finish();
+        } else {
+            ToastUtils.show(entity.getMsg());
+        }
+    }
+
 }

+ 13 - 1
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/LoginActivity.java

@@ -158,7 +158,18 @@ public class LoginActivity extends ZkjcBaseActivity<LoginPresenter> implements L
     public void killMyself() {
         finish();
     }
-    public void login(View view) {
+    public void mjLogin(View view) {
+        Map<String, String> map = new HashMap<>();
+        map.put("username", "csmj1");
+        map.put("password", /*MD5.md5("123456")*/"21232f297a57a5a743894a0e4a801fc3");
+        map.put("tenantId", "000000");
+        map.put("grant_type", "password");
+        map.put("scope", "all");
+        map.put("code", "asdf");
+
+        mPresenter.login(map);
+    }
+    public void adminLogin(View view) {
         Map<String, String> map = new HashMap<>();
         map.put("username", "admin");
         map.put("password", /*MD5.md5("123456")*/"21232f297a57a5a743894a0e4a801fc3");
@@ -192,6 +203,7 @@ public class LoginActivity extends ZkjcBaseActivity<LoginPresenter> implements L
                 edit.putString("dept_name", entity.getDept_name());
                 edit.putString("jh", entity.getPoliceNumber());
                 edit.putString("role_name", entity.getRole_name());
+                edit.putString("role_id", entity.getRole_id());
                 edit.putBoolean("isFirst", false);
 
                 edit.commit();

+ 2 - 2
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/MainActivity.java

@@ -54,7 +54,7 @@ public class MainActivity extends ZkjcBaseActivity<MainPresenter> implements Mai
     FrameLayout grzx;
     @BindView(R.id.ll_main_tab)
    public LinearLayout ll_main_tab;
-    private Test1Fragment homeFragment;
+    private RwzxFragment homeFragment;
     private GztFragment xqGkFragment;
     private GrzxFragment myFragment;
 
@@ -183,7 +183,7 @@ public class MainActivity extends ZkjcBaseActivity<MainPresenter> implements Mai
 
 
                 if (homeFragment == null) {
-                    homeFragment = new Test1Fragment();
+                    homeFragment = new RwzxFragment();
                     transaction.add(R.id.fl_container, homeFragment);
 
                 } else {

+ 123 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/activity/TestActivity.java

@@ -1,20 +1,41 @@
 package com.xwkj.jcjcgz.mvp.ui.activity;
 
+import android.app.Activity;
+import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
 import android.view.View;
+import android.widget.EditText;
+import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.github.mikephil.charting.formatter.IFillFormatter;
 import com.jess.arms.base.BaseActivity;
 import com.jess.arms.di.component.AppComponent;
 import com.jess.arms.utils.ArmsUtils;
+import com.mpush.api.Constants;
+import com.mpush.api.http.HttpCallback;
+import com.mpush.api.http.HttpMethod;
+import com.mpush.api.http.HttpRequest;
+import com.mpush.api.http.HttpResponse;
+import com.mpush.client.ClientConfig;
+import com.xwkj.jcjcgz.BuildConfig;
 import com.xwkj.jcjcgz.R;
+import com.xwkj.jcjcgz.app.push.MPush;
 import com.xwkj.jcjcgz.di.component.DaggerTestComponent;
 import com.xwkj.jcjcgz.mvp.contract.TestContract;
 import com.xwkj.jcjcgz.mvp.presenter.TestPresenter;
 
+import org.json.JSONObject;
+
+import java.util.concurrent.TimeUnit;
+
 import static com.jess.arms.utils.Preconditions.checkNotNull;
 
 
@@ -53,6 +74,11 @@ public class TestActivity extends BaseActivity<TestPresenter> implements TestCon
         findViewById(R.id.main).setOnClickListener(this);
         findViewById(R.id.app_list).setOnClickListener(this);
         findViewById(R.id.app_detail).setOnClickListener(this);
+        findViewById(R.id.dxzp_detail).setOnClickListener(this);
+        findViewById(R.id.dxzp_fk).setOnClickListener(this);
+        findViewById(R.id.push_init).setOnClickListener(this);
+        findViewById(R.id.push_info).setOnClickListener(this);
+        findViewById(R.id.add_shr).setOnClickListener(this);
     }
 
     @Override
@@ -84,6 +110,9 @@ public class TestActivity extends BaseActivity<TestPresenter> implements TestCon
 
     @Override
     public void onClick(View v) {
+
+        SharedPreferences sp = getSharedPreferences("sys", MODE_PRIVATE);
+        String userId = sp.getString("userId", "");
         switch (v.getId()) {
             case R.id.login:
                 startActivity(new Intent(TestActivity.this, LoginActivity.class));
@@ -97,8 +126,102 @@ public class TestActivity extends BaseActivity<TestPresenter> implements TestCon
             case R.id.app_detail:
                 startActivity(new Intent(TestActivity.this, AppDetailActivity.class));
                 break;
+            case R.id.add_shr:
+                startActivity(new Intent(TestActivity.this, AddShrActivity.class));
+                break;
+            case R.id.dxzp_detail:
+                Intent intent = new Intent(TestActivity.this, DxzpDetailActivity.class);
+                intent.putExtra("id", 1 + "");
+                startActivity(intent);
+                break;
+            case R.id.dxzp_fk:
+                startActivity(new Intent(TestActivity.this, FzQzFkActivity.class));
+                break;
+            case R.id.push_init:
+                startPush(userId);
+                break;
+            case R.id.push_info:
+                try {
+                    sendPush(userId, "推送内容");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                break;
             default:
                 break;
         }
     }
+
+    private void initPush(String allocServer, String userId) {
+        //公钥有服务端提供和私钥对应
+        String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCghPCWCobG8nTD24juwSVataW7iViRxcTkey/B792VZEhuHjQvA3cAJgx2Lv8GnX8NIoShZtoCg3Cx6ecs+VEPD2fBcg2L4JK7xldGpOJ3ONEAyVsLOttXZtNXvyDZRijiErQALMTorcgi79M5uVX9/jMv2Ggb2XAeZhlLD28fHwIDAQAB";
+
+        ClientConfig cc = ClientConfig.build()
+                .setPublicKey(publicKey)
+                .setAllotServer(allocServer)
+                .setDeviceId(getDeviceId())
+                .setClientVersion(BuildConfig.VERSION_NAME)
+                .setEnableHttpProxy(true)
+                .setUserId(userId);
+        MPush.I.checkInit(getApplicationContext()).setClientConfig(cc);
+    }
+
+    private String getDeviceId() {
+        if (true) {
+            return "1";
+        }
+        TelephonyManager tm = (TelephonyManager) this.getSystemService(Activity.TELEPHONY_SERVICE);
+        String deviceId = tm.getDeviceId();
+        if (TextUtils.isEmpty(deviceId)) {
+            String time = Long.toString((System.currentTimeMillis() / (1000 * 60 * 60)));
+            deviceId = time + time;
+        }
+        Log.e("eee", "deviceId ====== " + deviceId);
+        return deviceId;
+    }
+
+    private void bindUser(String userId) {
+        MPush.I.bindAccount(userId, "mpush:" + (int) (Math.random() * 10));
+    }
+
+    public void startPush(String userId) {
+        initPush("http://192.168.0.216:9999", userId);
+
+        MPush.I.checkInit(this.getApplication()).startPush();
+    }
+
+    public void sendPush(String to, String content) throws Exception {
+
+
+        JSONObject params = new JSONObject();
+        params.put("userId", to);
+        params.put("hello", content);
+
+        final Context context = this.getApplicationContext();
+        HttpRequest request = new HttpRequest(HttpMethod.POST, "http://192.168.0.216:9999" + "/push");
+        byte[] body = params.toString().getBytes(Constants.UTF_8);
+        request.setBody(body, "application/json; charset=utf-8");
+        request.setTimeout((int) TimeUnit.SECONDS.toMillis(10));
+        request.setCallback(new HttpCallback() {
+            @Override
+            public void onResponse(final HttpResponse httpResponse) {
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (httpResponse.statusCode == 200) {
+                            Toast.makeText(context, new String(httpResponse.body, Constants.UTF_8), Toast.LENGTH_SHORT).show();
+                        } else {
+                            Toast.makeText(context, httpResponse.reasonPhrase, Toast.LENGTH_SHORT).show();
+                        }
+                    }
+                });
+            }
+
+            @Override
+            public void onCancelled() {
+
+            }
+        });
+        MPush.I.sendHttpProxy(request);
+    }
 }

+ 41 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/ShrAdapter.java

@@ -0,0 +1,41 @@
+package com.xwkj.jcjcgz.mvp.ui.adapter;
+
+import com.xwkj.jcjcgz.R;
+import com.xwkj.jcjcgz.mvp.model.entity.ShrInfo;
+
+import java.util.List;
+
+public class ShrAdapter extends BaseRecycleAdapter<ShrInfo> {
+    private OnRecyclerViewListenerV2 mListener;
+
+    public ShrAdapter(List<ShrInfo> datas) {
+        super(datas);
+    }
+
+    @Override
+    protected void bindData(BaseViewHolder holder, int position) {
+        ShrInfo info = datas.get(position);
+        holder.setOnItemClickListenerV2(R.id.item_shr_layout_root, position, mListener);
+        holder.setOnItemClickListenerV2(R.id.item_shr_iv_delete, position, mListener);
+        setItemText(holder.getView(R.id.item_shr_tv_name), info.getXm());
+        setItemText(holder.getView(R.id.item_shr_tv_sfzh), info.getSfzh());
+        setItemText(holder.getView(R.id.item_shr_tv_phone), info.getSjh());
+        setItemText(holder.getView(R.id.item_shr_tv_yh), info.getYhzh());
+        setItemText(holder.getView(R.id.item_shr_tv_zfb), info.getZfb());
+        setItemText(holder.getView(R.id.item_shr_tv_wx), info.getWx());
+        setItemText(holder.getView(R.id.item_shr_tv_qq), info.getQq());
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.item_shr;
+    }
+
+    public OnRecyclerViewListenerV2 getListener() {
+        return mListener;
+    }
+
+    public void setListener(OnRecyclerViewListenerV2 listener) {
+        this.mListener = listener;
+    }
+}

+ 21 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/SjhAdapter.java

@@ -0,0 +1,21 @@
+package com.xwkj.jcjcgz.mvp.ui.adapter;
+
+import com.xwkj.jcjcgz.R;
+
+import java.util.List;
+
+public class SjhAdapter extends BaseRecycleAdapter<String> {
+    public SjhAdapter(List<String> datas) {
+        super(datas);
+    }
+
+    @Override
+    protected void bindData(BaseViewHolder holder, int position) {
+
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.item_sjh;
+    }
+}

+ 12 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/TaskDxzpAdapter.java

@@ -25,6 +25,9 @@ public class TaskDxzpAdapter extends BaseRecycleAdapter<TaskDxzpEntity.Task> {
     @Override
     protected void bindData(BaseViewHolder holder, int position) {
         TaskDxzpEntity.Task task = datas.get(position);
+        holder.setOnItemClickListener(R.id.item_dxzp_layout_root, position, onRecyclerViewListener);
+        holder.setOnItemLongClickListener(R.id.item_dxzp_layout_root, position, onRecyclerViewListener);
+
         if (!TextUtils.isEmpty(task.getWarnAccount()) && task.getWarnAccount().length() == 18) {
             setItemImageView(holder.getView(R.id.item_dxzp_iv_phone), R.drawable.icon_phone);
             setItemText(holder.getView(R.id.item_dxzp_tv_phone), StringUtil.replaceId(task.getWarnAccount()));
@@ -46,6 +49,9 @@ public class TaskDxzpAdapter extends BaseRecycleAdapter<TaskDxzpEntity.Task> {
     }
 
     private String calculateTime(String end) {
+        if (TextUtils.isEmpty(end)) {
+            return "";
+        }
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         Date date = null;
         try {
@@ -73,4 +79,10 @@ public class TaskDxzpAdapter extends BaseRecycleAdapter<TaskDxzpEntity.Task> {
     public int getLayoutId() {
         return R.layout.item_dxzp;
     }
+
+    private OnRecyclerViewListener onRecyclerViewListener;
+
+    public void setOnRecyclerViewListener(OnRecyclerViewListener onRecyclerViewListener) {
+        this.onRecyclerViewListener = onRecyclerViewListener;
+    }
 }

+ 36 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/WdhlxAdapter.java

@@ -0,0 +1,36 @@
+package com.xwkj.jcjcgz.mvp.ui.adapter;
+
+import android.view.View;
+
+import com.xwkj.jcjcgz.R;
+import com.xwkj.jcjcgz.mvp.model.entity.DictionaryEntity;
+
+import java.util.List;
+
+public class WdhlxAdapter extends BaseRecycleAdapter<DictionaryEntity.DictionaryItem> {
+    private int mSelectIndex = 0;
+    public WdhlxAdapter(List<DictionaryEntity.DictionaryItem> datas) {
+        super(datas);
+    }
+
+    @Override
+    protected void bindData(BaseViewHolder holder, int position) {
+        DictionaryEntity.DictionaryItem item = datas.get(position);
+        View view = holder.getView(R.id.item_root);
+        view.setOnClickListener(v -> {
+            mSelectIndex = position;
+            notifyDataSetChanged();
+        });
+        setItemText(holder.getView(R.id.tv_rb), item.getLabel());
+        view.setSelected(mSelectIndex == position);
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.item_rb;
+    }
+
+    public int getSelectIndex() {
+        return mSelectIndex;
+    }
+}

+ 36 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/adapter/YjDwAdapter.java

@@ -0,0 +1,36 @@
+package com.xwkj.jcjcgz.mvp.ui.adapter;
+
+import android.view.View;
+
+import com.xwkj.jcjcgz.R;
+import com.xwkj.jcjcgz.mvp.model.entity.TaskDxzpDetailEntity;
+
+import java.util.List;
+
+public class YjDwAdapter extends BaseRecycleAdapter<TaskDxzpDetailEntity.Dwmc> {
+    public YjDwAdapter(List<TaskDxzpDetailEntity.Dwmc> datas) {
+        super(datas);
+    }
+
+    @Override
+    protected void bindData(BaseViewHolder holder, int position) {
+        TaskDxzpDetailEntity.Dwmc dwmc = datas.get(position);
+        if (position == 0) {
+            setItemImageView(holder.getView(R.id.item_yj_iv_status), R.drawable.icon_ing_blue);
+        } else {
+            setItemImageView(holder.getView(R.id.item_yj_iv_status), R.drawable.icon_ing_gray);
+        }
+        setItemText(holder.getView(R.id.item_yj_tv_pcs), dwmc.getDwmc());
+        setItemText(holder.getView(R.id.item_yj_tv_gssj), dwmc.getCreateTime());
+        if (position == datas.size() - 1) {
+            holder.getView(R.id.item_yj_divider).setVisibility(View.INVISIBLE);
+        } else {
+            holder.getView(R.id.item_yj_divider).setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.item_yj;
+    }
+}

+ 27 - 3
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/fragment/TaskDxzpFragment.java

@@ -34,6 +34,8 @@ import com.xwkj.jcjcgz.mvp.model.entity.TaskEntity;
 import com.xwkj.jcjcgz.mvp.presenter.TaskDxzpPresenter;
 
 import com.xwkj.jcjcgz.R;
+import com.xwkj.jcjcgz.mvp.ui.activity.DxzpDetailActivity;
+import com.xwkj.jcjcgz.mvp.ui.adapter.BaseRecycleAdapter;
 import com.xwkj.jcjcgz.mvp.ui.adapter.TaskAdapter;
 import com.xwkj.jcjcgz.mvp.ui.adapter.TaskDxzpAdapter;
 
@@ -104,6 +106,20 @@ public class TaskDxzpFragment extends BaseFragment<TaskDxzpPresenter> implements
         rv.setLayoutManager(new LinearLayoutManager(getActivity()));
         list = new ArrayList<>();
         mAdapter = new TaskDxzpAdapter(list);
+        mAdapter.setOnRecyclerViewListener(new BaseRecycleAdapter.OnRecyclerViewListener() {
+            @Override
+            public void onItemClick(int position) {
+                TaskDxzpEntity.Task task = list.get(position);
+                Intent intent = new Intent(getActivity(), DxzpDetailActivity.class);
+                intent.putExtra("id", task.getWarnNumber());
+                startActivity(intent);
+            }
+
+            @Override
+            public boolean onItemLongClick(int position) {
+                return false;
+            }
+        });
         rv.setAdapter(mAdapter);
         requestData(pageNo = 1, pageSize);
     }
@@ -172,6 +188,14 @@ public class TaskDxzpFragment extends BaseFragment<TaskDxzpPresenter> implements
     }
 
     @Override
+    public void onResume() {
+        super.onResume();
+        list.clear();
+        mAdapter.notifyDataSetChanged();
+        requestData(pageNo = 1, pageSize);
+    }
+
+    @Override
     public void killMyself() {
 
     }
@@ -207,9 +231,9 @@ public class TaskDxzpFragment extends BaseFragment<TaskDxzpPresenter> implements
         if (taskEntity.getCode() == 200) {
             List<TaskDxzpEntity.Task> records = taskEntity.getData().getRecords();
             if (records.size() > 0 && records != null) {
-                list.addAll(records);
-                list.addAll(records);
-                list.addAll(records);
+//                list.addAll(records);
+//                list.addAll(records);
+//                list.addAll(records);
                 list.addAll(records);
                 mAdapter.notifyDataSetChanged();
             } else {

+ 3 - 3
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/fragment/TaskTypeFragment.java

@@ -79,14 +79,14 @@ public class TaskTypeFragment extends BaseFragment<TaskTypePresenter> implements
 
     @Override
     public void initData(@Nullable Bundle savedInstanceState) {
-//        ArrayList<ChannelEntity.Task> tasks = (ArrayList<ChannelEntity.Task>) getArguments().getSerializable("tasks");
-        ArrayList<ChannelEntity.Task> tasks = new ArrayList<>();
+        ArrayList<ChannelEntity.Task> tasks = (ArrayList<ChannelEntity.Task>) getArguments().getSerializable("tasks");
+       /* ArrayList<ChannelEntity.Task> tasks = new ArrayList<>();
         for (int i = 0; i < 3; i++) {
             ChannelEntity.Task task = new ChannelEntity.Task();
             task.setDictValue(i + " ::::: " + i);
             task.setNum(i);
             tasks.add(task);
-        }
+        }*/
         if (!tasks.isEmpty()) {
             initFragment(tasks);
         }

+ 126 - 0
app/src/main/java/com/xwkj/jcjcgz/mvp/ui/fragment/YjFragment.java

@@ -0,0 +1,126 @@
+package com.xwkj.jcjcgz.mvp.ui.fragment;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.hjq.toast.ToastUtils;
+import com.xwkj.jcjcgz.R;
+import com.xwkj.jcjcgz.app.view.GsdwPicker;
+import com.xwkj.jcjcgz.app.view.XzqhPicker;
+import com.xwkj.jcjcgz.mvp.model.entity.DictionaryEntity;
+import com.xwkj.jcjcgz.mvp.model.entity.PickerResult;
+import com.zkjc.common.base.BaseBottomSheetDialogFragment;
+
+import java.util.ArrayList;
+
+public class YjFragment extends BaseBottomSheetDialogFragment {
+
+    private GsdwPicker mGsdwPicker;
+    private XzqhPicker mXzqhPicker;
+    private PickerResult mKsResult;
+    private boolean mSelectKs;
+    private PickerResult mSnResult;
+
+    public static YjFragment newInstance(ArrayList<DictionaryEntity.Gsdw> gsdws, ArrayList<DictionaryEntity.Xzqh> xzqhs) {
+        YjFragment fragment = new YjFragment();
+        Bundle bundle = new Bundle();
+        bundle.putSerializable("gsdws", gsdws);
+        bundle.putSerializable("xzqhs", xzqhs);
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+
+
+    @Override
+    protected int getLayoutRes() {
+        return R.layout.pop_yj;
+    }
+
+    @Override
+    protected void initData(Bundle savedInstanceState) {
+        ArrayList<DictionaryEntity.Gsdw> list = (ArrayList<DictionaryEntity.Gsdw>) getArguments().getSerializable("gsdws");
+        ArrayList<DictionaryEntity.Xzqh> xzqhs = (ArrayList<DictionaryEntity.Xzqh>) getArguments().getSerializable("xzqhs");
+        View closed = mRootView.findViewById(R.id.pop_yj_layout_closed);
+        closed.setOnClickListener(v -> dismiss());
+        View confirm = mRootView.findViewById(R.id.pop_select_jx_tv_confirm);
+        View layoutKs = mRootView.findViewById(R.id.pop_yj_layout_ks);
+        TextView tvKs = mRootView.findViewById(R.id.pop_yj_tv_ks);
+        View ivKs = mRootView.findViewById(R.id.pop_yj_iv_ks);
+        View layoutSn = mRootView.findViewById(R.id.pop_yj_layout_sn);
+        TextView tvSn = mRootView.findViewById(R.id.pop_yj_tv_sn);
+        View ivSn = mRootView.findViewById(R.id.pop_yj_iv_sn);
+        View layoutGsss = mRootView.findViewById(R.id.pop_yj_layout_gsss);
+        View layoutGsdw = mRootView.findViewById(R.id.pop_yj_layout_gsdw);
+        TextView tvGsdw = mRootView.findViewById(R.id.pop_yj_tv_gsdw);
+        TextView tvGsss = mRootView.findViewById(R.id.pop_yj_gsss_tv_gsss);
+        EditText etYjsm = mRootView.findViewById(R.id.et_yjsm);
+        layoutKs.setOnClickListener(v -> {
+            mSelectKs = true;
+            ivKs.setVisibility(View.VISIBLE);
+            ivSn.setVisibility(View.GONE);
+            layoutKs.setBackgroundResource(R.drawable.bg_shape_white_top_corner8);
+            layoutSn.setBackgroundResource(0);
+            layoutGsdw.setVisibility(View.GONE);
+            layoutGsss.setVisibility(View.VISIBLE);
+        });
+        layoutSn.setOnClickListener(v -> {
+            mSelectKs = false;
+            ivKs.setVisibility(View.GONE);
+            ivSn.setVisibility(View.VISIBLE);
+            layoutKs.setBackgroundResource(0);
+            layoutSn.setBackgroundResource(R.drawable.bg_shape_white_top_corner8);
+            layoutGsdw.setVisibility(View.VISIBLE);
+            layoutGsss.setVisibility(View.GONE);
+        });
+        layoutGsdw.setOnClickListener(v -> {
+            if (mGsdwPicker == null) {
+                mGsdwPicker = new GsdwPicker(getActivity(), list);
+                mGsdwPicker.setListener(result -> {
+                    mSnResult = result;
+                    tvGsdw.setText(mSnResult.getLv1Value() + mSnResult.getLv2Value());
+                });
+            }
+            mGsdwPicker.showPickerView(mSnResult);
+        });
+        layoutGsss.setOnClickListener(v -> {
+            if (mXzqhPicker == null) {
+                mXzqhPicker = new XzqhPicker(getActivity(), xzqhs);
+                mXzqhPicker.setListener(result -> {
+                    mKsResult = result;
+                    tvGsss.setText(mKsResult.getLv1Value() + mKsResult.getLv2Value());
+                });
+            }
+            mXzqhPicker.showPickerView(mKsResult);
+        });
+        layoutSn.performClick();
+        confirm.setOnClickListener(v -> {
+            if (myDialogListener != null) {
+                if (mSelectKs) {
+                    if (mKsResult != null) {
+                        myDialogListener.onConfirmClick(mKsResult, etYjsm.getText().toString());
+                    } else {
+                        ToastUtils.show("请先选择归属省市");
+                    }
+                } else {
+                    if (mSnResult != null) {
+                        myDialogListener.onConfirmClick(mSnResult, etYjsm.getText().toString());
+                    } else {
+                        ToastUtils.show("请先选择归属单位");
+                    }
+                }
+            }
+        });
+    }
+
+    private MyDialogListener myDialogListener;
+
+    public void setMyDialogListener(MyDialogListener myDialogListener) {
+        this.myDialogListener = myDialogListener;
+    }
+
+    public interface MyDialogListener {
+        void onConfirmClick(PickerResult string, String yjsm);
+    }
+}

BIN
app/src/main/res/drawable-xxxhdpi/bj_big.png


BIN
app/src/main/res/drawable-xxxhdpi/btn_delete_gray.png


BIN
app/src/main/res/drawable-xxxhdpi/btn_phone_blue.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_business.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_camera.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_closed.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_delete.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_ing_blue.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_ing_gray.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_plus_blue.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_transfer.png


BIN
app/src/main/res/drawable-xxxhdpi/icon_victimize.png


BIN
app/src/main/res/drawable-xxxhdpi/img_keyboard_normal.9.png


BIN
app/src/main/res/drawable-xxxhdpi/img_keyboard_pressed.9.png


+ 5 - 0
app/src/main/res/drawable/bg_keyboardview.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/img_keyboard_normal" android:state_pressed="true" />
+    <item android:drawable="@drawable/img_keyboard_pressed" />
+</selector>

+ 5 - 0
app/src/main/res/drawable/bg_shape_blue_corner2.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient android:type="linear" android:useLevel="true" android:startColor="#ff6f87ff" android:endColor="#ff106dff" android:angle="270" />
+    <corners android:radius="2dp" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/bg_shape_blue_corner8.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/blue" />
+    <corners android:radius="8dp" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/bg_shape_f0f0f0_top_corner8.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#f0f0f0" />
+    <corners android:topLeftRadius="8dp" android:topRightRadius="8dp" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/bg_shape_f5f5f5_corner6.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#f5f5f5" />
+    <corners android:radius="6dp" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/bg_shape_f8f8f8_corner8.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#f8f8f8" />
+    <corners android:radius="8dp" />
+</shape>

+ 6 - 0
app/src/main/res/drawable/bg_shape_stroke1_cccccc_corner4.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/transparent" />
+    <stroke android:color="#CCCCCC" android:width="1dp" android:dashGap="1dp" android:dashWidth="2dp"/>
+    <corners android:radius="4dp" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/bg_shape_white_top_corner8.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/white" />
+    <corners android:topLeftRadius="8dp" android:topRightRadius="8dp" />
+</shape>

+ 14 - 0
app/src/main/res/drawable/dialog_white.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+
+    <solid android:color="#ffffffff" />
+    <corners
+        android:bottomLeftRadius="0dp"
+        android:bottomRightRadius="0dp"
+        android:topLeftRadius="12dp"
+        android:topRightRadius="12dp" />
+
+
+</shape>

+ 4 - 0
app/src/main/res/drawable/selector_radio.xml

@@ -1,6 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item
+        android:drawable="@drawable/rb_selected" android:state_selected="true" >
+
+    </item>
+    <item
         android:drawable="@drawable/rb_selected" android:state_checked="true" >
 
     </item>

+ 12 - 0
app/src/main/res/drawable/switch_common_track_selected.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item >
+        <shape android:shape="rectangle">
+            <solid android:color="@color/blue" />
+            <size android:height="30dp" />
+            <stroke
+                android:color="#00000000" />
+            <corners android:radius="30dp" />
+        </shape>
+    </item>
+</layer-list>

+ 12 - 0
app/src/main/res/drawable/switch_common_track_unselected.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="rectangle">
+            <solid android:color="#e4e4e4" />
+            <size android:height="30dp" />
+            <stroke
+                android:color="#00000000" />
+            <corners android:radius="30dp" />
+        </shape>
+    </item>
+</layer-list>

+ 12 - 0
app/src/main/res/drawable/switch_thumb.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
+    <solid android:color="@color/white" />
+    <size
+        android:width="30dp"
+        android:height="30dp" />
+    <stroke
+        android:width="4dp"
+        android:color="#00000000" />
+    <corners android:radius="15dp" />
+
+</shape>

+ 5 - 0
app/src/main/res/drawable/switch_track_style.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/switch_common_track_selected" android:state_checked="true" />
+    <item android:drawable="@drawable/switch_common_track_unselected" android:state_checked="false" />
+</selector>

+ 400 - 0
app/src/main/res/layout/activity_add_shr.xml

@@ -0,0 +1,400 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+
+    <com.zkjc.common.view.CommonTitleBarV3
+        android:id="@+id/title_bar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="25dp" />
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_alignParentBottom="true"
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp"
+        android:id="@+id/tv_confirm"
+        android:layout_marginTop="20dp"
+        android:gravity="center"
+        android:background="@drawable/bg_shape_blue_corner8"
+        android:text="确定"
+        android:textColor="#ffffffff"
+        android:textSize="18sp"
+        android:layout_marginBottom="12dp"
+        android:layout_height="44dp"/>
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_marginTop="12dp"
+        android:layout_below="@id/title_bar"
+        android:layout_above="@id/tv_confirm"
+        android:layout_height="match_parent">
+
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:orientation="vertical"
+            android:background="@drawable/bg_shape_white_corner8"
+            android:layout_height="match_parent">
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_marginLeft="12dp"
+                android:text="受害人信息"
+                android:gravity="center_vertical"
+                android:textColor="#ff111111"
+                android:textSize="16sp"
+                android:layout_height="54dp"/>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginLeft="12dp"
+                android:layout_marginRight="12dp"
+                android:background="#E7E7E7" />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp">
+
+                <TextView
+                    android:id="@+id/tv_name_bt"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:layout_marginLeft="12dp"
+                    android:text="*"
+                    android:textColor="#FF1D1D"
+                    android:textSize="14sp" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_toRightOf="@id/tv_name_bt"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:text="姓名"
+                    android:textColor="#666"
+                    android:textSize="14sp" />
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_alignParentRight="true"
+                    android:orientation="horizontal"
+                    android:id="@+id/et_name"
+                    android:gravity="center_vertical|right"
+                    android:hint="请输入受害人姓名"
+                    android:textColorHint="#999999"
+                    android:textColor="#999999"
+                    android:background="@null"
+                    android:textSize="14sp"
+                    android:layout_centerVertical="true"
+                    android:layout_marginLeft="150dp"
+                    android:layout_marginRight="12dp"/>
+            </RelativeLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginLeft="12dp"
+                android:layout_marginRight="12dp"
+                android:background="#E7E7E7" />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp">
+
+                <TextView
+                    android:id="@+id/tv_sfzh_bt"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:layout_marginLeft="12dp"
+                    android:text="*"
+                    android:textColor="#FF1D1D"
+                    android:textSize="14sp" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_toRightOf="@id/tv_sfzh_bt"
+                    android:layout_centerVertical="true"
+                    android:text="身份证号"
+                    android:textColor="#666"
+                    android:textSize="14sp" />
+
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_alignParentRight="true"
+                    android:orientation="horizontal"
+                    android:id="@+id/et_sfzh"
+                    android:gravity="center_vertical|right"
+                    android:hint="请输入受害人身份证号"
+                    android:textColorHint="#999999"
+                    android:textColor="#999999"
+                    android:background="@null"
+                    android:textSize="14sp"
+                    android:layout_centerVertical="true"
+                    android:layout_marginLeft="150dp"
+                    android:layout_marginRight="12dp"/>
+            </RelativeLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginLeft="12dp"
+                android:layout_marginRight="12dp"
+                android:background="#E7E7E7" />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp">
+
+                <TextView
+                    android:id="@+id/tv_phone_bt"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:layout_marginLeft="12dp"
+                    android:text="*"
+                    android:textColor="#FF1D1D"
+                    android:textSize="14sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:layout_toRightOf="@id/tv_phone_bt"
+                    android:text="手机号"
+                    android:textColor="#666"
+                    android:textSize="14sp" />
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_alignParentRight="true"
+                    android:orientation="horizontal"
+                    android:id="@+id/et_phone"
+                    android:inputType="number"
+                    android:gravity="center_vertical|right"
+                    android:hint="请输入受害人手机号"
+                    android:textColorHint="#999999"
+                    android:textColor="#999999"
+                    android:background="@null"
+                    android:textSize="14sp"
+                    android:layout_centerVertical="true"
+                    android:layout_marginLeft="150dp"
+                    android:layout_marginRight="12dp"/>
+            </RelativeLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:orientation="vertical"
+                android:visibility="gone"
+                android:layout_height="wrap_content">
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="#E7E7E7" />
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_marginLeft="12dp"
+                        android:text="银行账号"
+                        android:textColor="#666"
+                        android:textSize="14sp" />
+
+                    <EditText
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_alignParentRight="true"
+                        android:orientation="horizontal"
+                        android:id="@+id/et_yh"
+                        android:gravity="center_vertical|right"
+                        android:hint="请输入受害人银行账号"
+                        android:textColorHint="#999999"
+                        android:textColor="#999999"
+                        android:background="@null"
+                        android:textSize="14sp"
+                        android:layout_centerVertical="true"
+                        android:layout_marginLeft="150dp"
+                        android:layout_marginRight="12dp"/>
+                </RelativeLayout>
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="#E7E7E7" />
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_marginLeft="12dp"
+                        android:text="支付宝号"
+                        android:textColor="#666"
+                        android:textSize="14sp" />
+
+                    <EditText
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_alignParentRight="true"
+                        android:orientation="horizontal"
+                        android:id="@+id/et_zfb"
+                        android:gravity="center_vertical|right"
+                        android:hint="请输入受害人支付宝号"
+                        android:textColorHint="#999999"
+                        android:textColor="#999999"
+                        android:background="@null"
+                        android:textSize="14sp"
+                        android:layout_centerVertical="true"
+                        android:layout_marginLeft="150dp"
+                        android:layout_marginRight="12dp"/>
+                </RelativeLayout>
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="#E7E7E7" />
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_marginLeft="12dp"
+                        android:text="微信号"
+                        android:textColor="#666"
+                        android:textSize="14sp" />
+
+                    <EditText
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_alignParentRight="true"
+                        android:orientation="horizontal"
+                        android:id="@+id/et_wx"
+                        android:gravity="center_vertical|right"
+                        android:hint="请输入受害人微信号"
+                        android:textColorHint="#999999"
+                        android:textColor="#999999"
+                        android:background="@null"
+                        android:textSize="14sp"
+                        android:layout_centerVertical="true"
+                        android:layout_marginLeft="150dp"
+                        android:layout_marginRight="12dp"/>
+                </RelativeLayout>
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:background="#E7E7E7" />
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_centerVertical="true"
+                        android:layout_marginLeft="12dp"
+                        android:text="QQ号"
+                        android:textColor="#666"
+                        android:textSize="14sp" />
+
+                    <EditText
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_alignParentRight="true"
+                        android:orientation="horizontal"
+                        android:id="@+id/et_qq"
+                        android:gravity="center_vertical|right"
+                        android:hint="请输入受害人QQ号"
+                        android:textColorHint="#999999"
+                        android:textColor="#999999"
+                        android:background="@null"
+                        android:textSize="14sp"
+                        android:layout_centerVertical="true"
+                        android:layout_marginLeft="150dp"
+                        android:layout_marginRight="12dp"/>
+                </RelativeLayout>
+            </LinearLayout>
+
+        </LinearLayout>
+
+
+    </ScrollView>
+
+    <LinearLayout
+        android:id="@+id/ll_price_select"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="bottom"
+        android:orientation="vertical"
+        android:visibility="gone">
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:background="#66000000" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:background="#fff"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tv_idcard"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:padding="16dp"
+                android:text="身份证"
+                android:visibility="gone" />
+
+            <EditText
+                android:id="@+id/et_id_card"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="8dp"
+                android:layout_toRightOf="@+id/tv_idcard"
+                android:layout_weight="1"
+                android:background="@null"
+                android:digits="1234567890X"
+                android:hint="请输入公民身份号码"
+                android:maxLength="18"
+                android:padding="16dp" />
+        </LinearLayout>
+
+        <include layout="@layout/include_keyboardview" />
+    </LinearLayout>
+</RelativeLayout>

+ 479 - 0
app/src/main/res/layout/activity_dxzp_detail.xml

@@ -0,0 +1,479 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:background="@drawable/bj_big"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <com.zkjc.common.view.CommonTitleBarV3
+        android:id="@+id/title_bar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="25dp" />
+
+    <androidx.core.widget.NestedScrollView
+        android:layout_width="match_parent"
+        android:layout_below="@id/title_bar"
+        android:layout_above="@id/dxzp_detail_tv_fk"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:orientation="vertical"
+            android:layout_height="match_parent">
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="8dp"
+                android:id="@+id/dxzp_detail_tv_time"
+                android:layout_marginLeft="28dp"
+                android:text="下发时间:2024-07-17 10:20:33(需当天反馈)"
+                android:textColor="#ff111111"
+                android:textSize="12sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:orientation="vertical"
+                android:layout_marginLeft="16dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="16dp"
+                android:background="@drawable/bg_shape_white_corner8"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:orientation="horizontal"
+                    android:layout_height="wrap_content">
+
+                    <ImageView
+                        android:layout_width="30dp"
+                        android:layout_marginLeft="12dp"
+                        android:layout_marginTop="15dp"
+                        android:background="@drawable/icon_victimize"
+                        android:layout_height="30dp"/>
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="16dp"
+                        android:text="疑似受害人信息"
+                        android:layout_marginLeft="2dp"
+                        android:textColor="#ff111111"
+                        android:textSize="16sp"
+                        />
+
+                </LinearLayout>
+
+                <View
+                    android:layout_width="match_parent"
+                    android:background="#e7e7e7"
+                    android:layout_marginTop="8dp"
+                    android:layout_height="1dp"/>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_marginLeft="12dp"
+                    android:gravity="center_vertical"
+                    android:layout_marginTop="12dp"
+                    android:orientation="horizontal"
+                    android:layout_height="wrap_content">
+
+                    <ImageView
+                        android:layout_width="16dp"
+                        android:background="@drawable/icon_id"
+                        android:layout_height="16dp"/>
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:id="@+id/dxzp_detail_tv_id"
+                        android:text="220110 1982 0301 4532(188 5678…)"
+                        android:textColor="#ff111111"
+                        android:singleLine="true"
+                        android:layout_marginRight="12dp"
+                        android:ellipsize="end"
+                        android:layout_marginLeft="8dp"
+                        android:textSize="16sp"
+                        android:layout_height="wrap_content"/>
+
+                </LinearLayout>
+
+                <com.google.android.flexbox.FlexboxLayout
+                    android:id="@+id/flexboxLayout"
+                    android:layout_width="match_parent"
+                    android:layout_marginLeft="36dp"
+                    android:layout_marginTop="8dp"
+                    android:layout_height="wrap_content"
+                    app:alignItems="center"
+                    app:flexWrap="wrap"
+                    app:justifyContent="flex_start" />
+
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:orientation="horizontal"
+                    android:layout_marginLeft="36dp"
+                    android:id="@+id/item_dxzp_layout_type"
+                    android:layout_marginTop="10dp"
+                    android:background="@drawable/bg_shape_1a9a5eff_corner10"
+                    android:layout_height="20dp">
+
+                    <ImageView
+                        android:layout_width="16dp"
+                        android:id="@+id/dxzp_detail_iv_type"
+                        android:layout_marginLeft="2dp"
+                        android:layout_gravity="center_vertical"
+                        android:layout_height="16dp"/>
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/dxzp_detail_tv_type"
+                        android:layout_marginLeft="4dp"
+                        android:layout_gravity="center_vertical"
+                        android:text="冒充公检法及政府机关类"
+                        android:layout_marginRight="8dp"
+                        android:textColor="#ff9a5eff"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+                <View
+                    android:layout_width="match_parent"
+                    android:background="#E7E7E7"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:layout_marginTop="12dp"
+                    android:layout_height="0.5dp"/>
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
+                
+                    <ImageView
+                        android:layout_width="32dp"
+                        android:id="@+id/dxzp_detail_iv_call"
+                        android:background="@drawable/btn_phone_blue"
+                        android:layout_alignParentRight="true"
+                        android:layout_height="48dp"/>
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:orientation="vertical"
+                        android:layout_marginLeft="12dp"
+                        android:layout_marginRight="12dp"
+                        android:layout_height="wrap_content">
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:layout_marginTop="13dp"
+                            android:layout_height="wrap_content">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="姓&#12288;&#12288;名:"
+                                android:textColor="#ff999999"
+                                android:textSize="12sp" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:id="@+id/dxzp_detail_tv_name"
+                                android:text="甄守海"
+                                android:textColor="#111111"
+                                android:textSize="12sp" />
+
+
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:layout_marginTop="8dp"
+                            android:layout_height="wrap_content">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="身份证号:"
+                                android:textColor="#ff999999"
+                                android:textSize="12sp" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:id="@+id/dxzp_detail_tv_sfzh"
+                                android:text="220110 1982 0301 4532 "
+                                android:textColor="#111111"
+                                android:textSize="12sp" />
+
+
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:layout_marginTop="8dp"
+                            android:layout_height="wrap_content">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="手机号码:"
+                                android:textColor="#ff999999"
+                                android:textSize="12sp" />
+
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:visibility="gone"
+                                android:id="@+id/dxzp_detail_tv_sj"
+                                android:text="18654686154"
+                                android:textColor="#111111"
+                                android:textSize="12sp" />
+
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:id="@+id/dxzp_detail_rv"
+                                tools:itemCount="2"/>
+
+
+                        </LinearLayout>
+
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:layout_height="wrap_content">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="银行账号:"
+                                android:textColor="#ff999999"
+                                android:textSize="12sp" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:id="@+id/dxzp_detail_tv_yh"
+                                android:text="6226 7678 4565 6768(建设银行)"
+                                android:textColor="#111111"
+                                android:textSize="12sp" />
+
+
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:layout_marginTop="8dp"
+                            android:layout_height="wrap_content">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="活动地区:"
+                                android:textColor="#ff999999"
+                                android:textSize="12sp" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:id="@+id/dxzp_detail_tv_area"
+                                android:text="吉林省长春市朝阳区、绿园区"
+                                android:textColor="#111111"
+                                android:textSize="12sp" />
+
+
+                        </LinearLayout>
+
+                        <View
+                            android:layout_width="match_parent"
+                            android:background="#e7e7e7"
+                            android:layout_marginTop="11dp"
+                            android:layout_height="1dp"/>
+
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:layout_marginTop="11dp"
+                            android:layout_height="wrap_content">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="数据来源:"
+                                android:textColor="#ff999999"
+                                android:textSize="12sp" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:id="@+id/dxzp_detail_tv_ly"
+                                android:text="世纪网通"
+                                android:textColor="#111111"
+                                android:textSize="12sp" />
+
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:layout_marginTop="8dp"
+                            android:layout_height="wrap_content">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="最近联系:"
+                                android:textColor="#ff999999"
+                                android:textSize="12sp" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:id="@+id/dxzp_detail_tv_zjlx"
+                                android:text="2024-07-15 09:20:33"
+                                android:textColor="#111111"
+                                android:textSize="12sp" />
+
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:layout_marginBottom="12dp"
+                            android:layout_marginTop="8dp"
+                            android:layout_height="wrap_content">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="引擎发现:"
+                                android:textColor="#ff999999"
+                                android:textSize="12sp" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:id="@+id/dxzp_detail_tv_yqfx"
+                                android:text="2024-07-16 09:20:33"
+                                android:textColor="#111111"
+                                android:textSize="12sp" />
+
+                        </LinearLayout>
+
+                    </LinearLayout>
+
+
+                </RelativeLayout>
+
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:orientation="vertical"
+                android:layout_marginTop="12dp"
+                android:layout_marginLeft="16dp"
+                android:layout_marginRight="16dp"
+                android:background="@drawable/bg_shape_white_corner8"
+                android:layout_height="wrap_content">
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
+
+                    <ImageView
+                        android:layout_width="22dp"
+                        android:background="@drawable/icon_business"
+                        android:layout_marginLeft="13dp"
+                        android:layout_marginTop="16dp"
+                        android:layout_height="22dp"/>
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="44dp"
+                        android:layout_marginTop="16dp"
+                        android:text="单位信息"
+                        android:textColor="#ff111111"
+                        android:textSize="16sp"
+                        />
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:orientation="horizontal"
+                        android:layout_alignParentRight="true"
+                        android:id="@+id/dxzp_detail_layout_yj"
+                        android:paddingBottom="6dp"
+                        android:layout_height="wrap_content">
+
+                        <ImageView
+                            android:layout_width="16dp"
+                            android:layout_marginTop="19dp"
+                            android:background="@drawable/icon_transfer"
+                            android:layout_height="16dp"/>
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="17dp"
+                            android:layout_marginRight="12dp"
+                            android:layout_marginLeft="4dp"
+                            android:text="移交"
+                            android:textColor="#ff106dff"
+                            android:textSize="14sp"
+                            />
+
+                    </LinearLayout>
+
+                </RelativeLayout>
+
+                <View
+                    android:layout_width="match_parent"
+                    android:background="#e7e7e7"
+                    android:layout_marginTop="15dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:layout_height="0.5dp"/>
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:layout_width="match_parent"
+                    android:layout_marginTop="10dp"
+                    android:layout_marginLeft="12dp"
+                    android:layout_marginRight="12dp"
+                    android:id="@+id/dxzp_detail_rv_yj"
+                    android:layout_height="wrap_content"/>
+
+            </LinearLayout>
+
+
+
+        </LinearLayout>
+
+
+    </androidx.core.widget.NestedScrollView>
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_alignParentBottom="true"
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp"
+        android:id="@+id/dxzp_detail_tv_fk"
+        android:layout_marginTop="20dp"
+        android:gravity="center"
+        android:background="@drawable/bg_shape_blue_corner8"
+        android:text="反馈"
+        android:textColor="#ffffffff"
+        android:textSize="18sp"
+        android:layout_marginBottom="12dp"
+        android:layout_height="44dp"/>
+
+</RelativeLayout>

+ 805 - 223
app/src/main/res/layout/activity_fz_qz_fk.xml

@@ -1,35 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:background="#f8f8f8"
     android:orientation="vertical">
 
-    <RelativeLayout
+    <com.zkjc.common.view.CommonTitleBarV3
+        android:id="@+id/title_bar"
         android:layout_width="match_parent"
-        android:layout_height="44dp"
-        android:layout_marginTop="44dp">
-
-        <Button
-            android:id="@+id/bt_back"
-            android:layout_width="20dp"
-            android:layout_height="20dp"
-            android:layout_centerVertical="true"
-            android:layout_marginLeft="16dp"
-            android:background="@mipmap/left_jt" />
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerInParent="true"
-            android:text="反馈"
-            android:textColor="#ff111111"
-            android:textSize="18sp" />
-    </RelativeLayout>
-
-    <ScrollView
+        android:layout_height="wrap_content"
+        android:layout_marginTop="25dp" />
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_alignParentBottom="true"
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp"
+        android:id="@+id/tv_confirm"
+        android:layout_marginTop="20dp"
+        android:gravity="center"
+        android:background="@drawable/bg_shape_blue_corner8"
+        android:text="确定"
+        android:textColor="#ffffffff"
+        android:textSize="18sp"
+        android:layout_marginBottom="12dp"
+        android:layout_height="44dp"/>
+
+    <androidx.core.widget.NestedScrollView
         android:layout_marginTop="12dp"
+        android:layout_below="@id/title_bar"
+        android:layout_above="@id/tv_confirm"
+        android:id="@+id/scrollView"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
@@ -42,6 +45,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="16dp"
+                android:id="@+id/layout_dhlx"
                 android:layout_marginRight="16dp"
                 android:background="@drawable/shape_gray"
                 android:minHeight="108dp"
@@ -102,155 +106,31 @@
                     </RelativeLayout>
                 </LinearLayout>
 
-                <RadioGroup
-                    android:id="@+id/rg_wdhlx"
+                <androidx.recyclerview.widget.RecyclerView
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent"
+                    android:id="@+id/rv_wdhlx"
+                    android:paddingLeft="12dp"
+                    android:paddingRight="12dp"
                     android:background="@drawable/shape_wdh_white"
-                    android:orientation="vertical">
-
-                    <RadioButton
-                        android:id="@+id/rb_wdh_jj"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:checked="true"
-                        android:paddingHorizontal="5dp"
-                        android:text="拒接/未接通"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_wdh_kh"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="空号"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_wdh_bzxq"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="不在本辖区致无法联系"
-                        android:textSize="14sp" />
-                </RadioGroup>
+                    android:layout_height="wrap_content"/>
 
-                <RadioGroup
-                    android:id="@+id/rg_ydhlx"
+                <androidx.recyclerview.widget.RecyclerView
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:background="@drawable/shape_ydh_white"
-                    android:orientation="vertical"
-                    android:visibility="gone">
-
-                    <RadioButton
-                        android:id="@+id/rb_ydh_sddx"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:checked="true"
-                        android:paddingHorizontal="5dp"
-                        android:text="接到欺诈短信"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_ydh_wsddx"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="未接到欺诈短信"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_ydh_tdmh"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="事主表述/态度模糊"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_ydh_wfkxx"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="事主未反馈任何信息"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_ydh_tdmh_jm"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="预警对象表达/态度模糊,需见面劝阻"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_ydh_wfk_jm"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="预警对象未反馈任何信息,需见面劝阻"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_ydh_yba"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="预警对象已被骗报案,不需见面劝阻"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_ydh_sjyhkhbf"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="预警手机号码非预警银行账户开户人"
-                        android:textSize="14sp" />
-
-                    <RadioButton
-                        android:id="@+id/rb_ydh_ydhqz_jm"
-                        android:layout_width="wrap_content"
-                        android:layout_height="40dp"
-                        android:layout_marginLeft="12dp"
-                        android:button="@drawable/selector_radio"
-                        android:paddingHorizontal="5dp"
-                        android:text="预警对象已经电话劝阻,还需见面劝阻"
-                        android:textSize="14sp" />
-
-
-                </RadioGroup>
+                    android:visibility="gone"
+                    android:paddingLeft="12dp"
+                    android:paddingRight="12dp"
+                    android:id="@+id/rv_ydhlx"
+                    android:background="@drawable/shape_wdh_white"
+                    android:layout_height="wrap_content"/>
             </LinearLayout>
 
             <LinearLayout
-                android:visibility="gone"
                 android:id="@+id/ll_yjdh"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="16dp"
                 android:layout_marginTop="12dp"
+                android:visibility="gone"
                 android:layout_marginRight="16dp"
                 android:background="@drawable/white_shape"
                 android:minHeight="148dp"
@@ -279,7 +159,8 @@
 
                 <RelativeLayout
                     android:layout_width="match_parent"
-                    android:layout_height="50dp">
+                    android:minHeight="50dp"
+                    android:layout_height="wrap_content">
 
                     <TextView
                         android:id="@+id/tv_bt"
@@ -301,10 +182,20 @@
                         android:textColor="#666"
                         android:textSize="14sp" />
 
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_centerVertical="true"
+                        android:paddingLeft="12dp"
+                        android:id="@+id/rv_fkjg"
+                        android:layout_toRightOf="@id/tv_fk"
+                        android:gravity="center_vertical"/>
+
                     <RadioGroup
                         android:id="@+id/rg_fk"
                         android:layout_width="match_parent"
                         android:layout_height="match_parent"
+                        android:visibility="gone"
                         android:layout_toRightOf="@id/tv_fk"
                         android:gravity="center_vertical"
                         android:orientation="horizontal">
@@ -353,13 +244,15 @@
 
                 <RelativeLayout
                     android:layout_width="match_parent"
-                    android:layout_height="50dp">
+                    android:layout_height="wrap_content">
 
                     <RelativeLayout
                         android:id="@+id/rl_xtzs"
                         android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
+                        android:layout_height="50dp"
+                        android:visibility="visible"
                         android:layout_centerInParent="true"
+                        android:gravity="center"
                         android:layout_marginLeft="5dp"
                         android:layout_marginRight="12dp">
 
@@ -380,14 +273,664 @@
                             android:layout_toRightOf="@id/tv_xtts"
                             android:src="@drawable/btn_unfold_gray" />
                     </RelativeLayout>
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:id="@+id/layout_more"
+                        android:visibility="gone"
+                        android:orientation="vertical"
+                        android:layout_height="wrap_content">
+
+                        <RelativeLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="50dp">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="12dp"
+                                android:text="收集涉诈信息"
+                                android:textColor="#666"
+                                android:textSize="14sp" />
+
+                            <RelativeLayout
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:layout_alignParentRight="true"
+                                android:layout_marginLeft="5dp"
+                                android:layout_marginRight="12dp">
+
+                                <TextView
+                                    android:id="@+id/tv_szlx"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_centerVertical="true"
+                                    android:layout_marginLeft="12dp"
+                                    android:text="请选择涉诈类型"
+                                    android:textColor="#666"
+                                    android:textSize="14sp" />
+
+                                <ImageView
+                                    android:layout_width="15dp"
+                                    android:layout_height="15dp"
+                                    android:layout_centerVertical="true"
+                                    android:layout_toRightOf="@id/tv_szlx"
+                                    android:src="@mipmap/btn_next_gray" />
+                            </RelativeLayout>
+                        </RelativeLayout>
+
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="1dp"
+                            android:layout_marginLeft="12dp"
+                            android:layout_marginRight="12dp"
+                            android:background="#E7E7E7" />
+
+                        <RelativeLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="50dp">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="12dp"
+                                android:text="是否报警"
+                                android:textColor="#666"
+                                android:textSize="14sp" />
+
+                            <RadioGroup
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:layout_alignParentRight="true"
+                                android:orientation="horizontal"
+                                android:gravity="center_vertical"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="5dp"
+                                android:layout_marginRight="12dp">
+
+                                <RadioButton
+                                    android:id="@+id/rg_bj_no"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="40dp"
+                                    android:layout_marginLeft="12dp"
+                                    android:checked="true"
+                                    android:paddingRight="12dp"
+                                    android:button="@drawable/selector_radio"
+                                    android:paddingHorizontal="4dp"
+                                    android:text="否"
+                                    android:textSize="14sp" />
+                                <RadioButton
+                                    android:id="@+id/rg_bj_yes"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="40dp"
+                                    android:layout_marginLeft="24dp"
+                                    android:button="@drawable/selector_radio"
+                                    android:paddingHorizontal="4dp"
+                                    android:text="是"
+                                    android:textSize="14sp" />
+
+                            </RadioGroup>
+                        </RelativeLayout>
+
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="1dp"
+                            android:layout_marginLeft="12dp"
+                            android:layout_marginRight="12dp"
+                            android:background="#E7E7E7" />
+
+                        <RelativeLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="50dp">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="12dp"
+                                android:text="反馈劝阻金额"
+                                android:textColor="#666"
+                                android:textSize="14sp" />
+
+                            <EditText
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:layout_alignParentRight="true"
+                                android:orientation="horizontal"
+                                android:id="@+id/et_fkqzje"
+                                android:inputType="numberDecimal"
+                                android:gravity="center_vertical|right"
+                                android:hint="请输入反馈劝阻金额"
+                                android:textColorHint="#999999"
+                                android:textColor="#999999"
+                                android:background="@null"
+                                android:textSize="14sp"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="150dp"
+                                android:layout_marginRight="12dp"/>
+                        </RelativeLayout>
+
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="1dp"
+                            android:layout_marginLeft="12dp"
+                            android:layout_marginRight="12dp"
+                            android:background="#E7E7E7" />
+
+                        <RelativeLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="50dp">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="12dp"
+                                android:text="被骗金额"
+                                android:textColor="#666"
+                                android:textSize="14sp" />
+
+                            <EditText
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:layout_alignParentRight="true"
+                                android:orientation="horizontal"
+                                android:inputType="numberDecimal"
+                                android:gravity="center_vertical|right"
+                                android:hint="请输入被骗金额"
+                                android:id="@+id/et_bpje"
+                                android:textColorHint="#999999"
+                                android:textColor="#999999"
+                                android:background="@null"
+                                android:textSize="14sp"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="150dp"
+                                android:layout_marginRight="12dp"/>
+                        </RelativeLayout>
+
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="1dp"
+                            android:layout_marginLeft="12dp"
+                            android:layout_marginRight="12dp"
+                            android:background="#E7E7E7" />
+
+                        <RelativeLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="50dp">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="12dp"
+                                android:text="是否需要回访"
+                                android:textColor="#666"
+                                android:textSize="14sp" />
+
+                            <RadioGroup
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:layout_alignParentRight="true"
+                                android:orientation="horizontal"
+                                android:gravity="center_vertical"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="5dp"
+                                android:layout_marginRight="12dp">
+
+                                <RadioButton
+                                    android:id="@+id/rg_hf_no"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="40dp"
+                                    android:layout_marginLeft="12dp"
+                                    android:checked="true"
+                                    android:paddingRight="12dp"
+                                    android:button="@drawable/selector_radio"
+                                    android:paddingHorizontal="4dp"
+                                    android:text="否"
+                                    android:textSize="14sp" />
+                                <RadioButton
+                                    android:id="@+id/rg_hf_yes"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="40dp"
+                                    android:layout_marginLeft="24dp"
+                                    android:button="@drawable/selector_radio"
+                                    android:paddingHorizontal="4dp"
+                                    android:text="是"
+                                    android:textSize="14sp" />
+
+                            </RadioGroup>
+                        </RelativeLayout>
+
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="1dp"
+                            android:layout_marginLeft="12dp"
+                            android:layout_marginRight="12dp"
+                            android:background="#E7E7E7" />
+
+                        <RelativeLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="50dp">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="12dp"
+                                android:text="诈骗类型"
+                                android:textColor="#666"
+                                android:textSize="14sp" />
+
+                            <RelativeLayout
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:layout_alignParentRight="true"
+                                android:layout_marginLeft="5dp"
+                                android:layout_marginRight="12dp">
+
+                                <TextView
+                                    android:id="@+id/tv_zplx"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_centerVertical="true"
+                                    android:layout_marginLeft="12dp"
+                                    android:text="请选择诈骗类型"
+                                    android:textColor="#666"
+                                    android:textSize="14sp" />
+
+                                <ImageView
+                                    android:layout_width="15dp"
+                                    android:layout_height="15dp"
+                                    android:layout_centerVertical="true"
+                                    android:layout_toRightOf="@id/tv_zplx"
+                                    android:src="@mipmap/btn_next_gray" />
+                            </RelativeLayout>
+                        </RelativeLayout>
+
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="1dp"
+                            android:layout_marginLeft="12dp"
+                            android:layout_marginRight="12dp"
+                            android:background="#E7E7E7" />
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="50dp">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_gravity="center_vertical"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="12dp"
+                                android:text="受害人信息"
+                                android:textColor="#666"
+                                android:textSize="14sp" />
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:layout_alignParentRight="true"
+                                android:id="@+id/layout_add_shr"
+                                android:gravity="center_vertical|right"
+                                android:layout_marginLeft="5dp"
+                                android:layout_marginRight="12dp">
+
+                                <ImageView
+                                    android:layout_width="21dp"
+                                    android:layout_height="21dp"
+                                    android:layout_centerVertical="true"
+                                    android:src="@drawable/icon_plus_blue" />
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="20dp"
+                                    android:layout_marginLeft="1dp"
+                                    android:text="添加受害人"
+                                    android:textColor="#ff106dff"
+                                    android:textSize="14sp" />
+
+                            </LinearLayout>
+                        </LinearLayout>
+
+                        <androidx.recyclerview.widget.RecyclerView
+                            android:layout_width="match_parent"
+                            android:id="@+id/rv_shr"
+                            android:layout_marginLeft="12dp"
+                            android:layout_marginRight="12dp"
+                            android:layout_height="wrap_content"/>
+
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="1dp"
+                            android:layout_marginLeft="12dp"
+                            android:layout_marginRight="12dp"
+                            android:background="#E7E7E7" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="16dp"
+                            android:layout_marginLeft="12dp"
+                            android:text="反馈说明"
+                            android:textColor="#ff666666"
+                            android:textSize="14sp"
+                            />
+
+                        <RelativeLayout
+                            android:layout_width="match_parent"
+                            android:minHeight="108dp"
+                            android:layout_marginLeft="12dp"
+                            android:layout_marginRight="12dp"
+                            android:background="@drawable/bg_shape_f5f5f5_corner6"
+                            android:layout_marginTop="12dp"
+                            android:layout_height="108dp">
+
+                            <EditText
+                                android:layout_width="match_parent"
+                                android:background="@null"
+                                android:textColor="#ff111111"
+                                android:gravity="start"
+                                android:textSize="14sp"
+                                android:textColorHint="#bebebe"
+                                android:hint="请描述具体情况,非必填"
+                                android:id="@+id/et_fksm"
+                                android:layout_marginTop="13dp"
+                                android:layout_marginBottom="23dp"
+                                android:layout_marginLeft="12dp"
+                                android:layout_marginRight="12dp"
+                                android:layout_height="match_parent"/>
+
+                            <LinearLayout
+                                android:layout_width="wrap_content"
+                                android:orientation="horizontal"
+                                android:layout_alignParentBottom="true"
+                                android:layout_alignParentRight="true"
+                                android:layout_marginBottom="7dp"
+                                android:layout_marginRight="7dp"
+                                android:layout_height="wrap_content">
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:text="0"
+                                    android:id="@+id/tv_fksm_count"
+                                    android:textColor="#ffbebebe"
+                                    android:textSize="14sp"
+                                    android:layout_height="wrap_content"/>
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:text="/200"
+                                    android:textColor="#ffbebebe"
+                                    android:textSize="14sp"
+                                    android:layout_height="wrap_content"/>
+
+                            </LinearLayout>
+
+                        </RelativeLayout>
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:orientation="vertical"
+                            android:id="@+id/layout_jmjg"
+                            android:layout_height="wrap_content">
+
+
+                            <RelativeLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="50dp">
+
+                                <TextView
+                                    android:id="@+id/tv_jg_bt"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:visibility="gone"
+                                    android:layout_centerVertical="true"
+                                    android:text="*"
+                                    android:textColor="#FF1D1D"
+                                    android:textSize="14sp" />
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_marginLeft="12dp"
+                                    android:layout_centerVertical="true"
+                                    android:layout_toRightOf="@id/tv_jg_bt"
+                                    android:text="见面结果"
+                                    android:textColor="#666"
+                                    android:textSize="14sp" />
+
+                                <RelativeLayout
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="match_parent"
+                                    android:layout_alignParentRight="true"
+                                    android:layout_marginLeft="5dp"
+                                    android:layout_marginRight="12dp">
+
+                                    <TextView
+                                        android:id="@+id/tv_jmjg"
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="wrap_content"
+                                        android:layout_centerVertical="true"
+                                        android:layout_marginLeft="12dp"
+                                        android:text="请选择见面结果"
+                                        android:textColor="#666"
+                                        android:textSize="14sp" />
+
+                                    <ImageView
+                                        android:layout_width="15dp"
+                                        android:layout_height="15dp"
+                                        android:layout_centerVertical="true"
+                                        android:layout_toRightOf="@id/tv_jmjg"
+                                        android:src="@mipmap/btn_next_gray" />
+                                </RelativeLayout>
+                            </RelativeLayout>
+
+                            <View
+                                android:layout_width="match_parent"
+                                android:layout_height="1dp"
+                                android:layout_marginLeft="12dp"
+                                android:layout_marginRight="12dp"
+                                android:background="#E7E7E7" />
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:id="@+id/layout_wfjmfj"
+                                android:orientation="vertical"
+                                android:visibility="gone"
+                                android:layout_marginTop="15dp"
+                                android:layout_marginLeft="12dp"
+                                android:layout_height="wrap_content">
+
+                                <LinearLayout
+                                    android:layout_width="wrap_content"
+                                    android:orientation="horizontal"
+                                    android:layout_height="wrap_content">
+                                    <TextView
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="wrap_content"
+                                        android:layout_centerVertical="true"
+                                        android:text="*"
+                                        android:textColor="#FF1D1D"
+                                        android:textSize="14sp" />
+
+                                    <TextView
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="wrap_content"
+                                        android:layout_centerVertical="true"
+                                        android:layout_toRightOf="@id/tv_jg_bt"
+                                        android:text="上传无法见面附件(800kb以内)"
+                                        android:textColor="#666"
+                                        android:textSize="14sp" />
+
+                                </LinearLayout>
+                                
+                                <RelativeLayout
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content">
+
+                                    <RelativeLayout
+                                        android:layout_width="101dp"
+                                        android:layout_marginTop="12dp"
+                                        android:background="@drawable/bg_shape_stroke1_cccccc_corner4"
+                                        android:orientation="vertical"
+                                        android:layout_height="101dp">
+
+
+                                        <ImageView
+                                            android:layout_width="24dp"
+                                            android:layout_marginTop="24dp"
+                                            android:layout_centerHorizontal="true"
+                                            android:background="@drawable/icon_camera"
+                                            android:layout_height="24dp"/>
+
+                                        <TextView
+                                            android:layout_width="wrap_content"
+                                            android:text="上传材料"
+                                            android:layout_centerHorizontal="true"
+                                            android:layout_marginTop="56dp"
+                                            android:textColor="#ffcccccc"
+                                            android:textSize="14sp"
+                                            android:layout_height="wrap_content"/>
+
+                                        <ImageView
+                                            android:layout_width="match_parent"
+                                            android:id="@+id/iv_camera"
+                                            android:layout_height="match_parent"/>
+
+                                    </RelativeLayout>
+
+                                    <ImageView
+                                        android:layout_width="24dp"
+                                        android:layout_marginTop="4dp"
+                                        android:id="@+id/iv_delete"
+                                        android:visibility="gone"
+                                        android:background="@drawable/icon_delete"
+                                        android:layout_marginLeft="85dp"
+                                        android:layout_height="24dp"/>
+
+                                </RelativeLayout>
+
+                            </LinearLayout>
+
+                            <RelativeLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="50dp">
+                                <TextView
+                                    android:id="@+id/tv_dz_bt"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_centerVertical="true"
+                                    android:visibility="gone"
+                                    android:text="*"
+                                    android:textColor="#FF1D1D"
+                                    android:textSize="14sp" />
+
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_marginLeft="12dp"
+                                    android:layout_centerVertical="true"
+                                    android:layout_toRightOf="@id/tv_dz_bt"
+                                    android:text="见面地址"
+                                    android:textColor="#666"
+                                    android:textSize="14sp" />
+
+                                <RelativeLayout
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="match_parent"
+                                    android:layout_alignParentRight="true"
+                                    android:layout_marginLeft="5dp"
+                                    android:id="@+id/layout_jmdz"
+                                    android:layout_marginRight="12dp">
+
+                                    <TextView
+                                        android:id="@+id/tv_jmdz"
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="wrap_content"
+                                        android:layout_centerVertical="true"
+                                        android:layout_marginLeft="80dp"
+                                        android:singleLine="true"
+                                        android:text="请选择省、市、区、街道"
+                                        android:textColor="#666"
+                                        android:textSize="14sp" />
+
+                                    <ImageView
+                                        android:layout_width="15dp"
+                                        android:layout_height="15dp"
+                                        android:layout_centerVertical="true"
+                                        android:layout_toRightOf="@id/tv_jmdz"
+                                        android:src="@mipmap/btn_next_gray" />
+                                </RelativeLayout>
+                            </RelativeLayout>
+
+                            <View
+                                android:layout_width="match_parent"
+                                android:layout_height="1dp"
+                                android:layout_marginLeft="12dp"
+                                android:layout_marginRight="12dp"
+                                android:background="#E7E7E7" />
+
+                            <RelativeLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="50dp">
+                                <TextView
+                                    android:id="@+id/tv_xz_bt"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_centerVertical="true"
+                                    android:visibility="gone"
+                                    android:text="*"
+                                    android:textColor="#FF1D1D"
+                                    android:textSize="14sp" />
+
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_marginLeft="12dp"
+                                    android:layout_centerVertical="true"
+                                    android:layout_toRightOf="@id/tv_xz_bt"
+                                    android:text="详细地址"
+                                    android:textColor="#666"
+                                    android:textSize="14sp" />
+
+                                <EditText
+                                    android:layout_width="match_parent"
+                                    android:layout_height="match_parent"
+                                    android:layout_alignParentRight="true"
+                                    android:orientation="horizontal"
+                                    android:gravity="center_vertical|right"
+                                    android:hint="请输入小区、写字楼、门牌号等"
+                                    android:id="@+id/et_xxdz"
+                                    android:textColorHint="#999999"
+                                    android:textColor="#999999"
+                                    android:background="@null"
+                                    android:textSize="14sp"
+                                    android:layout_centerVertical="true"
+                                    android:layout_marginLeft="80dp"
+                                    android:layout_marginRight="12dp"/>
+                            </RelativeLayout>
+
+
+                        </LinearLayout>
+
+                    </LinearLayout>
                 </RelativeLayout>
             </LinearLayout>
 
             <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="154dp"
+                android:layout_height="wrap_content"
                 android:layout_marginLeft="16dp"
                 android:layout_marginTop="12dp"
+
+                android:id="@+id/layout_smyj"
                 android:layout_marginRight="16dp"
                 android:background="@drawable/white_shape"
                 android:orientation="vertical">
@@ -404,87 +947,126 @@
                         android:text="需上门预警"
                         android:textColor="#111111"
                         android:textSize="16sp" />
-                </RelativeLayout>
 
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="1dp"
-                    android:layout_marginLeft="12dp"
-                    android:layout_marginRight="12dp"
-                    android:background="#E7E7E7" />
+                    <androidx.appcompat.widget.SwitchCompat
+                        android:id="@+id/switch_smyj"
+                        android:layout_width="60dp"
+                        android:layout_height="26dp"
+                        android:visibility="gone"
+                        android:thumb="@drawable/switch_thumb"
+                        app:track="@drawable/switch_track_style"
+                        android:layout_alignParentRight="true"
+                        android:layout_centerVertical="true"
+                        android:layout_marginRight="12dp" />
+                </RelativeLayout>
 
-                <RelativeLayout
+                <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="50dp">
+                    android:id="@+id/layout_checked_xsmyj"
+                    android:orientation="vertical"
+                    android:layout_height="wrap_content">
 
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_centerVertical="true"
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="1dp"
                         android:layout_marginLeft="12dp"
-                        android:text="归属单位"
-                        android:textColor="#666"
-                        android:textSize="14sp" />
+                        android:layout_marginRight="12dp"
+                        android:background="#E7E7E7" />
 
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_alignParentRight="true"
-                        android:layout_centerVertical="true"
-                        android:layout_marginRight="26dp"
-                        android:text="长春市南关分局红旗街派出所"
-                        android:textColor="#666"
-                        android:textSize="14sp" />
-                </RelativeLayout>
+                    <RelativeLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="50dp">
 
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="1dp"
-                    android:layout_marginLeft="12dp"
-                    android:layout_marginRight="12dp"
-                    android:background="#E7E7E7" />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerVertical="true"
+                            android:layout_marginLeft="12dp"
+                            android:text="归属单位"
+                            android:id="@+id/tv_gsdw_left"
+                            android:textColor="#666"
+                            android:textSize="14sp" />
 
-                <RelativeLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="50dp">
 
-                    <TextView
-                        android:id="@+id/tv"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_centerVertical="true"
+                        <RelativeLayout
+                            android:layout_width="wrap_content"
+                            android:layout_height="match_parent"
+                            android:layout_toRightOf="@id/tv_gsdw_left"
+                            android:layout_alignParentRight="true"
+                            android:gravity="right"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginRight="12dp">
+
+                            <TextView
+                                android:id="@+id/tv_pcs"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:singleLine="true"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="12dp"
+                                android:text="请选择归属单位"
+                                android:textColor="#666"
+                                android:textSize="14sp" />
+
+                            <ImageView
+                                android:layout_width="15dp"
+                                android:layout_height="15dp"
+                                android:layout_centerVertical="true"
+                                android:layout_toRightOf="@id/tv_pcs"
+                                android:src="@mipmap/btn_next_gray" />
+                        </RelativeLayout>
+                    </RelativeLayout>
+
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="1dp"
                         android:layout_marginLeft="12dp"
-                        android:text="上门民警"
-                        android:textColor="#666"
-                        android:textSize="14sp" />
+                        android:layout_marginRight="12dp"
+                        android:background="#E7E7E7" />
 
                     <RelativeLayout
-                        android:layout_width="wrap_content"
-                        android:layout_height="match_parent"
-                        android:layout_alignParentRight="true"
-                        android:layout_marginLeft="5dp"
-                        android:layout_marginRight="12dp">
+                        android:layout_width="match_parent"
+                        android:layout_height="50dp">
 
                         <TextView
-                            android:id="@+id/tv_mj"
+                            android:id="@+id/tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
                             android:layout_centerVertical="true"
                             android:layout_marginLeft="12dp"
-                            android:text="请选择上门民警"
+                            android:text="上门民警"
                             android:textColor="#666"
                             android:textSize="14sp" />
 
-                        <ImageView
-                            android:layout_width="15dp"
-                            android:layout_height="15dp"
-                            android:layout_centerVertical="true"
-                            android:layout_toRightOf="@id/tv_mj"
-                            android:src="@mipmap/btn_next_gray" />
+                        <RelativeLayout
+                            android:layout_width="wrap_content"
+                            android:layout_height="match_parent"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginLeft="5dp"
+                            android:layout_marginRight="12dp">
+
+                            <TextView
+                                android:id="@+id/tv_mj"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_centerVertical="true"
+                                android:layout_marginLeft="12dp"
+                                android:text="请选择上门民警"
+                                android:textColor="#666"
+                                android:textSize="14sp" />
+
+                            <ImageView
+                                android:layout_width="15dp"
+                                android:layout_height="15dp"
+                                android:layout_centerVertical="true"
+                                android:layout_toRightOf="@id/tv_mj"
+                                android:src="@mipmap/btn_next_gray" />
+                        </RelativeLayout>
                     </RelativeLayout>
-                </RelativeLayout>
+
+                </LinearLayout>
             </LinearLayout>
         </LinearLayout>
-    </ScrollView>
+    </androidx.core.widget.NestedScrollView>
 
-</LinearLayout>
+</RelativeLayout>

+ 11 - 3
app/src/main/res/layout/activity_login.xml

@@ -2,15 +2,23 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
+    android:gravity="center"
     android:layout_height="match_parent"
     android:orientation="vertical">
 
     <Button
         android:layout_width="match_parent"
-        android:text="登录"
+        android:text="admin登录"
         android:gravity="center"
-        android:onClick="login"
+        android:onClick="adminLogin"
         android:textSize="30dp"
-        android:layout_height="match_parent"/>
+        android:layout_height="80dp"/>
+    <Button
+        android:layout_width="match_parent"
+        android:text="民警登录"
+        android:gravity="center"
+        android:onClick="mjLogin"
+        android:textSize="30dp"
+        android:layout_height="80dp"/>
 
 </LinearLayout>

+ 53 - 0
app/src/main/res/layout/activity_test.xml

@@ -2,6 +2,7 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_height="match_parent"
     android:orientation="vertical">
 
@@ -38,5 +39,57 @@
         android:padding="5dp"
         android:layout_marginBottom="7dp"
         android:layout_height="wrap_content"/>
+    <TextView
+        android:id="@+id/dxzp_detail"
+        android:layout_width="match_parent"
+        android:text="电信诈骗详情页"
+        android:textSize="20sp"
+        android:padding="5dp"
+        android:layout_marginBottom="7dp"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:id="@+id/dxzp_fk"
+        android:layout_width="match_parent"
+        android:text="电信诈骗反馈"
+        android:textSize="20sp"
+        android:padding="5dp"
+        android:layout_marginBottom="7dp"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:id="@+id/push_init"
+        android:layout_width="match_parent"
+        android:text="推送初始化"
+        android:textSize="20sp"
+        android:padding="5dp"
+        android:layout_marginBottom="7dp"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:id="@+id/push_info"
+        android:layout_width="match_parent"
+        android:text="推送信息"
+        android:textSize="20sp"
+        android:padding="5dp"
+        android:layout_marginBottom="7dp"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:id="@+id/add_shr"
+        android:layout_width="match_parent"
+        android:text="受害人"
+        android:textSize="20sp"
+        android:padding="5dp"
+        android:layout_marginBottom="7dp"
+        android:layout_height="wrap_content"/>
+
+    <androidx.appcompat.widget.SwitchCompat
+        android:id="@+id/switch_smyj"
+        android:layout_width="60dp"
+        android:layout_height="34dp"
+        android:layout_marginLeft="12dp"
+        android:visibility="gone"
+        android:thumb="@drawable/switch_thumb"
+        app:track="@drawable/switch_track_style"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true"
+        android:layout_marginRight="12dp" />
 
 </LinearLayout>

+ 3 - 0
app/src/main/res/layout/fragment_rwzx.xml

@@ -179,6 +179,7 @@
                                                 android:layout_width="wrap_content"
                                                 android:layout_marginLeft="60dp"
                                                 android:text="9"
+                                                android:visibility="gone"
                                                 android:textColor="#ffffffff"
                                                 android:id="@+id/rwzx_tv_task_num_1"
                                                 android:textSize="12sp"
@@ -237,6 +238,7 @@
                                                 android:layout_width="wrap_content"
                                                 android:layout_marginLeft="60dp"
                                                 android:text="9"
+                                                android:visibility="gone"
                                                 android:textColor="#ffffffff"
                                                 android:id="@+id/rwzx_tv_task_num_2"
                                                 android:textSize="12sp"
@@ -295,6 +297,7 @@
                                                 android:layout_width="wrap_content"
                                                 android:layout_marginLeft="60dp"
                                                 android:text="99+"
+                                                android:visibility="gone"
                                                 android:textColor="#ffffffff"
                                                 android:id="@+id/rwzx_tv_task_num_3"
                                                 android:textSize="12sp"

+ 14 - 0
app/src/main/res/layout/include_keyboardview.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.zkjc.common.utils.MyKeyBoardView
+    android:id="@+id/keyboard_view"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:focusable="true"
+    android:paddingTop="0dp"
+    android:focusableInTouchMode="true"
+    android:keyBackground="@drawable/bg_keyboardview"
+    android:keyPreviewOffset="0dp"
+    android:keyTextColor="#000"
+    android:shadowColor="#fff"
+    android:shadowRadius="0.0"/>

+ 1 - 0
app/src/main/res/layout/item_dxzp.xml

@@ -5,6 +5,7 @@
     android:layout_marginTop="12dp"
     android:layout_marginLeft="16dp"
     android:layout_marginRight="16dp"
+    android:id="@+id/item_dxzp_layout_root"
     android:paddingBottom="12dp"
     android:background="@drawable/bg_shape_white_corner8"
     android:layout_height="wrap_content">

+ 27 - 0
app/src/main/res/layout/item_rb.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_vertical"
+    android:layout_centerVertical="true"
+    android:layout_marginTop="6dp"
+    android:layout_marginBottom="6dp"
+    android:id="@+id/item_root"
+    android:orientation="horizontal">
+
+    <ImageView
+        android:layout_width="16dp"
+        android:background="@drawable/selector_radio"
+        android:layout_height="16dp"/>
+
+    <TextView
+        android:id="@+id/tv_rb"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="拒接/未接通"
+        android:layout_marginLeft="8dp"
+        android:textColor="#ff111111"
+        android:textSize="14sp"
+        />
+
+</LinearLayout>

+ 177 - 0
app/src/main/res/layout/item_shr.xml

@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
+    android:background="@drawable/bg_shape_f8f8f8_corner8"
+    android:id="@+id/item_shr_layout_root"
+    android:layout_height="wrap_content">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:text="甄守海"
+        android:textColor="#ff111111"
+        android:id="@+id/item_shr_tv_name"
+        android:textSize="14sp"
+        android:layout_marginLeft="12dp"
+        android:layout_marginTop="12dp"
+        android:layout_height="wrap_content"/>
+    
+    <ImageView
+        android:layout_width="16dp"
+        android:layout_alignParentRight="true"
+        android:layout_marginTop="14dp"
+        android:id="@+id/item_shr_iv_delete"
+        android:layout_marginRight="12dp"
+        android:background="@drawable/btn_delete_gray"
+        android:layout_height="16dp"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:orientation="vertical"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="12dp"
+        android:layout_marginRight="12dp"
+        android:layout_marginBottom="12dp"
+        android:layout_below="@id/item_shr_tv_name"
+        android:layout_height="wrap_content">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:orientation="horizontal"
+            android:layout_marginTop="8dp"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:text="身份证号:"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:id="@+id/item_shr_tv_sfzh"
+                android:text="220121 1978 0304 6753 "
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:orientation="horizontal"
+            android:layout_marginTop="8dp"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:text="手机号码:"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:id="@+id/item_shr_tv_phone"
+                android:text="220121 1978 0304 6753 "
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:orientation="horizontal"
+            android:visibility="gone"
+            android:layout_marginTop="8dp"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:text="银行账号:"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:id="@+id/item_shr_tv_yh"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:orientation="horizontal"
+            android:layout_marginTop="8dp"
+            android:visibility="gone"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:text="支付宝号:"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:id="@+id/item_shr_tv_zfb"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:orientation="horizontal"
+            android:layout_marginTop="8dp"
+            android:visibility="gone"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:text="微信号:"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:id="@+id/item_shr_tv_wx"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:orientation="horizontal"
+            android:layout_marginTop="8dp"
+            android:visibility="gone"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:text="QQ号:"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:textColor="#ff666666"
+                android:id="@+id/item_shr_tv_qq"
+                android:textSize="12sp"
+                android:layout_height="wrap_content"/>
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</RelativeLayout>

+ 25 - 0
app/src/main/res/layout/item_sjh.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
+    android:orientation="vertical"
+    android:layout_height="wrap_content">
+
+    <TextView
+        android:layout_width="match_parent"
+        android:singleLine="true"
+        android:text="188 5678 6754(吉林长春|中国移动)"
+        android:textColor="#ff111111"
+        android:textSize="12sp"
+        android:layout_height="wrap_content"/>
+
+    <TextView
+        android:layout_width="match_parent"
+        android:singleLine="true"
+        android:text="2018-12-22 08:30:22 发现于警综平台"
+        android:layout_marginTop="4dp"
+        android:layout_marginBottom="8dp"
+        android:textColor="#ff999999"
+        android:textSize="12sp"
+        android:layout_height="wrap_content"/>
+
+</LinearLayout>

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است