From cbd0a1031306b14ef1e0b45fc231e0955be062cb Mon Sep 17 00:00:00 2001
From: wds <wds811@126.com>
Date: Thu, 15 Jul 2021 18:32:22 +0800
Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E8=AF=9D=E9=80=BB=E8=BE=91=EF=BC=8C?=
 =?UTF-8?q?=E5=85=85=E7=94=B5=E6=A1=A9=E6=8E=A5=E5=8F=A3=EF=BC=8C=E4=BF=AE?=
 =?UTF-8?q?=E6=94=B9=E4=B8=80=E9=83=A8=E5=88=86bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../outdoor/adapter/PoiRecycleAdapter.java    |  27 +-
 .../com/navinfo/outdoor/api/Constant.java     |   1 +
 .../bean/{PoiBean.java => PhoneBean.java}     |   4 +-
 .../fragment/ChargingPileFragment.java        |  89 +++++--
 .../fragment/ChargingStationFragment.java     | 115 +++++---
 .../outdoor/fragment/OtherFragment.java       |  46 +---
 .../navinfo/outdoor/fragment/PoiFragment.java | 118 ++++++---
 .../outdoor/fragment/PoiVideoFragment.java    |  40 +--
 .../outdoor/fragment/RoadFragment.java        |  21 +-
 .../outdoor/fragment/TreasureFragment.java    |   7 +-
 .../navinfo/outdoor/http/HttpInterface.java   |   6 +-
 .../outdoor/room/ChargingPileEntity.java      |   8 +-
 .../com/navinfo/outdoor/room/PoiEntity.java   |   2 +-
 .../navinfo/outdoor/ui/view/ContactView.java  | 245 ++++++++++++++++++
 .../res/layout/charging_station_fragment.xml  |   8 +
 app/src/main/res/layout/fragment_other.xml    |  45 ----
 app/src/main/res/layout/item_poi.xml          |   4 +-
 app/src/main/res/layout/poi_fragment.xml      |   9 +
 18 files changed, 529 insertions(+), 266 deletions(-)
 rename app/src/main/java/com/navinfo/outdoor/bean/{PoiBean.java => PhoneBean.java} (88%)
 create mode 100644 app/src/main/java/com/navinfo/outdoor/ui/view/ContactView.java

diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/PoiRecycleAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/PoiRecycleAdapter.java
index 835d73e..24ecfb1 100644
--- a/app/src/main/java/com/navinfo/outdoor/adapter/PoiRecycleAdapter.java
+++ b/app/src/main/java/com/navinfo/outdoor/adapter/PoiRecycleAdapter.java
@@ -3,21 +3,18 @@ package com.navinfo.outdoor.adapter;
 import android.content.Context;
 import android.text.Editable;
 import android.text.TextWatcher;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.WindowInsets;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.navinfo.outdoor.R;
-import com.navinfo.outdoor.bean.PoiBean;
+import com.navinfo.outdoor.bean.PhoneBean;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -27,19 +24,19 @@ import java.util.List;
  */
 public class PoiRecycleAdapter extends RecyclerView.Adapter<PoiRecycleAdapter.MyViewHolder> {
     private Context context;
-    private List<PoiBean> list=new ArrayList<>();
+    private List<PhoneBean> list=new ArrayList<>();
 
     public PoiRecycleAdapter(Context context) {
         this.context = context;
     }
 
-    public void setList(List<PoiBean> list) {
+    public void setList(List<PhoneBean> list) {
         this.list.addAll(list);
         notifyDataSetChanged();
     }
     public boolean getPhoneBean(){
         for (int i = 0; i < list.size(); i++) {
-            PoiBean poiBean = list.get(i);
+            PhoneBean poiBean = list.get(i);
             if (poiBean.getPhone()==null){
                 return false;
             }
@@ -51,7 +48,7 @@ public class PoiRecycleAdapter extends RecyclerView.Adapter<PoiRecycleAdapter.My
     public String getList() {
         String a="";
         for (int i = 0; i < list.size(); i++) {
-            PoiBean poiBean = list.get(i);
+            PhoneBean poiBean = list.get(i);
             if (list.size()==1){
                 if(poiBean.getPhone().indexOf('1')==0){
                     a=poiBean.getPhone();
@@ -88,9 +85,9 @@ public class PoiRecycleAdapter extends RecyclerView.Adapter<PoiRecycleAdapter.My
     }
 
     @Override
-    public void onBindViewHolder(MyViewHolder holder, final int position) {
-        PoiBean poiBean = list.get(position);
-        if(poiBean.getPhone().indexOf('1')==0){
+    public void onBindViewHolder(final MyViewHolder holder, final int position) {
+        PhoneBean poiBean = list.get(position);
+        if(poiBean.getPhone().startsWith("1")){
             holder.llPoi.setVisibility(View.GONE);
         }else {
             holder.llPoi.setVisibility(View.VISIBLE);
@@ -103,7 +100,7 @@ public class PoiRecycleAdapter extends RecyclerView.Adapter<PoiRecycleAdapter.My
             @Override
             public void onClick(View v) {
                 if (position == 0) {
-                    addData(new PoiBean("", "","", R.drawable.icon_del_bg));
+                    addData(new PhoneBean("", "","", R.drawable.icon_del_bg));
                 } else {
                     removeData(position);
                 }
@@ -122,7 +119,7 @@ public class PoiRecycleAdapter extends RecyclerView.Adapter<PoiRecycleAdapter.My
 
             @Override
             public void afterTextChanged(Editable s) {
-                String area = holder.editAreaCode.getText().toString().trim();
+                String area = s.toString().trim();
                 poiBean.setArea(area);
             }
         });
@@ -148,7 +145,7 @@ public class PoiRecycleAdapter extends RecyclerView.Adapter<PoiRecycleAdapter.My
 
             @Override
             public void afterTextChanged(Editable s) {
-                String str = holder.editPhoneNumber.getText().toString().trim();
+                String str = s.toString().trim();
                 poiBean.setPhone(str);
             }
         });
@@ -161,7 +158,7 @@ public class PoiRecycleAdapter extends RecyclerView.Adapter<PoiRecycleAdapter.My
     }
 
     // 添加数据
-    public void addData(PoiBean poiBean) {
+    public void addData(PhoneBean poiBean) {
         //在list中添加数据,并通知条目加入一条
         list.add(poiBean);
         //添加动画
diff --git a/app/src/main/java/com/navinfo/outdoor/api/Constant.java b/app/src/main/java/com/navinfo/outdoor/api/Constant.java
index fbba45e..ff5ccdd 100644
--- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java
+++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java
@@ -84,6 +84,7 @@ public class Constant {
     public static int  LIMIT_TTPE = -1; //权限类型,普通任务-0,专属任务-1
     public static int  TASK_TYPE = -1; // 任务类型
     public static int  TASK_STASTUS = -1; // 任务状态
+    public static String  CODE =""; //区号
     /**
      * 用户当前位置
      */
diff --git a/app/src/main/java/com/navinfo/outdoor/bean/PoiBean.java b/app/src/main/java/com/navinfo/outdoor/bean/PhoneBean.java
similarity index 88%
rename from app/src/main/java/com/navinfo/outdoor/bean/PoiBean.java
rename to app/src/main/java/com/navinfo/outdoor/bean/PhoneBean.java
index 1b0d23f..26dd291 100644
--- a/app/src/main/java/com/navinfo/outdoor/bean/PoiBean.java
+++ b/app/src/main/java/com/navinfo/outdoor/bean/PhoneBean.java
@@ -1,12 +1,12 @@
 package com.navinfo.outdoor.bean;
 
-public class PoiBean {
+public class PhoneBean {
     String name;
     String phone;
     String area;
     int image;
 
-    public PoiBean(String name, String phone, String area, int image) {
+    public PhoneBean(String name, String phone, String area, int image) {
         this.name = name;
         this.phone = phone;
         this.area = area;
diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java
index 679ef8d..fa9926e 100644
--- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java
+++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingPileFragment.java
@@ -82,7 +82,9 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
     private int cp_floor = 1;
     private int sign_exist = 0;
     private int cp_availableState = 0;
-    private CheckBox checkButton1, checkButton2, checkButton3, checkButton4, checkButton5, checkButton6;
+    private String buffer1="",buffer2="",buffer3="",buffer4="",buffer5="";
+    private StringBuffer openType = new StringBuffer();
+    private CheckBox checkButton1, checkButton2, checkButton3, checkButton4, checkButton5;
     private long pid;
     private String station;
     private LatLng latLng;
@@ -162,11 +164,15 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (isChecked){
+                    checkBoxLife.setText("保存");
+                    checkBoxLife.setTextColor(Color.WHITE);
                     Message obtain = Message.obtain();
                     obtain.what = Constant.MAIN_CHARGING_PILE;
                     obtain.obj = poiLatLng;
                     EventBus.getDefault().post(obtain);
                 }else {
+                    checkBoxLife.setText("编辑");
+                    checkBoxLife.setTextColor(Color.BLACK);
                     Message obtain = Message.obtain();
                     obtain.what = Constant.MAIN_CHARGING_CHECKED_PILE;
                     obtain.obj = true;
@@ -181,13 +187,15 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (isChecked) {
-
-                    Toast.makeText(getContext(), "1", Toast.LENGTH_SHORT).show();
+                    buffer1="1,";
+                    buffer2="";
+                    buffer3="";
+                    buffer4="";
+                    buffer5="";
                     checkButton2.setChecked(false);
                     checkButton3.setChecked(false);
                     checkButton4.setChecked(false);
                     checkButton5.setChecked(false);
-                    checkButton6.setChecked(false);
                 }
             }
         });
@@ -196,7 +204,9 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (isChecked) {
-                    Toast.makeText(getContext(), "2", Toast.LENGTH_SHORT).show();
+                    buffer2="2,";
+                }else {
+                    buffer2="";
                 }
             }
         });
@@ -205,7 +215,9 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (isChecked) {
-                    Toast.makeText(getContext(), "3", Toast.LENGTH_SHORT).show();
+                    buffer3="3,";
+                }else {
+                    buffer3="";
                 }
             }
         });
@@ -214,7 +226,9 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (isChecked) {
-                    Toast.makeText(getContext(), "4", Toast.LENGTH_SHORT).show();
+                    buffer4="4,";
+                }else {
+                    buffer4="";
                 }
             }
         });
@@ -223,7 +237,9 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (isChecked) {
-                    Toast.makeText(getContext(), "5", Toast.LENGTH_SHORT).show();
+                    buffer5="5,";
+                }else {
+                    buffer5="";
                 }
             }
         });
