Browse Source

修改程序

Bitliker 9 years ago
parent
commit
afb452480d

+ 2 - 1
WeiChat/src/main/AndroidManifest.xml

@@ -807,7 +807,8 @@
         </receiver>
 
         <activity android:name=".ui.erp.activity.oa.ErpActivity" />
-        <activity android:name=".ui.erp.activity.oa.SelectAimActivity"></activity>
+        <activity android:name=".ui.erp.activity.oa.SelectAimActivity"
+            android:label="@string/activity_select_aims"/>
     </application>
 
 </manifest>

+ 97 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionActivity.java

@@ -8,10 +8,17 @@ import android.content.IntentFilter;
 import android.os.Bundle;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.RecyclerView;
+import android.util.DisplayMetrics;
 import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.PopupWindow;
+import android.widget.TextView;
 
 import com.afollestad.materialdialogs.MaterialDialog;
 import com.baidu.mapapi.model.LatLng;
@@ -36,6 +43,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.baidu.OnGetDrivingRouteResult;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
+import com.xzjmyk.pm.activity.util.DisplayUtil;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.view.MostLinearLayoutManager;
@@ -44,6 +52,8 @@ import com.xzjmyk.pm.activity.view.crouton.Crouton;
 import java.util.ArrayList;
 import java.util.List;
 
+import static com.xzjmyk.pm.activity.util.BaiduMapUtil.getInstence;
+
 
 public class MissionActivity extends BaseActivity implements View.OnClickListener, IMission, MissionAdapter.OnitemClickListener {
     @ViewInject(R.id.recycler)
@@ -220,6 +230,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                 startActivityForResult(intent, 0x20);
                 break;
             case R.id.item_companyaddr_tv://选择公司地址
+                if (true) return;
                 if (model == null || model.getStatus() == 1) return;
                 String company = model.getCompanyName();
                 intent = new Intent(ct, LocationSearchActivity.class);
@@ -299,8 +310,6 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
         if (requestCode == 0x20) {//选择公司
             SelectAimModel entity = data.getParcelableExtra("data");
             showSaveCompany(entity);
-
-
 //            MissionModel entity = data.getParcelableExtra("data");
 //            if (entity == null) return;
 //            if (ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= position)
@@ -322,7 +331,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
             if (info == null) {
                 return;
             } else {
-                String distance = BaiduMapUtil.getInstence().getDistance(info.location);
+                String distance = getInstence().getDistance(info.location);
                 if (StringUtils.isEmpty(distance)) return;
                 if (ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= position)
                     return;
@@ -332,13 +341,13 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                 adapter.getModels().get(position).setCompanyName(info.name);
                 adapter.getModels().get(position).setCompanyAddr(info.address);
                 adapter.getModels().get(position).setLatLng(info.location);
-                adapter.getModels().get(position).setDistance(BaiduMapUtil.getInstence().distance(adapter.getModels().get(position).getLatLng()
+                adapter.getModels().get(position).setDistance(getInstence().distance(adapter.getModels().get(position).getLatLng()
                         , new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
                                 MyApplication.getInstance().getBdLocationHelper().getLongitude())));
                 adapter.notifyItemChanged(position);
                 if (!StringUtils.isEmpty(adapter.getModels().get(position).getCompanyName()))
                     try {
-                        setEndTime(info.location, Double.valueOf(BaiduMapUtil.getInstence().getDistance(info.location)));
+                        setEndTime(info.location, Double.valueOf(getInstence().getDistance(info.location)));
                     } catch (ClassCastException e) {
 
                     } catch (Exception e) {
@@ -368,12 +377,91 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
         }
     }
 
-    //显示确认公司
-    private void showSaveCompany(SelectAimModel entity) {
-
+    private PopupWindow popupWindow = null;
+
+    private void showSaveCompany(final SelectAimModel entity) {
+        // 一个自定义的布局,作为显示的内容
+        View contentView = LayoutInflater.from(ct).inflate(
+                R.layout.item_select_aim_pop, null);
+        // 设置按钮的点击事件
+        final EditText company_et = (EditText) contentView.findViewById(R.id.company_et);
+        TextView address_tv = (TextView) contentView.findViewById(R.id.address_tv);
+        company_et.setText(entity.getName());
+        address_tv.setText("详细地址: " + entity.getAddress());
+
+        DisplayMetrics dm = getResources().getDisplayMetrics();
+        int w_screen = dm.widthPixels;
+        int h_screen = dm.heightPixels;
+        w_screen = DisplayUtil.dip2px(this, 300);
+        h_screen = DisplayUtil.dip2px(this, 185);
+        contentView.findViewById(R.id.goto_tv).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                sureSelectAim(entity);
+                popupWindow.dismiss();
+            }
+        });
+        contentView.findViewById(R.id.sure_tv).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                String com = company_et.getText().toString();
+                if (!StringUtils.isEmpty(com)) {
+                    entity.setName(com);
+                }
+                sureSelectAim(entity);
+                popupWindow.dismiss();
+            }
+        });
+        popupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
+        popupWindow.setTouchable(true);
+        // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
+        // 我觉得这里是API的一个bug
+        popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_main));
+
+        // 设置好参数之后再show
+        popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
+        setbg(0.7f);
+    }
 