@@ -396,6 +412,11 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
             if (name != null) {
                 editNameContent.setText(name + "");
             }
+            if (editNameContent.getText().toString()!=null&&!editNameContent.getText().toString().trim().equals("")){
+                editNameContent.setEnabled(false);
+            }else {
+                editNameContent.setEnabled(true);
+            }
             String p = chargingPileEntity.getP();
             if (p != null) {
                 latLng = GeometryTools.createLatLng(p);
@@ -507,7 +528,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
         checkButton3.setEnabled(false);//开放状态3
         checkButton4.setEnabled(false);//开放状态4
         checkButton5.setEnabled(false);//开放状态5
-        checkButton6.setEnabled(false);//开放状态6
         spinnerType.setEnabled(false);//充电地面层
         rlPanorama.setEnabled(false);//全景照片
         rlCoding.setEnabled(false);//充电桩编码
@@ -564,9 +584,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                                     } else {
                                         chargingPileEntity.setName(name);
                                     }
-                                    if (cp_floor != 0) {
-                                        chargingPileEntity.setCp_floor(cp_floor);
-                                    }
                                     String tagPanorama = (String) ivPanorama.getTag();
                                     if (tagPanorama == null) {
                                         Toast.makeText(getActivity(), "请拍照 全景图", Toast.LENGTH_SHORT).show();
@@ -645,13 +662,28 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                                         photoBean.add(tagNumber);
                                     }
                                     chargingPileEntity.setPhotos(photoBean);
+                                    if (buffer1!=null&&!buffer1.equals("")){
+                                        openType.delete(0,openType.length());
+                                        openType.append(buffer1);
+                                        String charAt = openType.deleteCharAt(openType.length() - 1).toString();
+                                        chargingPileEntity.setCp_openType(charAt);
+                                    }else {
+                                        openType.delete(0,openType.length());
+                                        openType.append(buffer2);
+                                        openType.append(buffer3);
+                                        openType.append(buffer4);
+                                        openType.append(buffer5);
+                                        String charAt = openType.deleteCharAt(openType.length() - 1).toString();
+                                        chargingPileEntity.setCp_openType(charAt);
+                                    }
+
+                                    if (cp_floor != 0) {
+                                        chargingPileEntity.setCp_floor(cp_floor);
+                                    }
                                     chargingPileEntity.setSign_exist(sign_exist);
                                     chargingPileEntity.setCp_availableState(cp_availableState);
                                     String describe = editDescribe.getText().toString().trim();
-                                    if (describe == null || describe.equals("")) {
-                                        Toast.makeText(getActivity(), "请输入任务描述", Toast.LENGTH_SHORT).show();
-                                        return;
-                                    } else {
+                                    if (describe != null && !describe.equals("")) {
                                         chargingPileEntity.setMemo(describe);
                                     }
                                     if (pid == 0) {
@@ -670,7 +702,7 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                                     obtain.obj = chargingPileEntity;
                                     EventBus.getDefault().post(obtain);
                                     chargingPileByWork(chargingPileEntity);
-                                    //onBackPressed();
+
                                 } else {
                                     Toast.makeText(getActivity(), "没有申请权限,请手动申请", Toast.LENGTH_SHORT).show();
                                 }
@@ -760,6 +792,7 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                         dismissLoadingDialog();
                         Toast.makeText(getActivity(), "保存成功", Toast.LENGTH_SHORT).show();
                         Log.d("TAG", "onSuccess: " + chargingPileSaveBean.getBody());
+                        getActivity().onBackPressed();
                     }
 
                     @Override
@@ -771,6 +804,7 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                 }).build();
     }
 
+
     @Override
     public void onSaveInstanceState(@NonNull Bundle outState) {
         super.onSaveInstanceState(outState);
@@ -851,6 +885,17 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
         if (pid != 0) {
             chargingPileEntity.setFid(pid);
         }
+        if (buffer1!=null&&!buffer1.equals("")){
+            chargingPileEntity.setCp_openType(buffer1);
+        }else {
+            openType.reverse();
+            openType.append(buffer2);
+            openType.append(buffer3);
+            openType.append(buffer4);
+            openType.append(buffer5);
+            String charAt = openType.deleteCharAt(openType.length() - 1).toString();
+            chargingPileEntity.setCp_openType(charAt);
+        }
         String newChargingPileEntity = new Gson().toJson(chargingPileEntity);
         //以键值对的形式添加新值。
         edit.putString("chargingPileEntity", newChargingPileEntity);
@@ -881,7 +926,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-               //int angle1 = PictureUtil.readPictureDegree(takePhotoPath1);
                 takePhotoPath1 = PhotoPathUtil.getTakePhotoPath(data, "a",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivPanorama.setTag(takePhotoPath1);
                 ivPanorama.setImageBitmap(bitmap);//显示图像
@@ -902,7 +946,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-               //int angle2 = PictureUtil.readPictureDegree(takePhotoPath2);
                 takePhotoPath2 = PhotoPathUtil.getTakePhotoPath(data, "b",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivCoding.setTag(takePhotoPath2);
                 ivCoding.setImageBitmap(bitmap);//显示图像
@@ -923,7 +966,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-                int angle3 = PictureUtil.readPictureDegree(takePhotoPath3);
                 takePhotoPath3 = PhotoPathUtil.getTakePhotoPath(data, "c",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivEquipment.setImageBitmap(bitmap);//显示图像
                 ivEquipment.setTag(takePhotoPath3);
@@ -944,7 +986,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-                int angle4 = PictureUtil.readPictureDegree(takePhotoPath4);
                 takePhotoPath4 = PhotoPathUtil.getTakePhotoPath(data, "c",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivFacility.setTag(takePhotoPath4);
                 ivFacility.setImageBitmap(bitmap);//显示图像
@@ -965,7 +1006,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-                int angle5 = PictureUtil.readPictureDegree(takePhotoPath5);
                 takePhotoPath5 = PhotoPathUtil.getTakePhotoPath(data, "c",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivScutcheon.setTag(takePhotoPath5);
                 ivScutcheon.setImageBitmap(bitmap);//显示图像
@@ -986,7 +1026,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-                int angle6 = PictureUtil.readPictureDegree(takePhotoPath6);
                 takePhotoPath6 = PhotoPathUtil.getTakePhotoPath(data, "c",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivDevice.setTag(takePhotoPath6);
                 ivDevice.setImageBitmap(bitmap);//显示图像
@@ -1007,7 +1046,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-                int angle7 = PictureUtil.readPictureDegree(takePhotoPath7);
                 takePhotoPath7 = PhotoPathUtil.getTakePhotoPath(data, "d",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivUsable.setTag(takePhotoPath7);
                 ivUsable.setImageBitmap(bitmap);//显示图像
@@ -1028,7 +1066,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-                int angle8 = PictureUtil.readPictureDegree(takePhotoPath8);
                 takePhotoPath8 = PhotoPathUtil.getTakePhotoPath(data, "d",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivAvailable.setTag(takePhotoPath8);
                 ivAvailable.setImageBitmap(bitmap);//显示图像
@@ -1049,7 +1086,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-                int angle9 = PictureUtil.readPictureDegree(takePhotoPath9);
                 takePhotoPath9 = PhotoPathUtil.getTakePhotoPath(data, "e",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivParking.setImageBitmap(bitmap);//显示图像
                 ivParking.setTag(takePhotoPath9);
@@ -1070,7 +1106,6 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC
                     }
                 });
             } else {
-                int angle10 = PictureUtil.readPictureDegree(takePhotoPath10);
                 takePhotoPath10 = PhotoPathUtil.getTakePhotoPath(data, "e",Geohash.getInstance().encode(latLng.latitude,latLng.longitude));
                 ivNumber.setImageBitmap(bitmap);//显示图像
                 ivNumber.setTag(takePhotoPath10);
diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java
index f41eda7..b1ca3e1 100644
--- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java
+++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java
@@ -3,6 +3,7 @@ package com.navinfo.outdoor.fragment;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Bitmap;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.os.Message;
 import android.util.Log;
@@ -24,9 +25,7 @@ import android.widget.Toast;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.AppCompatActivity;
-import androidx.recyclerview.widget.DividerItemDecoration;
 import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.bumptech.glide.Glide;
@@ -42,12 +41,11 @@ import com.kongzue.dialog.v3.MessageDialog;
 import com.lzy.okgo.model.HttpParams;
 import com.navinfo.outdoor.R;
 import com.navinfo.outdoor.adapter.ChargingPileAdapter;
-import com.navinfo.outdoor.adapter.PoiRecycleAdapter;
 import com.navinfo.outdoor.api.Constant;
 import com.navinfo.outdoor.base.BaseDrawerFragment;
 import com.navinfo.outdoor.bean.ChargingStationBean;
 import com.navinfo.outdoor.bean.Info;
-import com.navinfo.outdoor.bean.PoiBean;
+import com.navinfo.outdoor.bean.PhoneBean;
 import com.navinfo.outdoor.http.Callback;
 import com.navinfo.outdoor.http.HttpInterface;
 import com.navinfo.outdoor.http.OkGoBuilder;
@@ -57,6 +55,7 @@ import com.navinfo.outdoor.room.InsertAndUpdateUtils;
 import com.navinfo.outdoor.room.PoiDao;
 import com.navinfo.outdoor.room.PoiDatabase;
 import com.navinfo.outdoor.room.PoiEntity;
+import com.navinfo.outdoor.ui.view.ContactView;
 import com.navinfo.outdoor.util.Geohash;
 import com.navinfo.outdoor.util.PhotoPathUtil;
 import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
@@ -84,9 +83,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
     private ImageView ivPanorama, ivName, ivInternal, ivElse, ivScutcheon;
     private TextView tvExamine;
     private EditText editNameContent, editSiteContent;
-    private RecyclerView recyclerPhone;
-    private PoiRecycleAdapter poiRecycleAdapter;
-    private ArrayList<PoiBean> poiBeans;
+    private ArrayList<PhoneBean> poiBeans;
     private Button btnSaveLocal;
     private Button btnUploading;
     private PoiDatabase poiDatabase;
@@ -96,6 +93,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
     private Spinner spinnerType;
     String[] ctype = new String[]{"充电站", "充换电站", "充电桩组", "换电站"};//1."充电站"2 "充换电站"3 "充电桩组"4 "换电站"5 ,
     String[] spinner = new String[]{"存在", "不存在", "无法验证"};
+    private int existence=0;
     private ArrayAdapter<String> adapter;
     private LinearLayout linearChargingPile;
     private RecyclerView recyclerStation;
@@ -107,6 +105,8 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
     private RelativeLayout linearExist;
     private Spinner spinnerExist;
     private Integer body;
+    private LinearLayout linearContact;
+    private ContactView contactView;
 
     public static ChargingStationFragment newInstance(Bundle bundle) {
         ChargingStationFragment fragment = new ChargingStationFragment();
@@ -179,6 +179,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
                 }
                 if (isSliding) {
                     // 监听到返回按钮点击事件
+
                     Message obtain = Message.obtain();
                     obtain.what = Constant.TREASURE_FRAGMENT;
                     obtain.obj = isSliding;
@@ -206,11 +207,15 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (isChecked) {
+                    checkBoxLife.setText("保存");
+                    checkBoxLife.setTextColor(Color.WHITE);
                     Message obtain = Message.obtain();
                     obtain.what = Constant.MAIN_CHARGING_STATION;
                     obtain.obj = latLng;
                     EventBus.getDefault().post(obtain);
                 } else {
+                    checkBoxLife.setText("编辑");
+                    checkBoxLife.setTextColor(Color.BLACK);
                     Message obtain = Message.obtain();
                     obtain.what = Constant.MAIN_CHARGING_CHECKED_STATION;
                     obtain.obj = true;
@@ -258,10 +263,13 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                 switch (position) {
                     case 0:
+                        existence=0;
                         break;
                     case 1:
+                        existence=1;
                         break;
                     case 2:
+                        existence=2;
                         break;
                 }
             }
@@ -284,6 +292,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
         editDescribe = findViewById(R.id.edit_describe);
         ivPanorama = findViewById(R.id.iv_panorama);
         ivName = findViewById(R.id.iv_name);
+        linearContact = findViewById(R.id.linear_contact);
         ivInternal = findViewById(R.id.iv_internal);
         ivElse = findViewById(R.id.iv_else);
         ivScutcheon = findViewById(R.id.iv_scutcheon);
@@ -297,11 +306,12 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
         rlElse.setOnClickListener(this::onClick);
         rlScutcheon = findViewById(R.id.rl_scutcheon);
         rlScutcheon.setOnClickListener(this::onClick);
-        recyclerPhone = findViewById(R.id.recycler_phone);
+
+       /* recyclerPhone = findViewById(R.id.recycler_phone);
         recyclerPhone.setLayoutManager(new LinearLayoutManager(getContext()));
         recyclerPhone.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
         poiRecycleAdapter = new PoiRecycleAdapter(getContext());
-        recyclerPhone.setAdapter(poiRecycleAdapter);
+        recyclerPhone.setAdapter(poiRecycleAdapter);*/
         recyclerStation = findViewById(R.id.recycler_station);
         recyclerStation.setLayoutManager(new GridLayoutManager(getContext(), 3));
         chargingPileAdapter = new ChargingPileAdapter(getContext());
@@ -340,6 +350,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
             latLng.setLatitude(Double.parseDouble(y));
             latLng.setLongitude(Double.parseDouble(x));
         }
+        initPhone();
         String describe = showPoiEntity.getDescribe();//任务描述
         if (describe != null && !describe.equals("")) {
             editDescribe.setText(describe);
@@ -354,9 +365,9 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
                     if (!StringUtils.isEmpty(phones[i])) {
                         String[] split = phones[i].split("-");
                         if (split[0] == phones[i]) {
-                            poiBeans.add(new PoiBean("电话*", phones[i], "", R.drawable.icon_add_bg));
+                            poiBeans.add(new PhoneBean("电话*", phones[i], "", R.drawable.icon_add_bg));
                         } else {
-                            poiBeans.add(new PoiBean("电话*", split[1], split[0], R.drawable.icon_add_bg));
+                            poiBeans.add(new PhoneBean("电话*", split[1], split[0], R.drawable.icon_add_bg));
                         }
 
                     }
@@ -364,22 +375,29 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
                     if (!StringUtils.isEmpty(phones[i])) {
                         String[] split = phones[i].split("-");
                         if (split[0] == phones[i]) {
-                            poiBeans.add(new PoiBean("", phones[i], "", R.drawable.icon_del_bg));
+                            poiBeans.add(new PhoneBean("", phones[i], "", R.drawable.icon_del_bg));
                         } else {
-                            poiBeans.add(new PoiBean("", split[1], split[0], R.drawable.icon_del_bg));
+                            poiBeans.add(new PhoneBean("", split[1], split[0], R.drawable.icon_del_bg));
                         }
                     }
                 }
 
             }
         } else {
-            poiBeans.add(new PoiBean("电话*", "", "", R.drawable.icon_add_bg));
+            if (Constant.CODE==null||Constant.CODE.equals("")){
+                poiBeans.add(new PhoneBean("电话*", "", "", R.drawable.icon_add_bg));
+            }else {
+                poiBeans.add(new PhoneBean("电话*", "", Constant.CODE, R.drawable.icon_add_bg));
+            }
+
         }
-        body = showPoiEntity.getBodyId();
-        poiRecycleAdapter.setList(poiBeans);
+        body=showPoiEntity.getBodyId();
+        contactView = new ContactView(getActivity(), linearContact, poiBeans);
+        contactView.resetView();
+        //poiRecycleAdapter.setList(poiBeans);
         if (showPoiEntity.getName() != null) {
             linearExist.setVisibility(View.VISIBLE);
-
+            spinnerExist.setSelection(showPoiEntity.getExistence(), true);
         }
         if (showPoiEntity.getPhotoInfo() != null) {
             for (int i = 0; i < showPoiEntity.getPhotoInfo().size(); i++) {
@@ -447,7 +465,39 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
             EventBus.getDefault().post(obtain);
         }
     }
+    /**
+     * 得到电话区号,电话位数
+     */
+    private void initPhone() {
+        String encode = Geohash.getInstance().encode(latLng.latitude, latLng.longitude);
+        if (encode == null) {
+            Toast.makeText(getActivity(), "没有确定经纬度", Toast.LENGTH_SHORT).show();
+            return;
+        }
+        showLoadingDialog();
+        OkGoBuilder.getInstance()
+                .Builder(getActivity())
+                .url(HttpInterface.GET_PHONES)
+                .method(OkGoBuilder.GET)
+                .params(new HttpParams("geo",encode))
+                .cls(GetPhoneBean.class)
+                .callback(new Callback<GetPhoneBean>() {
+                    @Override
+                    public void onSuccess(GetPhoneBean getPhoneBean, int id) {
+                        dismissLoadingDialog();
+                        if (getPhoneBean.getCode()==200){
+                            String code = getPhoneBean.getBody().getCode();
+                            Constant.CODE=code;
+                        }
+                    }
 
+                    @Override
+                    public void onError(Throwable e, int id) {
+                        dismissLoadingDialog();
+                        Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
+                    }
+                }).build();
+    }
     public void initRemovePileSharePre() {
         //获取SharedPreferences对象,方法中两个参数的意思为:第一个name
         //表示文件名,系统将会在/dada/dada/包名/shared_prefs目录下生成
@@ -469,7 +519,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
         editNameContent.setEnabled(false);
         tvExamine.setEnabled(false);
         editSiteContent.setEnabled(false);
-        recyclerPhone.setEnabled(false);
+        linearContact.setEnabled(false);
         ivPanorama.setEnabled(false);
         ivName.setEnabled(false);
         ivInternal.setEnabled(false);
@@ -521,10 +571,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
                                         poiEntity.setName(name);
                                     }
                                     String site = editSiteContent.getText().toString().trim();
-                                    if (site == null || site.equals("")) {
-                                        Toast.makeText(getActivity(), "请输入充电站 地址", Toast.LENGTH_SHORT).show();
-                                        return;
-                                    } else {
+                                    if (site != null && !site.equals("")) {
                                         poiEntity.setAddress(site);
                                     }
                                     if (latLng == null) {
@@ -537,19 +584,13 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
                                         poiEntity.setY(String.valueOf(latLng.latitude));
                                     }
                                     String describe = editDescribe.getText().toString().trim();
-                                    if (describe == null || describe.equals("")) {
-                                        Toast.makeText(getActivity(), "请输入任务描述", Toast.LENGTH_SHORT).show();
-                                        return;
-                                    } else {
+                                    if (describe != null && !describe.equals("")) {
                                         poiEntity.setDescribe(describe);
                                     }
-                                    boolean phoneBean = poiRecycleAdapter.getPhoneBean();
+                                    boolean phoneBean = contactView.getPhoneBean();
                                     if (phoneBean){
-                                        String list = poiRecycleAdapter.getList();
+                                        String list = contactView.getList();
                                         poiEntity.setTelPhone(list);
-                                    }else {
-                                        Toast.makeText(getActivity(), "请输入手机号", Toast.LENGTH_SHORT).show();
-                                        return;
                                     }
                                     String tagPanorama = (String) ivPanorama.getTag();
                                     if (tagPanorama == null) {
@@ -586,7 +627,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
                                     } else {
                                         infoPhoto.add(new Info(tagScutcheon));
                                     }
-
+                                    poiEntity.setExistence(existence);
                                     poiEntity.setPhotoInfo(infoPhoto);
                                     poiEntity.setStation_type(station_type);
                                     DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -776,9 +817,9 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
         if (describe != null && !describe.equals("")) {
             poiEntity.setDescribe(describe);
         }
-        boolean phoneBean = poiRecycleAdapter.getPhoneBean();
+        boolean phoneBean = contactView.getPhoneBean();
         if (phoneBean){
-            String list = poiRecycleAdapter.getList();
+            String list = contactView.getList();
             poiEntity.setTelPhone(list);
         }
         String tagPanorama = (String) ivPanorama.getTag();
@@ -808,6 +849,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
         calendar.setTimeInMillis(System.currentTimeMillis());
         String format = formatter.format(calendar.getTime());
         poiEntity.setCreateTime(format);
+        poiEntity.setExistence(existence);
         poiEntity.setType(2);
         poiEntity.setTaskStatus(2);
         poiEntity.setIsLocalData(1);
@@ -853,9 +895,9 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
         if (describe != null && !describe.equals("")) {
             poiEntity.setDescribe(describe);
         }
-        boolean phoneBean = poiRecycleAdapter.getPhoneBean();
+        boolean phoneBean = contactView.getPhoneBean();
         if (phoneBean){
-            String list = poiRecycleAdapter.getList();
+            String list = contactView.getList();
             poiEntity.setTelPhone(list);
         }
         String tagPanorama = (String) ivPanorama.getTag();
@@ -885,6 +927,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
         calendar.setTimeInMillis(System.currentTimeMillis());
         String format = formatter.format(calendar.getTime());
         poiEntity.setCreateTime(format);
+        poiEntity.setExistence(existence);
         poiEntity.setType(2);
         poiEntity.setTaskStatus(2);
         poiEntity.setIsLocalData(1);
diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java
index 610c169..c087b9f 100644
--- a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java
+++ b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java
@@ -3,6 +3,7 @@ package com.navinfo.outdoor.fragment;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Bitmap;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.os.Message;
 import android.util.Log;
@@ -85,9 +86,6 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis
     private PoiEntity showPoiEntity;
     private LatLng latLng;
     private int station_type = 6;
-    String[] spinner = new String[]{"存在", "不存在", "无法验证"};
-    private RelativeLayout linearExist;
-    private Spinner spinnerExist;
 
 
     private String takePhotoPath;
@@ -182,11 +180,15 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (isChecked) {
+                    checkPot.setText("保存");
+                    checkPot.setTextColor(Color.WHITE);
                     Message obtain = Message.obtain();
                     obtain.what = Constant.MAIN_OTHER;
                     obtain.obj = latLng;
                     EventBus.getDefault().post(obtain);
                 } else {
+                    checkPot.setText("编辑");
+                    checkPot.setTextColor(Color.BLACK);
                     Message obtain = Message.obtain();
                     obtain.what = Constant.MAIN_CHECKED_OTHER;
                     obtain.obj = true;
@@ -206,31 +208,6 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis
         btnOtherLocal.setOnClickListener(this::onClick);
         btnOtherUploading = findViewById(R.id.btn_other_uploading);
         btnOtherUploading.setOnClickListener(this::onClick);
-        linearExist = findViewById(R.id.linear_exist);
-        spinnerExist = findViewById(R.id.spinner_exist);
-        ArrayAdapter<String> adapterExist = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, spinner);
-        adapterExist.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //设置下拉列表框的下拉选项样式
-        spinnerExist.setAdapter(adapterExist);
-        spinnerExist.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-            @Override
-            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                switch (position) {
-                    case 0:
-
-                        break;
-                    case 1:
-
-                        break;
-                    case 2:
-
-                        break;
-                }
-            }
-
-            @Override
-            public void onNothingSelected(AdapterView<?> parent) {
-            }
-        });
         //数据展示
         initShowPoi();
 
@@ -269,9 +246,6 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis
                 editOtherDescribe.setText(describe);
             }
 
-            if (showPoiEntity.getName() != null) {
-                linearExist.setVisibility(View.VISIBLE);
-            }
 
             body = showPoiEntity.getBodyId();
 
@@ -335,10 +309,7 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis
                                         poiEntity.setY(String.valueOf(latLng.latitude));
                                     }
                                     String describe = editOtherDescribe.getText().toString().trim();
-                                    if (describe == null || describe.equals("")) {
-                                        Toast.makeText(getActivity(), "请输入任务描述", Toast.LENGTH_SHORT).show();
-                                        return;
-                                    } else {
+                                    if (describe != null&&!describe.equals("")) {
                                         poiEntity.setDescribe(describe);
                                     }
                                     String tagPicture = (String) ivPicture.getTag();
@@ -539,11 +510,6 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis
         if (tagPictures != null && !tagPictures.equals("")) {
             arrayList.add(new Info(tagPictures));
         }
-        if (showPoiEntity != null) {
-            if (showPoiEntity.getTaskId() != 0) {
-                poiEntity.setTaskId(showPoiEntity.getTaskId());
-            }
-        }
         poiEntity.setPhotoInfo(arrayList);
         poiEntity.setStation_type(station_type);
         DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java
index 0179c79..aa67731 100644
--- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java
+++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java
@@ -3,6 +3,7 @@ package com.navinfo.outdoor.fragment;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Bitmap;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.os.Message;
 import android.util.Log;
@@ -15,6 +16,7 @@ import android.widget.CheckBox;
 import android.widget.CompoundButton;
 import android.widget.EditText;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.Spinner;
 import android.widget.TextView;
@@ -23,12 +25,8 @@ import android.widget.Toast;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.AppCompatActivity;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
 
 import com.bumptech.glide.Glide;
-import com.github.lazylibrary.util.DensityUtil;
 import com.github.lazylibrary.util.StringUtils;
 import com.google.gson.Gson;
 import com.hjq.permissions.OnPermissionCallback;
@@ -42,13 +40,13 @@ import com.lzy.okgo.OkGo;
 import com.lzy.okgo.model.HttpParams;
 import com.lzy.okgo.model.Response;
 import com.navinfo.outdoor.R;
-import com.navinfo.outdoor.adapter.PoiRecycleAdapter;
 import com.navinfo.outdoor.api.Constant;
 import com.navinfo.outdoor.base.BaseDrawerFragment;
 import com.navinfo.outdoor.bean.Info;
 import com.navinfo.outdoor.bean.OtherUploadPicBean;
-import com.navinfo.outdoor.bean.PoiBean;
+import com.navinfo.outdoor.bean.PhoneBean;
 import com.navinfo.outdoor.bean.PoiSaveBean;
+import com.navinfo.outdoor.bean.PoiVideoBean;
 import com.navinfo.outdoor.http.Callback;
 import com.navinfo.outdoor.http.DialogCallback;
 import com.navinfo.outdoor.http.HttpInterface;
@@ -57,6 +55,7 @@ import com.navinfo.outdoor.room.InsertAndUpdateUtils;
 import com.navinfo.outdoor.room.PoiDao;
 import com.navinfo.outdoor.room.PoiDatabase;
 import com.navinfo.outdoor.room.PoiEntity;
+import com.navinfo.outdoor.ui.view.ContactView;
 import com.navinfo.outdoor.util.Geohash;
 import com.navinfo.outdoor.util.PhotoPathUtil;
 import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
@@ -82,9 +81,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
     private ImageView ivPanorama, ivName, ivInternal, ivCard, ivElse;
     private TextView tvExamine;
     private EditText editNameContent, editSiteContent;
-    private RecyclerView recyclerPhone;
-    private PoiRecycleAdapter poiRecycleAdapter;
-    private ArrayList<PoiBean> poiBeans;
+    private ArrayList<PhoneBean> poiBeans;
     private Button btnSaveLocal;
     private Button btnUploading;
     private PoiDatabase poiDatabase;
@@ -94,6 +91,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
     private PoiEntity showPoiEntity;
     private LatLng latLng;
     String[] spinner = new String[]{"存在", "不存在", "无法验证"};
+    private int existence=0;
     private RelativeLayout linearExist;
     private Spinner spinnerExist;
 
@@ -104,6 +102,8 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
     private String takePhotoPath3;
     private String takePhotoPath1;
     private Integer body;
+    private LinearLayout linearContact;
+    private ContactView contactView;
 
     public static PoiFragment newInstance(Bundle bundle) {
         PoiFragment fragment = new PoiFragment();
@@ -169,11 +169,15 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
             @Override
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (isChecked) {
+                    checkBoxLife.setText("保存");
+                    checkBoxLife.setTextColor(Color.WHITE);
                     Message obtain = Message.obtain();
                     obtain.what = Constant.TREASURE_WORD;
                     obtain.obj = latLng;
                     EventBus.getDefault().post(obtain);
                 } else {
+                    checkBoxLife.setText("编辑");
+                    checkBoxLife.setTextColor(Color.BLACK);
                     Message obtain = Message.obtain();
                     obtain.what = Constant.TREASURE_CHECKED_WORD;
                     obtain.obj = true;
@@ -195,6 +199,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
         ivPanorama = findViewById(R.id.iv_panorama);
         ivName = findViewById(R.id.iv_name);
         ivInternal = findViewById(R.id.iv_internal);
+        linearContact = findViewById(R.id.linear_contact);
         ivCard = findViewById(R.id.iv_card);
         ivElse = findViewById(R.id.iv_else);
         rlPanorama = findViewById(R.id.rl_panorama);
@@ -217,10 +222,13 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                 switch (position) {
                     case 0:
+                        existence=0;
                         break;
                     case 1:
+                        existence=1;
                         break;
                     case 2:
+                        existence=2;
                         break;
                 }
             }
@@ -230,17 +238,16 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
             }
         });
 
-        recyclerPhone = findViewById(R.id.recycler_phone);
+      /*recyclerPhone = findViewById(R.id.recycler_phone);
         recyclerPhone.setLayoutManager(new LinearLayoutManager(getContext()));
         recyclerPhone.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
         poiRecycleAdapter = new PoiRecycleAdapter(getContext());
-        recyclerPhone.setAdapter(poiRecycleAdapter);
+        recyclerPhone.setAdapter(poiRecycleAdapter);*/
         //数据展示
         initShowPoi();
         //禁用所有可操作控件
         //disables();
 
-
     }
 
     private void initShowPoi() {
@@ -261,6 +268,8 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
             latLng.setLatitude(Double.parseDouble(y));
             latLng.setLongitude(Double.parseDouble(x));
         }