+    private void setbg(float alpha) {
+        WindowManager.LayoutParams lp = getWindow().getAttributes();
+        lp.alpha = alpha;
+        getWindow().setAttributes(lp);
+        if (popupWindow == null) return;
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                WindowManager.LayoutParams lp = getWindow().getAttributes();
+                lp.alpha = 1f;
+                getWindow().setAttributes(lp);
+            }
+        });
     }
 
+    private void sureSelectAim(SelectAimModel entity) {
+        if (entity == null) return;
+        if (ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= position)
+            return;
+        adapter.getModels().get(position).setCompanyName(StringUtils.isEmpty(entity.getName()) ? "" : entity.getName());
+        adapter.getModels().get(position).setCompanyAddr(StringUtils.isEmpty(entity.getAddress()) ? "" : entity.getAddress());
+        adapter.getModels().get(position).setVisitcount(1 + entity.getTimes());
+        if (entity.getLatLng() != null) {
+            adapter.getModels().get(position).setLatLng(entity.getLatLng());
+            adapter.getModels().get(position).setDistance(getInstence().distance(adapter.getModels().get(position).getLatLng()
+                    , new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
+                            MyApplication.getInstance().getBdLocationHelper().getLongitude())));
+        }
+        adapter.notifyItemChanged(position);
+        if (entity.getLatLng() != null) {
+            try {
+                float dis = Float.valueOf(BaiduMapUtil.getInstence().getDistance(entity.getLatLng()));
+                setEndTime(entity.getLatLng(), dis);
+            } catch (ClassCastException e) {
+                if (e != null)
+                    Log.i("gongpengming", "ClassCastException " + e.getMessage());
+            }
+        }
+    }
 
     /**
      * @param location
@@ -382,7 +470,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
      */
     private void setEndTime(LatLng location, final double dis) {
         Log.i("gongpengming", "dis=" + dis);
-        BaiduMapUtil.getInstence().getDrivingRoute(MyApplication.getInstance().getBdLocationHelper().getLocation(), location,
+        getInstence().getDrivingRoute(MyApplication.getInstance().getBdLocationHelper().getLocation(), location,
                 new OnGetDrivingRouteResult() {
                     @Override
                     public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {

+ 6 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectAimActivity.java

@@ -7,6 +7,7 @@ import android.support.v7.widget.RecyclerView;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.view.View;
+import android.widget.LinearLayout;
 
 import com.baidu.mapapi.map.MapView;
 import com.lidroid.xutils.ViewUtils;
@@ -21,6 +22,7 @@ import com.xzjmyk.pm.activity.ui.erp.presenter.SelectAimPresenter;
 import com.xzjmyk.pm.activity.ui.erp.presenter.imp.ISelectAim;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 import com.xzjmyk.pm.activity.view.ClearEditText;
+import com.xzjmyk.pm.activity.view.RecycleViewDivider;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
 
 import java.util.List;
@@ -63,9 +65,11 @@ public class SelectAimActivity extends BaseActivity implements ISelectAim {
         adapter.setOnitemClickListener(new SelectAimAdapter.OnitemClickListener() {
             @Override
             public void click(SelectAimModel model) {
+                if (model.getType()==1)return;
                 Intent intent = new Intent();
                 intent.putExtra("data", model);
                 setResult(0x20, intent);
+                finish();
             }
         });
     }
@@ -73,7 +77,9 @@ public class SelectAimActivity extends BaseActivity implements ISelectAim {
     private void initView() {
         BaiduMapUtil.getInstence().setMapViewPoint(mapView, MyApplication.getInstance().getBdLocationHelper().getLocation());
         listview.setLayoutManager(new LinearLayoutManager(this));
+        RecycleViewDivider viewDivider = new RecycleViewDivider(this, LinearLayout.HORIZONTAL, 1, getResources().getColor(R.color.gray_light));
         adapter = new SelectAimAdapter();
+        listview.addItemDecoration(viewDivider);
         listview.setAdapter(adapter);
     }
 

+ 18 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SelectAimAdapter.java

@@ -14,6 +14,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 
+import java.text.DecimalFormat;
 import java.util.List;
 
 /**
@@ -89,15 +90,28 @@ public class SelectAimAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
     private void bindLoadView(LoadViewHolder holder, SelectAimModel model) throws Exception {
         holder.title_tv.setText(getNull(model.getName()));
         holder.sub_tv.setText(getNull(model.getAddress()));
-        holder.time_tv.setText(getNull(model.getTime()));
-        holder.times_tv.setText(getNull(model.getTimes() + ""));
-        holder.distance_tv.setText(BaiduMapUtil.getInstence().getDistance(model.getLatLng()));
+        holder.time_tv.setText("上次拜访 " + getNull(model.getTime()));
+        holder.times_tv.setText("总拜访 " + getNull(model.getTimes() + ""));
+        holder.distance_tv.setText(getKm(BaiduMapUtil.getInstence().getDistance(model.getLatLng())));
     }
 
     private void bindMapView(MapViewHolder holder, SelectAimModel model) throws Exception {
         holder.title_tv.setText(getNull(model.getName()));
         holder.sub_tv.setText(getNull(model.getAddress()));
-        holder.distance_tv.setText(BaiduMapUtil.getInstence().getDistance(model.getLatLng()));
+        holder.distance_tv.setText(getKm(BaiduMapUtil.getInstence().getDistance(model.getLatLng())));
+    }
+
+    private String getKm(String dis) {
+        if (StringUtils.isEmpty(dis)) return String.valueOf(0) + "km";
+        try {
+            DecimalFormat fnum = new DecimalFormat("##0.00");
+            String dd = fnum.format(Float.valueOf(dis) / 1000);
+            return dd + "km";
+        } catch (ClassCastException e) {
+            return String.valueOf(0) + "km";
+        } catch (Exception e) {
+            return String.valueOf(0) + "km";
+        }
     }
 
     class EmptyViewHolder extends RecyclerView.ViewHolder {

+ 21 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SelectAimPresenter.java

@@ -38,6 +38,7 @@ public class SelectAimPresenter implements HttpHandler.OnResultListener {
     private List<SelectAimModel> models;//从服务其返回的数据列表
     private String keyWork;
     private boolean seachChina = false;
+    private List<SelectAimModel> keyList;
 
 
     public SelectAimPresenter(ISelectAim iSelectAim) {
@@ -67,16 +68,17 @@ public class SelectAimPresenter implements HttpHandler.OnResultListener {
                     return;
                 }
             }
-            List<SelectAimModel> chche = new ArrayList<>();
+            keyList = new ArrayList<>();
             for (SelectAimModel e : models) {
-                if (isIncude(keyWork, e)) chche.add(e);
-            }
-            if (ListUtils.isEmpty(chche)) {
-                loadDataByChina();
-            } else {
-                if (iSelectAim != null)
-                    iSelectAim.showModel(chche);
+                if (isIncude(keyWork, e)) keyList.add(e);
             }
+            loadDataByChina();
+//            if (ListUtils.isEmpty(chche)) {
+//                loadDataByChina();
+//            } else {
+//                if (iSelectAim != null)
+//                    iSelectAim.showModel(chche);
+//            }
         }
     }
 
@@ -165,13 +167,13 @@ public class SelectAimPresenter implements HttpHandler.OnResultListener {
                         models.add(model);
                     }
                 }
+                if (ListUtils.isEmpty(keyList))
+                    keyList = new ArrayList<>();
                 if (ListUtils.isEmpty(models)) {
                     showEmpty();
                 } else {
-                    if (StringUtils.isEmpty(keyWork)) {
-                        SelectAimPresenter.this.models = models;
-                    }
-                    show(models);
+                    keyList.addAll(models);
+                    showEmpty();
                 }
             }
         }
@@ -248,7 +250,13 @@ public class SelectAimPresenter implements HttpHandler.OnResultListener {
         SelectAimModel model = new SelectAimModel();
         model.setType(1);
         models.add(model);
-        show(models);
+        if (!StringUtils.isEmpty(keyWork)) {//有搜索
+            if (ListUtils.isEmpty(keyList))
+                keyList = new ArrayList<>();
+            keyList.addAll(models);
+            show(keyList);
+        } else
+            show(models);
     }
 
     private void show(List<SelectAimModel> models) {

+ 14 - 0
WeiChat/src/main/res/drawable/pop_bg_radius.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <shape xmlns:android="http://schemas.android.com/apk/res/android">
+        <!-- solid 设置stroke设置的边框以内的颜色 -->
+        <solid android:color="#ffffffff" />
+        <!-- stroke主要设置组件的边框。width为边框宽度,color为边框颜色 -->
+        <stroke android:width="3dp" android:color="#ffffffff" />
+        <!-- corners 设置边框四角弧度 -->
+        <corners android:radius="10dp" />
+        <!-- padding主要设置组件里内容距离组件内边框的间距 -->
+        <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
+
+    </shape>
+</selector>

+ 1 - 4
WeiChat/src/main/res/layout/item_mission.xml

@@ -51,7 +51,6 @@
             android:textColor="@color/text_main"
             android:textSize="@dimen/text_main" />
 
-
         <TextView
             android:id="@+id/item_company_tv"
             android:layout_width="wrap_content"
@@ -91,7 +90,7 @@
             android:text="拜访地址"
             android:textColor="@color/text_main"
             android:textSize="@dimen/text_main" />
-
+        <!--android:drawableRight="@drawable/addr_bule"-->
         <TextView
             android:id="@+id/item_companyaddr_tv"
             android:layout_width="wrap_content"
@@ -100,10 +99,8 @@
             android:layout_alignParentRight="true"
             android:layout_alignParentTop="true"
             android:layout_toRightOf="@id/item_companyaddr_tag"
-            android:drawableRight="@drawable/addr_bule"
             android:ellipsize="end"
             android:gravity="center|right"
-            android:hint="@string/select_must"
             android:lines="1"
             android:textColor="@color/text_hine"
             android:textSize="@dimen/text_hine" />

+ 0 - 1
WeiChat/src/main/res/layout/item_select_aim_map.xml

@@ -18,7 +18,6 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
-        android:layout_marginLeft="10dp"
         android:layout_toLeftOf="@id/distance_tv"
         android:text="没有符合条件的结果"
         android:textColor="@color/text_main"

+ 88 - 0
WeiChat/src/main/res/layout/item_select_aim_pop.xml

@@ -0,0 +1,88 @@
+<?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="200dp"
+    android:gravity="center_horizontal"
+    android:orientation="vertical"
+    android:padding="10dp">
+
+    <TextView
+        android:id="@+id/title_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="20dp"
+        android:text="完善单位名称"
+        android:textColor="@color/text_main"
+        android:textSize="@dimen/text_main" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:layout_marginTop="10dp"
+        android:gravity="center"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="单位名称:"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <EditText
+            android:id="@+id/company_et"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@null"
+            android:ellipsize="end"
+            android:maxLines="2" />
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/address_tv"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:layout_marginTop="5dp"
+        android:ellipsize="end"
+        android:maxLines="2"
+        android:textColor="@color/text_hine"
+        android:textSize="@dimen/text_hine" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:layout_marginTop="10dp"
+        android:background="@color/item_line" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:orientation="horizontal"
+        android:textColor="@color/text_main"
+        android:textSize="@dimen/text_main">
+
+        <TextView
+            android:id="@+id/goto_tv"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="跳过此步"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <View
+            android:layout_width="2px"
+            android:layout_height="match_parent"
+            android:background="@color/item_line" />
+
+        <TextView
+            android:id="@+id/sure_tv"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="确定"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+    </LinearLayout>
+</LinearLayout>