+        initPhone();
+
         String describe = showPoiEntity.getDescribe();//任务描述
         if (describe != null && !describe.equals("")) {
             editDescribe.setText(describe);
@@ -273,9 +282,9 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
                     if (!StringUtils.isEmpty(phones[i])) {
                         String[] split = phones[i].split("-");
                         if (split[0] == phones[i]) {
-                            poiBeans.add(new PoiBean("电话*", phones[i], "", R.drawable.icon_add_bg));
+                            poiBeans.add(new PhoneBean("电话*", phones[i], "", R.drawable.icon_add_bg));
                         } else {
-                            poiBeans.add(new PoiBean("电话*", split[1], split[0], R.drawable.icon_add_bg));
+                            poiBeans.add(new PhoneBean("电话*", split[1], split[0], R.drawable.icon_add_bg));
                         }
 
                     }
@@ -283,21 +292,29 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
                     if (!StringUtils.isEmpty(phones[i])) {
                         String[] split = phones[i].split("-");
                         if (split[0] == phones[i]) {
-                            poiBeans.add(new PoiBean("", phones[i], "", R.drawable.icon_del_bg));
+                            poiBeans.add(new PhoneBean("", phones[i], "", R.drawable.icon_del_bg));
                         } else {
-                            poiBeans.add(new PoiBean("", split[1], split[0], R.drawable.icon_del_bg));
+                            poiBeans.add(new PhoneBean("", split[1], split[0], R.drawable.icon_del_bg));
                         }
                     }
                 }
 
             }
         } else {
-            poiBeans.add(new PoiBean("电话*", "", "", R.drawable.icon_add_bg));
+            if (Constant.CODE==null||Constant.CODE.equals("")){
+                poiBeans.add(new PhoneBean("电话*", "", "", R.drawable.icon_add_bg));
+            }else {
+                poiBeans.add(new PhoneBean("电话*", "", Constant.CODE, R.drawable.icon_add_bg));
+            }
+
         }
         body=showPoiEntity.getBodyId();
-        poiRecycleAdapter.setList(poiBeans);
+        contactView = new ContactView(getActivity(), linearContact, poiBeans);
+        contactView.resetView();
+        //poiRecycleAdapter.setList(poiBeans);
         if (showPoiEntity.getName()!=null){
             linearExist.setVisibility(View.VISIBLE);
+            spinnerExist.setSelection(showPoiEntity.getExistence(), true);
         }
         if (showPoiEntity.getPhotoInfo() != null) {
             for (int i = 0; i < showPoiEntity.getPhotoInfo().size(); i++) {
@@ -323,6 +340,40 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
         }
     }
 
+    /**
+     * 得到电话区号,电话位数
+     */
+    private void initPhone() {
+        String encode = Geohash.getInstance().encode(latLng.latitude, latLng.longitude);
+        if (encode == null) {
+            Toast.makeText(getActivity(), "没有确定经纬度", Toast.LENGTH_SHORT).show();
+            return;
+        }
+        showLoadingDialog();
+        OkGoBuilder.getInstance()
+                .Builder(getActivity())
+                .url(HttpInterface.GET_PHONES)
+                .method(OkGoBuilder.GET)
+                .params(new HttpParams("geo",encode))
+                .cls(GetPhoneBean.class)
+                .callback(new Callback<GetPhoneBean>() {
+                    @Override
+                    public void onSuccess(GetPhoneBean getPhoneBean, int id) {
+                        dismissLoadingDialog();
+                        if (getPhoneBean.getCode()==200){
+                            String code = getPhoneBean.getBody().getCode();
+                            Constant.CODE=code;
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e, int id) {
+                        dismissLoadingDialog();
+                        Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
+                    }
+                }).build();
+    }
+
 
     //禁用所有可操作性控件
     private void disables() {
@@ -330,7 +381,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
         editNameContent.setEnabled(false);
         tvExamine.setEnabled(false);
         editSiteContent.setEnabled(false);
-        recyclerPhone.setEnabled(false);
+        linearContact.setEnabled(false);
         ivPanorama.setEnabled(false);
         ivName.setEnabled(false);
         ivInternal.setEnabled(false);
@@ -345,6 +396,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
         super.initData();
         //存储手机号对象
         poiBeans = new ArrayList<>();
+
     }
 
 
@@ -377,10 +429,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
                                         poiEntity.setName(name);
                                     }
                                     String site = editSiteContent.getText().toString().trim();
-                                    if (site == null || site.equals("")) {
-                                        Toast.makeText(getActivity(), "请输入poi 地址", Toast.LENGTH_SHORT).show();
-                                        return;
-                                    } else {
+                                    if (site != null && !site.equals("")) {
                                         poiEntity.setAddress(site);
                                     }
                                     if (latLng == null) {
@@ -393,19 +442,13 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
                                         poiEntity.setY(String.valueOf(latLng.latitude));
                                     }
                                     String describe = editDescribe.getText().toString().trim();
-                                    if (describe == null || describe.equals("")) {
-                                        Toast.makeText(getActivity(), "请输入任务描述", Toast.LENGTH_SHORT).show();
-                                        return;
-                                    } else {
+                                    if (describe != null&&!describe.equals("")) {
                                         poiEntity.setDescribe(describe);
                                     }
-                                    boolean phoneBean = poiRecycleAdapter.getPhoneBean();
+                                    boolean phoneBean = contactView.getPhoneBean();
                                     if (phoneBean){
-                                        String list = poiRecycleAdapter.getList();
+                                        String list = contactView.getList();
                                         poiEntity.setTelPhone(list);
-                                    }else {
-                                        Toast.makeText(getActivity(), "请输入手机号", Toast.LENGTH_SHORT).show();
-                                        return;
                                     }
                                     String tagPanorama = (String) ivPanorama.getTag();
                                     if (tagPanorama == null) {
@@ -440,6 +483,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
                                     calendar.setTimeInMillis(System.currentTimeMillis());
                                     String format = formatter.format(calendar.getTime());
                                     poiEntity.setCreateTime(format);
+                                    poiEntity.setExistence(existence);
                                     poiEntity.setType(1);
                                     poiEntity.setTaskStatus(2);
                                     poiEntity.setIsLocalData(1);
@@ -652,9 +696,9 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
         if (describe != null && !describe.equals("")) {
             poiEntity.setDescribe(describe);
         }
-        boolean phoneBean = poiRecycleAdapter.getPhoneBean();
+        boolean phoneBean = contactView.getPhoneBean();
         if (phoneBean){
-            String list = poiRecycleAdapter.getList();
+            String list = contactView.getList();
             poiEntity.setTelPhone(list);
         }else {
             Toast.makeText(getActivity(), "请输入手机号", Toast.LENGTH_SHORT).show();
@@ -680,17 +724,13 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe
         if (tagCard != null && !tagCard.equals("")) {
             infoPhoto.add(new Info(tagCard));
         }
-        if (showPoiEntity != null) {
-            if (showPoiEntity.getTaskId() != 0) {
-                poiEntity.setTaskId(showPoiEntity.getTaskId());
-            }
-        }
         poiEntity.setPhotoInfo(infoPhoto);
         DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         Calendar calendar = Calendar.getInstance();
         calendar.setTimeInMillis(System.currentTimeMillis());
         String format = formatter.format(calendar.getTime());
         poiEntity.setCreateTime(format);
+        poiEntity.setExistence(existence);
         poiEntity.setType(1);
         poiEntity.setTaskStatus(2);
         poiEntity.setIsLocalData(1);
diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java
index 46c2dcd..fcbf6cb 100644
--- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java
+++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java
@@ -88,9 +88,6 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
     private PoiDatabase poiDatabase;
     private PoiDao poiDao;
     private PoiEntity showPoiEntity;
-    private RelativeLayout linearExist;
-    private Spinner spinnerExist;
-    String[] spinner = new String[]{"存在", "不存在", "无法验证"};
     private Integer poiVideoBody;
     private File videoFile;
     private Button btnPoiVideoUpload;
@@ -161,29 +158,6 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
         btnPoiVideoUpload = findViewById(R.id.btn_poi_video_upload);
         btnPoiVideoUpload.setOnClickListener(this::onClick);
         rgType = (RadioGroup) findViewById(R.id.rg_type);
-        linearExist = findViewById(R.id.linear_exist);
-        spinnerExist = findViewById(R.id.spinner_exist);
-        ArrayAdapter<String> adapterExist = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, spinner);
-        adapterExist.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //设置下拉列表框的下拉选项样式
-        spinnerExist.setAdapter(adapterExist);
-        spinnerExist.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-            @Override
-            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                switch (position) {
-                    case 0:
-                        break;
-                    case 1:
-                        break;
-                    case 2:
-                        break;
-                }
-            }
-
-            @Override
-            public void onNothingSelected(AdapterView<?> parent) {
-            }
-        });
-
         ivPoiVideoPicture.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -239,9 +213,6 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
                 showPictureType(type);
             }
             poiVideoBody=showPoiEntity.getBodyId();
-            if (showPoiEntity.getName()!=null){
-                linearExist.setVisibility(View.VISIBLE);
-            }
             String describe = showPoiEntity.getDescribe();//任务描述
             if (describe != null && !describe.equals("")) {
                 etDesc.setText(describe);
@@ -324,9 +295,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
                                     String roadExtendJson = gson.toJson(roadExtend);
                                     poiEntity.setExtend(roadExtendJson);
                                     String desc = etDesc.getText().toString().trim();
-                                    if (desc == null || desc.equals("")) {
-                                        Toast.makeText(getContext(), "请输入你的任务描述", Toast.LENGTH_SHORT).show();
-                                    } else {
+                                    if (desc != null && !desc.equals("")) {
                                         poiEntity.setDescribe(desc);
                                     }
                                     if (showPoiEntity != null) {
@@ -395,7 +364,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
 
             case R.id.tv_pictures:
                 // 根据用户点击的时间为视频名称赋值
-                DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HHmmss");
+                DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 String videoFormatName = formatter.format(new Date());
                 Intent intent = new Intent(getContext(), PictureActivity.class);
                 intent.putExtra(Constant.INTENT_VIDEO_PATH, Constant.PICTURE_FOLDER + "/" + videoFormatName + ".mp4");
@@ -571,11 +540,6 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
         if (desc != null && !desc.equals("")) {
             poiEntity.setDescribe(desc);
         }
-        if (showPoiEntity != null) {
-            if (showPoiEntity.getTaskId() != 0) {
-                poiEntity.setTaskId(showPoiEntity.getTaskId());
-            }
-        }
         DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         Calendar calendar = Calendar.getInstance();
         calendar.setTimeInMillis(System.currentTimeMillis());
diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java
index 0089f23..9f6da56 100644
--- a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java
+++ b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java
@@ -25,7 +25,6 @@ import android.widget.Toast;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.bumptech.glide.Glide;
 import com.github.lazylibrary.util.FileUtils;
 import com.github.lazylibrary.util.ZipUtil;
 import com.google.gson.Gson;
@@ -37,11 +36,9 @@ import com.lzy.okgo.model.HttpParams;
 import com.lzy.okgo.model.Response;
 import com.navinfo.outdoor.R;
 import com.navinfo.outdoor.activity.PictureActivity;
-import com.navinfo.outdoor.activity.PicturesActivity;
 import com.navinfo.outdoor.api.Constant;
 import com.navinfo.outdoor.base.BaseDrawerFragment;
 import com.navinfo.outdoor.bean.OtherUploadPicBean;
-import com.navinfo.outdoor.bean.PoiBean;
 import com.navinfo.outdoor.bean.PoiVideoBean;
 import com.navinfo.outdoor.bean.RoadExtend;
 import com.navinfo.outdoor.http.Callback;
@@ -57,9 +54,7 @@ import com.navinfo.outdoor.util.GeometryTools;
 import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
 
 import org.greenrobot.eventbus.EventBus;
-import org.json.JSONArray;
 import org.json.JSONException;
-import org.json.JSONObject;
 
 import java.io.File;
 import java.text.DateFormat;
@@ -91,10 +86,12 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
     private ImageView ivRoadFinal;
     private RelativeLayout linearExist;
     String[] spinner = new String[]{"存在", "不存在", "无法验证"};
+    private int existence=0;
     private Integer body;
     private Button roadUpload;
     private File videoFile;
     private String videoPath;
+    private Spinner spinnerExist;
 
     public static RoadFragment newInstance(Bundle bundle) {
         RoadFragment fragment = new RoadFragment();
@@ -162,7 +159,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
         linearExist = findViewById(R.id.linear_exist);
         roadUpload = findViewById(R.id.road_upload);
         roadUpload.setOnClickListener(this::onClick);
-        Spinner spinnerExist = findViewById(R.id.spinner_exist);
+        spinnerExist = findViewById(R.id.spinner_exist);
         ArrayAdapter<String> adapterExist = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, spinner);
         adapterExist.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //设置下拉列表框的下拉选项样式
         spinnerExist.setAdapter(adapterExist);
@@ -171,10 +168,13 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                 switch (position) {
                     case 0:
+                        existence=0;
                         break;
                     case 1:
+                        existence=1;
                         break;
                     case 2:
+                        existence=2;
                         break;
                 }
             }
@@ -220,6 +220,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
             }
             if (showPoiEntity.getName() != null) {
                 linearExist.setVisibility(View.VISIBLE);
+                spinnerExist.setSelection(showPoiEntity.getExistence(), true);
             }
             String describe = showPoiEntity.getDescribe();//任务描述
             if (describe != null && !describe.equals("")) {
@@ -305,9 +306,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
                                     String roadExtendJson = gson.toJson(roadExtend);
                                     poiEntity.setExtend(roadExtendJson);
                                     String desc = etDesc.getText().toString().trim();
-                                    if (desc == null || desc.equals("")) {
-                                        Toast.makeText(getContext(), "请输入你的任务描述", Toast.LENGTH_SHORT).show();
-                                    } else {
+                                    if (desc != null&& !desc.equals("")) {
                                         poiEntity.setDescribe(desc);
                                     }
                                     if (showPoiEntity != null) {
@@ -342,6 +341,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
                                     calendar.setTimeInMillis(System.currentTimeMillis());
                                     String format = formatter.format(calendar.getTime());
                                     poiEntity.setCreateTime(format);
+                                    poiEntity.setExistence(existence);
                                     poiEntity.setType(4);
                                     poiEntity.setTaskStatus(2);
                                     poiEntity.setIsLocalData(1);
@@ -471,6 +471,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
                     public void onSuccess(PoiVideoBean poiVideoBean, int id) {
                         dismissLoadingDialog();
                         body = poiVideoBean.getBody();
+                        body = poiVideoBean.getBody();
                         poiEntity.setBodyId(body);
                         poiEntity.setTaskStatus(3);
                         new Thread(new Runnable() {
@@ -513,7 +514,6 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
             }
         }
     }
-
     @Override
     public void onSaveInstanceState(@NonNull Bundle outState) {
         super.onSaveInstanceState(outState);
@@ -560,6 +560,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
         calendar.setTimeInMillis(System.currentTimeMillis());
         String format = formatter.format(calendar.getTime());
         poiEntity.setCreateTime(format);
+        poiEntity.setExistence(existence);
         poiEntity.setType(4);
         poiEntity.setTaskStatus(2);
         poiEntity.setIsLocalData(1);
diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java
index 093bb4d..073ed4f 100644
--- a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java
+++ b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java
@@ -780,7 +780,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
                 initCheckedMarker(Constant.CHARGING_STATION_WORD);
             }
         } else if (data.what == Constant.MAIN_CHARGING_PILE) {//充电桩采集-移动位置
-            initPileMarker((LatLng) data.obj);
+            BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_pile_have_bg);
+            initPileMarker((LatLng) data.obj,pileDescriptor);
         } else if (data.what == Constant.MAIN_CHARGING_CHECKED_PILE) {//充电桩采集-确定位置
             if ((boolean) data.obj) {
                 initCheckedMarker(Constant.CHARGING_PILE_WORD);
@@ -904,7 +905,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
 
     }
 
-    private void initPileMarker(LatLng latLng) {
+    private void initPileMarker(LatLng latLng,BitmapDescriptor bitmapDescriptor) {
         CameraUpdate cameraSigma = CameraUpdateFactory.newCameraPosition(new CameraPosition(
                 latLng, //中心点坐标,地图目标经纬度
                 tencentMap.getCameraPosition().zoom,  //目标缩放级别
@@ -916,7 +917,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
                 screenPosition = tencentMap.getProjection().toScreenLocation(latLng);
                 sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
                 //创建Marker对象之前,设置属性
-                markerPoi = tencentMap.addMarker(new MarkerOptions(latLng));
+                markerPoi = tencentMap.addMarker(new MarkerOptions(latLng).icon(bitmapDescriptor));
                 markerPoi.setFixingPoint(screenPosition.x, screenPosition.y);
             }
 
diff --git a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java
index 230c29c..2681f46 100644
--- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java
+++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java
@@ -68,10 +68,8 @@ public class HttpInterface {
     public static final String POI_VIDEO_UPLOAD_PIC = IPm6+"poivideotask/1/uploadpic";//poi录像-上传
     //http://172.23.139.4:8003/m4/task/1/getPhone?geo=1rn7exd5uhxy
     public static final String GET_PHONE = IPm6 + "m4/task/1/getPhone"; //任务搜索
-
-//    http://172.23.139.4:8003/m4/task/1/getPhone?geo=1rn7exd5uhxy
-//    public static final String GET_PHONES = IPm6+"m4/task/1/getPhone";//电话区号和电话位数
-
+    //http://172.23.139.4:8003/m4/task/1/getPhone?geo=1rn7exd5uhxy
+    public static final String GET_PHONES = IPm6+"m4/task/1/getPhone";//电话区号和电话位数
 
     /**
      * 面状任务
diff --git a/app/src/main/java/com/navinfo/outdoor/room/ChargingPileEntity.java b/app/src/main/java/com/navinfo/outdoor/room/ChargingPileEntity.java
index d6e9bfe..cbe0941 100644
--- a/app/src/main/java/com/navinfo/outdoor/room/ChargingPileEntity.java
+++ b/app/src/main/java/com/navinfo/outdoor/room/ChargingPileEntity.java
@@ -28,18 +28,18 @@ public class ChargingPileEntity implements Serializable {
     private int exist;//是否存在   0不存在1存在
     private int cp_floor;//充电桩地面层  地面层是1 ,地上二层为2,向上依次加1,地下一层为-1,向下依次减1.默认为1
     private int sign_exist;//设备标牌是否存在 0不存在1存在
-    private int cp_availableState;//可用状态 0(可以使用(有电),默认),1(不可使用(没电)),2(维修中),3(建设中)4(规划中)
-    private int cp_openType;// 1.对所有车辆开放 2.对环卫车开放 3.对公交和开放 4.对出租车开放 5.对特种兵车辆开放
+    private int cp_availableState;//可以状态 0(可以使用(有电),默认),1(不可使用(没电)),2(维修中),3(建设中)4(规划中)
+    private String cp_openType;// 1.对所有车辆开放 2.对环卫车开放 3.对公交和开放 4.对出租车开放 5.对特种兵车辆开放
     private String memo;//备注  默认为空
     @TypeConverters(StringTypeConverter.class)
     private List<String> photos;//照片组
     private long fid;//对应充电站id
 
-    public int getCp_openType() {
+    public String getCp_openType() {
         return cp_openType;
     }
 
-    public void setCp_openType(int cp_openType) {
+    public void setCp_openType(String cp_openType) {
         this.cp_openType = cp_openType;
     }
 
diff --git a/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java b/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java
index 7fec327..1f5226f 100644
--- a/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java
+++ b/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java
@@ -34,7 +34,7 @@ public class PoiEntity implements Serializable {
     //ROOM不支持直接存储集合
     @TypeConverters(PhotoInfoConverter.class)
     private List<Info> photoInfo;//照片信息
-    private int existence;//是否存在
+    private int existence;//是否存在 不存在对应  0 存在对应  1
     private String x;//经度
     private String y;//纬度
     private String detail;//深度信息
diff --git a/app/src/main/java/com/navinfo/outdoor/ui/view/ContactView.java b/app/src/main/java/com/navinfo/outdoor/ui/view/ContactView.java
new file mode 100644
index 0000000..0ee9256
--- /dev/null
+++ b/app/src/main/java/com/navinfo/outdoor/ui/view/ContactView.java
@@ -0,0 +1,245 @@
+package com.navinfo.outdoor.ui.view;
+
+import android.content.Context;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.navinfo.outdoor.R;
+import com.navinfo.outdoor.api.Constant;
+import com.navinfo.outdoor.bean.PhoneBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *手机号数据存储
+ */
+public class ContactView {
+    private Context context;
+    private ViewGroup rootView;
+    private List<PhoneBean> poiBeanList;
+
+    public ContactView(Context context, ViewGroup roatView, List<PhoneBean> poiBeans) {
+        this.context = context;
+        this.rootView = roatView;
+        this.poiBeanList = poiBeans;
+    }
+
+    public void resetView() {
+        if (poiBeanList != null && !poiBeanList.isEmpty()) {
+            if (rootView != null) {
+                rootView.removeAllViews();
+            }
+            for (int i = 0; i < poiBeanList.size(); i++) {
+                PhoneBean poiBean = poiBeanList.get(i);
+                View itemView = LayoutInflater.from(context).inflate(R.layout.item_poi, null, false);
+                MyViewHolder holder = new MyViewHolder(itemView);
+                if (poiBean.getPhone().startsWith("1")) {
+                    holder.llPoi.setVisibility(View.GONE);
+                } else {
+                    holder.llPoi.setVisibility(View.VISIBLE);
+                }
+                holder.editAreaCode.setText(poiBean.getArea());
+                holder.tvPhone.setText(poiBean.getName());
+                holder.image.setImageResource(poiBean.getImage());
+                int finalI = i;
+                holder.image.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        if (finalI == 0) {
+                            View view = addRootView();
+                            rootView.addView(view);
+                        } else {
+                            ViewParent parent = v.getParent();
+                            rootView.removeView((View) parent);
+                        }
+//                        rootView.removeViewAt(i);
+                    }
+                });
+                holder.editPhoneNumber.setText(poiBean.getPhone());
+                holder.editPhoneNumber.addTextChangedListener(new TextWatcher() {
+
+                    @Override
+                    public void onTextChanged(CharSequence s, int start, int before, int count) {
+                        //正在输入
+                        String str = holder.editPhoneNumber.getText().toString().trim();
+                        if (str.indexOf('1') == 0) {
+                            holder.llPoi.setVisibility(View.GONE);
+                        } else {
+                            holder.llPoi.setVisibility(View.VISIBLE);
+                        }
+
+                    }
+
+                    @Override
+                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+                        //输入之前
+                    }
+                    @Override
+                    public void afterTextChanged(Editable s) {
+                    }
+                });
+                rootView.addView(itemView);
+            }
+        }
+    }
+
+    /**
+     * 添加数据
+     * @return
+     */
+    public View addRootView() {
+        PhoneBean poiBean=null;
+        if (Constant.CODE==null||Constant.CODE.equals("")){
+             poiBean = new PhoneBean("", "", "", R.drawable.icon_del_bg);
+        }else {
+            poiBean= new PhoneBean("", "", Constant.CODE, R.drawable.icon_del_bg);
+        }
+        View itemView = LayoutInflater.from(context).inflate(R.layout.item_poi, null, false);
+        MyViewHolder holder = new MyViewHolder(itemView);
+        holder.editAreaCode.setText(poiBean.getArea());
+        holder.tvPhone.setText(poiBean.getName());
+        holder.image.setImageResource(poiBean.getImage());
+        holder.image.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                ViewParent parent = v.getParent();
+                rootView.removeView((View) parent);
+//                  rootView.removeViewAt(i);
+            }
+        });
+        holder.editPhoneNumber.setText(poiBean.getPhone());
+        holder.editPhoneNumber.addTextChangedListener(new TextWatcher() {
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+                //正在输入
+                String str = holder.editPhoneNumber.getText().toString().trim();
+                if (str.indexOf('1') == 0) {
+                    holder.llPoi.setVisibility(View.GONE);
+                } else {
+                    holder.llPoi.setVisibility(View.VISIBLE);
+                }
+
+            }
+
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+                //输入之前
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+            }
+        });
+        return itemView;
+    }
+
+    /**
+     * 获取数据
+     *
+     * @return
+     */
+    public List<PhoneBean> getPoiBeanListByRootView() {
+        ArrayList<PhoneBean> poiBeans = new ArrayList<>();
+        if (rootView != null) {
+            for (int i = 0; i < rootView.getChildCount(); i++) {
+                View itemView = rootView.getChildAt(i);
+                EditText editAreaCode = itemView.findViewById(R.id.edit_area_code);
+                EditText editPhoneNumber = itemView.findViewById(R.id.edit_phone_number);
+                poiBeans.add(new PhoneBean(null, editPhoneNumber.getText().toString().trim(), editAreaCode.getText().toString().trim(), 0));
+            }
+        }
+        return poiBeans;
+    }
+
+    /**
+     * 检验数据
+     *
+     * @return
+     */
+    public boolean getPhoneBean() {
+        List<PhoneBean> list = getPoiBeanListByRootView();
+        for (int i = 0; i < list.size(); i++) {
+            PhoneBean poiBean = list.get(i);
+            if (poiBean.getPhone().indexOf('1') == 0) {
+                if (poiBean.getPhone().length()!=11){
+                    return false;
+                }
+            } else {
+              if (poiBean.getArea().length()+poiBean.getPhone().length()==11){
+                  return false;
+              }
+            }
+
+        }
+        return true;
+    }
+
+    /**
+     * 整理数据
+     *
+     * @return
+     */
+    public String getList() {
+        List<PhoneBean> list = getPoiBeanListByRootView();
+        String a = "";
+        for (int i = 0; i < list.size(); i++) {
+            PhoneBean poiBean = list.get(i);
+            if (list.size() == 1) {
+                if (poiBean.getPhone().indexOf('1') == 0) {
+                    a = poiBean.getPhone();
+                } else {
+                    a = poiBean.getArea() + "-" + poiBean.getPhone();
+                }
+            } else {
+                if (i == list.size() - 1) {
+                    if (poiBean.getPhone().indexOf('1') == 0) {
+                        a += poiBean.getPhone();
+                    } else {
+                        a += poiBean.getArea() + "-" + poiBean.getPhone();
+                    }
+                } else {
+                    if (poiBean.getPhone().indexOf('1') == 0) {
+                        a += poiBean.getPhone() + "|";
+                    } else {
+                        a += poiBean.getArea() + "-" + poiBean.getPhone() + "|";
+                    }
+                }
+
+            }
+
+        }
+        return a;
+    }
+
+    /**
+     * ViewHolder的类,用于缓存控件
+     */
+    class MyViewHolder extends RecyclerView.ViewHolder {
+        TextView tvPhone;
+        EditText editAreaCode, editPhoneNumber;
+        ImageView image;
+        LinearLayout llPoi;
+
+        //因为删除有可能会删除中间条目,然后会造成角标越界,所以必须整体刷新一下!
+        public MyViewHolder(View view) {
+            super(view);
+            tvPhone = view.findViewById(R.id.tv_phone);
+            editAreaCode = view.findViewById(R.id.edit_area_code);
+            llPoi = view.findViewById(R.id.ll_poi);
+            editPhoneNumber = view.findViewById(R.id.edit_phone_number);
+            image = view.findViewById(R.id.image);
+        }
+    }
+}
diff --git a/app/src/main/res/layout/charging_station_fragment.xml b/app/src/main/res/layout/charging_station_fragment.xml
index bee0a85..53c47f3 100644
--- a/app/src/main/res/layout/charging_station_fragment.xml
+++ b/app/src/main/res/layout/charging_station_fragment.xml
@@ -169,9 +169,17 @@
             <androidx.recyclerview.widget.RecyclerView
                 android:id="@+id/recycler_phone"
                 android:layout_width="match_parent"
+                android:visibility="gone"
                 android:layout_height="match_parent"
                 android:layout_centerInParent="true"
                 />
+            <LinearLayout
+                android:id="@+id/linear_contact"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:layout_centerInParent="true"
+                ></LinearLayout>
         </RelativeLayout>
         <RelativeLayout
             android:id="@+id/linear_type"
diff --git a/app/src/main/res/layout/fragment_other.xml b/app/src/main/res/layout/fragment_other.xml
index 0986a0d..6318c2f 100644
--- a/app/src/main/res/layout/fragment_other.xml
+++ b/app/src/main/res/layout/fragment_other.xml
@@ -64,51 +64,6 @@
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintTop_toTopOf="parent" />
             </androidx.constraintlayout.widget.ConstraintLayout>
-
-            <RelativeLayout
-                android:id="@+id/linear_exist"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_margin="20dp"
-                android:background="@drawable/other_text"
-                android:padding="2dp"
-                android:visibility="gone"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/linear_phone">
-
-                <TextView
-                    android:id="@+id/tv_exist"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentLeft="true"
-                    android:layout_centerVertical="true"
-                    android:layout_marginLeft="18dp"
-                    android:layout_marginTop="10dp"
-                    android:layout_marginBottom="10dp"
-                    android:text="是否存在*"
-                    android:textColor="#333" />
-
-                <Spinner
-                    android:id="@+id/spinner_exist"
-                    android:layout_width="match_parent"
-                    android:layout_height="40dp"
-                    android:layout_centerVertical="true"
-                    android:layout_marginLeft="18dp"
-                    android:layout_marginRight="10dp"
-                    android:layout_toEndOf="@id/tv_exist"
-                    android:layout_toRightOf="@id/tv_exist"
-                    android:background="@color/white"
-                    android:textColor="#333"
-                    android:textSize="15sp" />
-
-                <ImageView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_alignParentRight="true"
-                    android:layout_centerVertical="true"
-                    android:background="@drawable/ic_baseline_arrow_drop" />
-            </RelativeLayout>
         </LinearLayout>
 
         <LinearLayout
diff --git a/app/src/main/res/layout/item_poi.xml b/app/src/main/res/layout/item_poi.xml
index 6e3f90a..c4442ae 100644
--- a/app/src/main/res/layout/item_poi.xml
+++ b/app/src/main/res/layout/item_poi.xml
@@ -41,7 +41,7 @@
             android:background="@color/white"
             android:digits="1234567890"
             android:hint="010"
-            android:maxLength="3"
+            android:maxLength="4"
             android:inputType="phone|number"
             android:textColor="#333"
             android:textSize="15sp"
@@ -54,7 +54,7 @@
             android:id="@+id/tv_view"
             android:layout_width="4dp"
             android:layout_height="18dp"
-            android:text="-"
+            android:text="——"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/poi_fragment.xml b/app/src/main/res/layout/poi_fragment.xml
index da6ea8f..e9c7366 100644
--- a/app/src/main/res/layout/poi_fragment.xml
+++ b/app/src/main/res/layout/poi_fragment.xml
@@ -171,9 +171,18 @@
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recycler_phone"
                android:layout_width="match_parent"
+               android:visibility="gone"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"
                />
+            <LinearLayout
+                android:id="@+id/linear_contact"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:layout_centerInParent="true"
+                >
+            </LinearLayout>
         </RelativeLayout>
         <RelativeLayout
             android:id="@+id/linear_exist"