Browse Source

测试版本5.3.12 9-20

Arison 9 years ago
parent
commit
2b5108a569
46 changed files with 1247 additions and 276 deletions
  1. 5 1
      WeiChat/src/main/AndroidManifest.xml
  2. 21 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java
  3. 24 10
      WeiChat/src/main/java/com/xzjmyk/pm/activity/CaptureResultActivity.java
  4. 18 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/CommonWebviewActivity.java
  5. 20 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/MyApplication.java
  6. 21 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/AllSubscriptionNumbersAdapter.java
  7. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/MySubscriptionAdapter.java
  8. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/SubscriptionNumber.java
  9. 7 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SelectListBean.java
  10. 8 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/base/EasyFragment.java
  11. 4 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SubcribeManageActivity.java
  12. 14 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessActivity.java
  13. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessSelectCustomerActivity.java
  14. 115 53
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/ClientActivity.java
  15. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/CustomerAddActivity.java
  16. 152 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/SubsActivity.java
  17. 11 9
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/TaskAddActivity.java
  18. 63 22
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportAddActivity.java
  19. 42 23
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportPlanActivity.java
  20. 6 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddMeetTaskActivity.java
  21. 0 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  22. 162 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectListActivity.java
  23. 7 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/BaseFragment.java
  24. 1 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OaRegisterFragment.java
  25. 3 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java
  26. 46 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java
  27. 29 9
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SubscriptionAllFragment.java
  28. 42 16
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SubscriptionMyFragment.java
  29. 79 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java
  30. 0 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/CalendarPopup.java
  31. 24 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/ThreadUtil.java
  32. 102 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/DownloadUtil.java
  33. 4 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CalendarView.java
  34. 17 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/DialogUtil.java
  35. BIN
      WeiChat/src/main/res/drawable-hdpi/ic_downloading_progress.png
  36. 2 2
      WeiChat/src/main/res/layout/activity_capture_result.xml
  37. 27 21
      WeiChat/src/main/res/layout/activity_client.xml
  38. 2 2
      WeiChat/src/main/res/layout/activity_customter_add.xml
  39. 62 0
      WeiChat/src/main/res/layout/activity_subs.xml
  40. 2 1
      WeiChat/src/main/res/layout/item_activity_meettask.xml
  41. 73 0
      WeiChat/src/main/res/layout/item_subs.xml
  42. 1 1
      WeiChat/src/main/res/layout/layout_all_subscription_number_list.xml
  43. 9 7
      WeiChat/src/main/res/layout/layout_my_subscribe_list.xml
  44. 1 1
      WeiChat/src/main/res/menu/menu_manage_subscribe.xml
  45. 7 1
      WeiChat/src/main/res/values/styles.xml
  46. 1 1
      library-swipemenu_lv/src/main/java/com/baoyz/swipemenulistview/MySwipeMenuListView.java

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

@@ -78,6 +78,7 @@
     <uses-feature android:name="android.hardware.camera" />
     <!-- 使用照相机权限 -->
     <uses-feature android:name="android.hardware.camera.autofocus" />
+
     <!-- 自动聚焦权限 -->
     <!-- 全局样式不要随意改动  @style/AppTheme -->
     <application
@@ -458,7 +459,9 @@
         <activity
             android:name=".ui.erp.activity.crm.BusinessSelectCustomerActivity"
             android:launchMode="singleTask"
-            android:theme="@style/CrmThemeBlue" />
+            android:theme="@style/CrmThemeBlue"
+            android:windowSoftInputMode="adjustResize|stateHidden"
+            />
         <activity
             android:name=".ui.message.uas.B2bMsgActivity"
             android:launchMode="singleTask" />
@@ -580,6 +583,7 @@
             android:theme="@style/OAThemeOutOffice" />
         <activity android:name=".ui.erp.activity.oa.OptionActivity" />
         <activity android:name=".ui.erp.activity.oa.SelectListActivity" />
+        <activity android:name=".ui.erp.activity.crm.SubsActivity"></activity>
     </application>
 
 </manifest>

+ 21 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java

@@ -8,10 +8,9 @@ import com.baidu.location.BDLocation;
 import com.baidu.location.BDLocationListener;
 import com.baidu.location.LocationClient;
 import com.baidu.location.LocationClientOption;
-import com.baidu.location.LocationClientOption.LocationMode;
 import com.baidu.location.Poi;
 import com.xzjmyk.pm.activity.sp.LocationSp;
-import com.xzjmyk.pm.activity.util.StringUtils;
+import com.xzjmyk.pm.activity.view.crouton.Crouton;
 
 import java.util.List;
 
@@ -21,13 +20,11 @@ public class BdLocationHelper {
     private double mLongitude;
     private double mLatitude;
     private String mAddress;
-
     private String name;
     private String mProvinceName;// 省份
     private String mCityName;// 城市
     private String mDistrictName;// 街道
     private boolean isLocationUpdate;// 本次程序启动后,位置有没有成功更新一次
-
     private LocationClient mLocationClient = null;
     private int mFaildCount = 0;
     private List<Poi> pois;
@@ -54,12 +51,10 @@ public class BdLocationHelper {
         option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
         option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
         option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
-        option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
+        option.setEnableSimulateGps(true);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
         option.setNeedDeviceDirect(false);
         mLocationClient.setLocOption(option);
         requestLocation();//重新定位
-
-
     }
 
 
@@ -98,9 +93,14 @@ public class BdLocationHelper {
                 if (mFaildCount > 3) {// 停止定位
                     mLocationClient.stop();
                 }
+                if (listener != null) {
+                    listener.result(false);
+                }
                 return;
             }
-
+            if (listener != null) {
+                listener.result(true);
+            }
             // 百度定位成功
             mLongitude = location.getLongitude();
             mLatitude = location.getLatitude();
@@ -183,5 +183,18 @@ public class BdLocationHelper {
         return mLatitude != 0 && mLongitude != 0;
     }
 
+    private OnBaiduResultListener listener = null;
+
+    public OnBaiduResultListener getListener() {
+        return listener;
+    }
+
+    public void setListener(OnBaiduResultListener listener) {
+        this.listener = listener;
+    }
+
+    public interface OnBaiduResultListener {
+        void result(boolean isOk);
+    }
 
 }

+ 24 - 10
WeiChat/src/main/java/com/xzjmyk/pm/activity/CaptureResultActivity.java

@@ -4,8 +4,9 @@
 package com.xzjmyk.pm.activity;
 
 import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
 import android.content.Intent;
-import android.net.Uri;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -16,10 +17,12 @@ import android.webkit.WebViewClient;
 
 import com.uuzuche.lib_zxing.activity.CodeUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.util.DownloadUtil;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
 import com.xzjmyk.pm.activity.view.crouton.LifecycleCallback;
 
 
+
 /**
  * @author RaoMeng
  */
@@ -28,7 +31,6 @@ public class CaptureResultActivity extends Activity {
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
-
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_capture_result);
         initActivity();
@@ -46,27 +48,38 @@ public class CaptureResultActivity extends Activity {
         webSettings.setLoadWithOverviewMode(true);
 
         webSettings.setDomStorageEnabled(true);
-        webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
         mWebView.setWebViewClient(new WebViewClient() {
             @Override
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
-                /*view.loadUrl(url);
-                return true;*/
+//                view.loadUrl(url);
+//                return true;
                 return false;
             }
+
         });
 
         mWebView.setDownloadListener(new DownloadListener() {
             @Override
-            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
-                Uri uri = Uri.parse(url);
-                Intent intent = new Intent(Intent.ACTION_VIEW,uri);
-                startActivity(intent);
-//                finish();
+            public void onDownloadStart(final String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
+//                Uri uri = Uri.parse(url);
+//                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+//                startActivity(intent);
+                Log.d("fileurl", url);
+                String fileName = url.substring(url.lastIndexOf("/") + 1);
+
+                new AlertDialog.Builder(CaptureResultActivity.this).setTitle("提示").setMessage("确定下载文件<"+fileName+">吗?").setNegativeButton(R.string.cancel, null)
+                        .setPositiveButton(R.string.sure, new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialog, int which) {
+                                DownloadUtil.DownloadFile(CaptureResultActivity.this,url,"/sdcard/uu");
+
+                            }
+                        }).create().show();
             }
         });
     }
 
+
     private void initData() {
 
         Intent intent = getIntent();
@@ -110,4 +123,5 @@ public class CaptureResultActivity extends Activity {
         }
         return super.onKeyDown(keyCode, event);
     }
+
 }

+ 18 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/CommonWebviewActivity.java

@@ -1,15 +1,19 @@
 package com.xzjmyk.pm.activity;
 
 import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
 import android.content.Intent;
-import android.net.Uri;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.KeyEvent;
 import android.webkit.DownloadListener;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 
+import com.xzjmyk.pm.activity.util.DownloadUtil;
+
 /**
  * Created by RaoMeng on 2016/9/14.
  */
@@ -42,11 +46,19 @@ public class CommonWebviewActivity extends Activity {
 
         mWebView.setDownloadListener(new DownloadListener() {
             @Override
-            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
-                Uri uri = Uri.parse(url);
-                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
-                startActivity(intent);
-//                finish();
+            public void onDownloadStart(final String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
+                Log.d("weburl",url);
+                String fileName = url.substring(url.lastIndexOf("/") + 1);
+
+                new AlertDialog.Builder(CommonWebviewActivity.this).setTitle("提示").setMessage("确定下载文件<"+fileName+">吗?").setNegativeButton(R.string.cancel, null)
+                        .setPositiveButton(R.string.sure, new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialog, int which) {
+                                DownloadUtil.DownloadFile(CommonWebviewActivity.this,url,"/sdcard/uu");
+
+                            }
+                        }).create().show();
+
             }
         });
 

+ 20 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/MyApplication.java

@@ -11,7 +11,10 @@ import android.os.StrictMode;
 import android.support.multidex.MultiDex;
 import android.util.Log;
 
+import com.android.volley.RequestQueue;
+import com.android.volley.toolbox.Volley;
 import com.baidu.mapapi.SDKInitializer;
+import com.lidroid.xutils.HttpUtils;
 import com.nostra13.universalimageloader.cache.disc.impl.TotalSizeLimitedDiscCache;
 import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
 import com.nostra13.universalimageloader.cache.memory.MemoryCacheAware;
@@ -43,6 +46,8 @@ public class MyApplication extends Application {
     public static Cookie cookie;
     public static Cookie cookieERP;
 
+    public static RequestQueue mRequestQueue;
+    public static HttpUtils mHttpUtils;
 
     private static MyApplication INSTANCE = null;
 
@@ -56,6 +61,11 @@ public class MyApplication extends Application {
         super.onCreate();
         INSTANCE = this;
         ZXingLibrary.initDisplayOpinion(this);
+        mRequestQueue = Volley.newRequestQueue(this);
+
+        mHttpUtils = new HttpUtils();
+        configHttpUtils();
+
 //        CrashReport.initCrashReport(getApplicationContext(), "900050585", false);
         PreferenceUtils.putBoolean(this, Constants.IS_NOTIFICATION, false);//不进行通知
         new Handler().postDelayed(new Runnable() {
@@ -86,6 +96,16 @@ public class MyApplication extends Application {
         mNetWorkObservable = new NetWorkObservable(this);
     }
 
+    /**
+     * 为HttpUtils配置参数
+     */
+    private void configHttpUtils() {
+        mHttpUtils.configRequestThreadPoolSize(4);
+        mHttpUtils.configRequestRetryCount(3);
+        mHttpUtils.configResponseTextCharset("utf-8");
+        mHttpUtils.configTimeout(10000);
+    }
+
     /**
      * 在程序内部关闭时,调用此方法
      */

+ 21 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/AllSubscriptionNumbersAdapter.java

@@ -16,6 +16,7 @@ import com.xzjmyk.pm.activity.bean.SubscriptionNumber;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
+import com.xzjmyk.pm.activity.ui.erp.view.CustomProgressDialog;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
 
 import java.util.HashMap;
@@ -24,16 +25,20 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * Created by PROD on 2016/9/7.
+ * Created by RaoMeng on 2016/9/7.
  */
 public class AllSubscriptionNumbersAdapter extends BaseAdapter {
     private Context mContext;
     private List<SubscriptionNumber> mSubscriptionNumbers;
     private int clickPosition;
+    private int status;
+    protected CustomProgressDialog progressDialog;
 
     public AllSubscriptionNumbersAdapter(Context mContext, List<SubscriptionNumber> mSubscriptionNumbers) {
         this.mContext = mContext;
         this.mSubscriptionNumbers = mSubscriptionNumbers;
+
+        progressDialog = CustomProgressDialog.createDialog(mContext);
     }
 
     @Override
@@ -66,19 +71,25 @@ public class AllSubscriptionNumbersAdapter extends BaseAdapter {
             viewHolder = (ViewHolder) convertView.getTag();
         }
 
-        boolean sub = mSubscriptionNumbers.get(position).isSub();
         viewHolder.nameTextView.setText(mSubscriptionNumbers.get(position).getTitle());
+        status = mSubscriptionNumbers.get(position).getStatus();
 
-        if (sub){
+        if (status == 1){
             viewHolder.nameTextView.setTextColor(mContext.getResources().getColor(R.color.gray));
             viewHolder.nameTextView.setBackground(mContext.getResources().getDrawable(R.drawable.shape_subscribe_selet_bg));
             viewHolder.applyTextView.setText("已订阅");
             viewHolder.applyTextView.setEnabled(false);
-        }else {
+        }else if (status == 3){
             viewHolder.nameTextView.setTextColor(mContext.getResources().getColor(R.color.white));
             viewHolder.nameTextView.setBackground(mContext.getResources().getDrawable(R.drawable.shape_subscribe_bg));
+//            CommonUtil.textUnderlineForStyle(viewHolder.applyTextView,"申请","申请");
             viewHolder.applyTextView.setText("申请");
             viewHolder.applyTextView.setEnabled(true);
+        }else if (status == 2){
+            viewHolder.nameTextView.setTextColor(mContext.getResources().getColor(R.color.gray));
+            viewHolder.nameTextView.setBackground(mContext.getResources().getDrawable(R.drawable.shape_subscribe_selet_bg));
+            viewHolder.applyTextView.setText("已申请");
+            viewHolder.applyTextView.setEnabled(false);
         }
 
         viewHolder.applyTextView.setOnClickListener(new View.OnClickListener() {
@@ -87,6 +98,7 @@ public class AllSubscriptionNumbersAdapter extends BaseAdapter {
 //                Intent intent = new Intent();
 //                intent.setClass(mContext, ApplySubscribeActivity.class);
 //                mContext.startActivity(intent);
+
                 clickPosition = position;
                 sendApplySubs(clickPosition);
             }
@@ -99,6 +111,7 @@ public class AllSubscriptionNumbersAdapter extends BaseAdapter {
      * 申请订阅
      */
     private void sendApplySubs(int position) {
+        progressDialog.show();
         String applyUrl = Constants.getAppBaseUrl(mContext) + "common/charts/vastAddSubsApply.action";
         Map<String,Object> params = new HashMap<>();
         params.put("ids",mSubscriptionNumbers.get(position).getId());
@@ -121,12 +134,14 @@ public class AllSubscriptionNumbersAdapter extends BaseAdapter {
         public void handleMessage(Message msg) {
             switch (msg.what){
                 case APPLY_SUBSCRIPTION:
+                    progressDialog.dismiss();
                     Log.d("applysubscription", msg.getData().getString("result"));
-                    Crouton.makeText(mContext, "添加订阅成功");
-                    mSubscriptionNumbers.get(clickPosition).setSub(true);
+                    CommonUtil.imageToast(mContext,R.drawable.ic_apply_submit_success,"",2000);
+                    mSubscriptionNumbers.get(clickPosition).setStatus(2);
                     notifyDataSetChanged();
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
+                    progressDialog.dismiss();
                     Crouton.makeText(mContext,msg.getData().getString("result"));
                     break;
             }

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/MySubscriptionAdapter.java

@@ -76,8 +76,10 @@ public class MySubscriptionAdapter extends BaseAdapter {
         int itemViewType = getItemViewType(i);
         if (itemViewType == 0){
             viewHolder.lockIv.setVisibility(View.VISIBLE);
+            viewHolder.contentTv.setText("该订阅号不可取消订阅");
         }else if (itemViewType == -1){
             viewHolder.lockIv.setVisibility(View.GONE);
+            viewHolder.contentTv.setText("侧滑可取消订阅");
         }
         viewHolder.subscribeIv.setImageResource(mImageIds.get(i % 5));
         if ("private".equals(mPersonalSubscriptionBeans.get(i).getKIND())){
@@ -85,7 +87,6 @@ public class MySubscriptionAdapter extends BaseAdapter {
         }else {
             viewHolder.titleTv.setText(mPersonalSubscriptionBeans.get(i).getTITLE()+"(公)");
         }
-        viewHolder.contentTv.setText("该订阅号属于"+mPersonalSubscriptionBeans.get(i).getTYPE()+"类订阅号");
         return view;
     }
 

+ 5 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/SubscriptionNumber.java

@@ -8,14 +8,14 @@ public class SubscriptionNumber {
     private int id;
     private String title;
     private String kind;
-    private boolean sub;
+    private int status;
 
-    public boolean isSub() {
-        return sub;
+    public int getStatus() {
+        return status;
     }
 
-    public void setSub(boolean sub) {
-        this.sub = sub;
+    public void setStatus(int status) {
+        this.status = status;
     }
 
     public int getId() {

+ 7 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SelectListBean.java

@@ -3,15 +3,13 @@ package com.xzjmyk.pm.activity.bean.oa;
 import android.os.Parcel;
 import android.os.Parcelable;
 
-import com.baidu.cyberplayer.utils.T;
-
 /**
  * Created by pengminggong on 2016/9/20.
  */
 public class SelectListBean implements Parcelable {
     private String name;
     private boolean isClick = false;
-    private T t;
+    private String object;
 
     public SelectListBean() {
     }
@@ -32,23 +30,25 @@ public class SelectListBean implements Parcelable {
         isClick = click;
     }
 
-    public T getT() {
-        return t;
+    public String getObject() {
+        return object;
     }
 
-    public void setT(T t) {
-        this.t = t;
+    public void setObject(String object) {
+        this.object = object;
     }
 
     protected SelectListBean(Parcel in) {
         name = in.readString();
         isClick = in.readByte() != 0;
+        object = in.readString();
     }
 
     @Override
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeString(name);
         dest.writeByte((byte) (isClick ? 1 : 0));
+        dest.writeString(object);
     }
 
     @Override

+ 8 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/base/EasyFragment.java

@@ -1,6 +1,6 @@
 package com.xzjmyk.pm.activity.ui.base;
 
-import android.app.Activity;
+import android.content.Context;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.util.Log;
@@ -17,7 +17,8 @@ import com.lidroid.xutils.ViewUtils;
 public abstract class EasyFragment extends Fragment {
 
     private View mRootView;
-
+    protected  boolean isRunable;
+    protected Context ct;
     /**
      * 是否缓存视图
      *
@@ -83,9 +84,10 @@ public abstract class EasyFragment extends Fragment {
     }
 
     @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-        Log.d("roamer", TAG() + " onAttach");
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        ct=context;
+        isRunable=true;
     }
 
     @Override
@@ -121,6 +123,7 @@ public abstract class EasyFragment extends Fragment {
     @Override
     public void onStop() {
         super.onStop();
+        isRunable=false;
         Log.d("roamer", TAG() + " onStop");
     }
 

+ 4 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SubcribeManageActivity.java

@@ -37,16 +37,17 @@ public class SubcribeManageActivity extends BaseActivity{
         mTabPageIndicator = (TabPageIndicator) findViewById(R.id.subscribe_manage_tab);
         mUnderlinePageIndicator = (UnderlinePageIndicator) findViewById(R.id.subscribe_manage_undertab);
         mViewPager = (NoSlideViewpager) findViewById(R.id.subscribe_manage_vp);
+
         mSubscriptionAllFragment = BaseFragment.newInstance(SubscriptionAllFragment.class);
         mSubscriptionMyFragment = BaseFragment.newInstance(SubscriptionMyFragment.class);
 
         mSubscribeFragments = new ArrayList<>();
-        mSubscribeFragments.add(mSubscriptionMyFragment);
         mSubscribeFragments.add(mSubscriptionAllFragment);
+        mSubscribeFragments.add(mSubscriptionMyFragment);
 
         mTitleStrings = new ArrayList<>();
-        mTitleStrings.add("我的订阅");
-        mTitleStrings.add("全部订阅");
+        mTitleStrings.add("订阅");
+        mTitleStrings.add("订阅");
         mSubscribeManegeVpAdapter = new SubscribeManegeVpAdapter(this,mSubscribeFragments,mTitleStrings,getSupportFragmentManager());
 
         mViewPager.setAdapter(mSubscribeManegeVpAdapter);

+ 14 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessActivity.java

@@ -20,6 +20,7 @@ import android.widget.ListView;
 import android.widget.PopupWindow;
 import android.widget.Scroller;
 import android.widget.SimpleAdapter;
+import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -114,11 +115,10 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
         layout.setVisibility(View.VISIBLE);
     }
 
-   private Menu mMenu;
+   private Menu menu;
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         getMenuInflater().inflate(R.menu.menu_crm_find, menu);
-        mMenu=menu;
         return true;
     }
 
@@ -236,7 +236,7 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
 
     private PopupWindow popupWindow = null;
 
-    public void showPopupWindow(View parent) {
+    public void showPopupWindow(final View menu) {
         View view = null;
         WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
         if (popupWindow == null) {
@@ -250,6 +250,7 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
                     new String[]{"item_name"}, new int[]{R.id.tv_item_name});
             plist.setAdapter(adapter);
             plist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+
                 @Override
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                     switch (position) {
@@ -259,38 +260,38 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
 
                             break;*/
                         case 0://本月
-                           String  month = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getTimesMonthmorning());
+                            String month = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getTimesMonthmorning());
                             sendHttpResquest("to_char(bc_recorddate,'yyyymm')=" + month);
-                              mMenu.findItem(R.id.crm_data_find).setTitle("本月");
+                            ((TextView) menu).setText("本月");
                             break;
                         case 1://上月
                             String lastMonth = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getLastMonthStartMorning());
                             sendHttpResquest("to_char(bc_recorddate,'yyyymm')=" + lastMonth);
-                            mMenu.findItem(R.id.crm_data_find).setTitle("上月");
+                            ((TextView) menu).setText("上月");
+
                             break;
                         case 2://本季度
                             String quarterStart = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getCurrentQuarterStartTime());
                             String quarterEnd = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getCurrentQuarterEndTime());
-                            mMenu.findItem(R.id.crm_data_find).setTitle("本季度");
+
                             sendHttpResquest("to_char(bc_recorddate,'yyyymm')>=" + quarterStart + " and to_char(bc_recorddate,'yyyymm')< " + quarterEnd);
+                            ((TextView) menu).setText("本季度");
                             break;
                         case 3://上季度
-                            mMenu.findItem(R.id.crm_data_find).setTitle("上季度");
                             String preStart = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getPreQuarterStartTime());
                             String preEnd = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getPreQuarterEndTime());
                             sendHttpResquest("to_char(bc_recorddate,'yyyymm')>=" + preStart + " and to_char(bc_recorddate,'yyyymm')< " + preEnd);
-                            mMenu.findItem(R.id.crm_data_find).setTitle("上季度");
+                            ((TextView) menu).setText("上季度");
                             break;
                         case 4://本年度
-                            mMenu.findItem(R.id.crm_data_find).setTitle("本月");
                             String currentYear = new SimpleDateFormat("yyyy").format(DateFormatUtil.getCurrentYearStartTime());
                             sendHttpResquest("to_char(bc_recorddate,'yyyy')=" + currentYear);
-                            mMenu.findItem(R.id.crm_data_find).setTitle("本年度");
+                            ((TextView) menu).setText("本年度");
                             break;
                         case 5://上年度
                             String preYear = new SimpleDateFormat("yyyy").format(DateFormatUtil.getPreYearStartTime());
                             sendHttpResquest("to_char(bc_recorddate,'yyyy')=" + preYear);
-                            mMenu.findItem(R.id.crm_data_find).setTitle("上年度");
+                            ((TextView) menu).setText("上年度");
                             break;
                     }
                     popupWindow.dismiss();
@@ -313,7 +314,7 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
         popupWindow.setBackgroundDrawable(new BitmapDrawable());
         popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
         // 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半
-        popupWindow.showAsDropDown(parent, windowManager.getDefaultDisplay().getWidth(), 0);
+        popupWindow.showAsDropDown(menu, windowManager.getDefaultDisplay().getWidth(), 0);
     }
 
     private List<Map<String, Object>> getPopData() {

+ 1 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessSelectCustomerActivity.java

@@ -75,6 +75,7 @@ public class BusinessSelectCustomerActivity extends BaseActivity {
         if (getIntent()!=null){
             code=getIntent().getStringExtra("code");
         }
+
     }
 
     private void initListener() {

+ 115 - 53
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/ClientActivity.java

@@ -47,8 +47,10 @@ import com.xzjmyk.pm.activity.ui.erp.view.MyMarkerView;
 import com.xzjmyk.pm.activity.util.DateFormatUtil;
 import com.xzjmyk.pm.activity.util.DisplayUtil;
 import com.xzjmyk.pm.activity.util.StringUtils;
+import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.view.wheel.DatePicker;
 
+import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -81,6 +83,8 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
     private TextView tv_rank_sale_right;
     @ViewInject(R.id.tv_rank_rirun_left)
     private TextView tv_rank_rirun_left;
+    @ViewInject(R.id.subs_tv)
+    private TextView subs_tv;
     @ViewInject(R.id.tv_rank_rirun_right)
     private TextView tv_rank_rirun_right;
     @ViewInject(R.id.tv_rank_visit_left)
@@ -129,9 +133,17 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
     private TextView tv_em_saleb;
     @ViewInject(R.id.tv_em_salec)
     private TextView tv_em_salec;
+    @ViewInject(R.id.ib_forget_condition)
+    private TextView ib_forget_condition;
 
     @ViewInject(R.id.tv_cu_count)
     private TextView tv_cu_count;
+    @ViewInject(R.id.tv_customer_name)
+    private TextView tv_customer_name;
+    @ViewInject(R.id.tv_customer_lastTime)
+    private TextView tv_customer_lastTime;
+    @ViewInject(R.id.tv_customer_days)
+    private TextView tv_customer_days;
 
     @ViewInject(R.id.ib_ranking_condition)
     private TextView ib_ranking_condition;
@@ -172,6 +184,9 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
     private TextView tv_huikuan;
     @ViewInject(R.id.tv_chuhuo)
     private TextView tv_chuhuo;
+    private JSONArray subs;
+    private String date;
+    private JSONArray custs;
 
 
     @Override
@@ -197,6 +212,8 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
         ib_customer_vistor.setOnClickListener(this);
         ib_ranking_condition.setOnClickListener(this);
         ib_index_condition.setOnClickListener(this);
+        subs_tv.setOnClickListener(this);
+        ib_forget_condition.setOnClickListener(this);
     }
 
     private void initData() {
@@ -388,7 +405,7 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
         set1.setColors(JOYFUL_COLORS);
         //set1.setVisible(false);
         //set1.setDrawValues(false);
-        set1.setValueFormatter(new ValueFormatter() {
+        /*set1.setValueFormatter(new ValueFormatter() {
             private DecimalFormat mFormat;
 
             public void DefaultValueFormatter(int digits) {
@@ -399,7 +416,6 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
                         b.append(".");
                     b.append("0");
                 }
-
                 mFormat = new DecimalFormat("###,###,###,##0" + b.toString());
             }
 
@@ -416,7 +432,7 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
                 }
                 return "";
             }
-        });
+        });*/
         dataSets.clear();
         dataSets.add(set1);
 
@@ -518,6 +534,23 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
             case R.id.ib_ranking_condition:
                 showDateDialog(R.id.ib_ranking_condition);
                 break;
+            case R.id.subs_tv://当点击更多
+                //判断是否可以进去
+                if (subs != null && subs.size() > 3) {
+                    Intent intent = new Intent(ct, SubsActivity.class);
+                    intent.putExtra("type", 1);
+                    intent.putExtra("data", subs.toString());
+                    startActivity(intent);
+                }
+                break;
+            case R.id.ib_forget_condition:
+                if (custs != null && custs.size() > 0) {
+                    Intent intent = new Intent(ct, SubsActivity.class);
+                    intent.putExtra("data", custs.toString());
+                    intent.putExtra("type", 2);
+                    startActivity(intent);
+                }
+                break;
          /*   case R.id.ib_em_condition:
                 showDateDialog(R.id.ib_em_condition);
                 break;*/
@@ -778,69 +811,80 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
                     //解析指标和下属
                     if (!root.getJSONArray("target").isEmpty()) {
                         JSONObject target = root.getJSONArray("target").getJSONObject(0);
-                        tv_em_a.setText(target.getString("CUSTOMERCOUNT"));
+                        if (date.equals(DateFormatUtil.getStrDate4Date(new Date(), "yyyyMM")))
+                            tv_em_a.setText(target.getString("CUSTOMERCOUNT"));
                         float[] ydata = {0, 0, 0, 0, 0, 0, 0};
                         ydata[1] = target.getIntValue("RANK");
-                        ydata[0] = target.getFloatValue("FIRSTBFCOUNT");
+                        float firstbfcount = target.getFloatValue("FIRSTBFCOUNT");
+                        BigDecimal bigDecimal = new BigDecimal(firstbfcount);
+                        ydata[0] = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
                         ydata[3] = target.getIntValue("TOPCOUNT");
-                        ydata[2] = target.getFloatValue("ACTUALPROFIT");
+                        bigDecimal = new BigDecimal(target.getFloatValue("ACTUALPROFIT"));
+                        ydata[2] = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP).floatValue();
                         setData(7, ydata);
                     } else {
                         float[] ydata = {0, 0, 0, 0, 0, 0, 0};
                         setData(7, ydata);
                     }
-                    if (!root.getJSONArray("subs").isEmpty()) {
-                        int size = root.getJSONArray("subs").size();
+                    if (!date.equals(DateFormatUtil.getStrDate4Date(new Date(), "yyyyMM"))) return;
+                    subs = root.containsKey("subs") ? root.getJSONArray("subs") : new JSONArray();
+                    if (!subs.isEmpty()) {
+                        int size = subs.size();
                         ll_data_one.setVisibility(View.GONE);
                         ll_data_two.setVisibility(View.GONE);
                         ll_data_three.setVisibility(View.GONE);
                         switch (size) {
                             case 3:
-                                tv_em_c.setText(root.getJSONArray("subs").getJSONObject(2).getString("CUSTOMERCOUNT"));
+                                tv_em_c.setText(subs.getJSONObject(2).getString("CUSTOMERCOUNT"));
                                 ll_data_three.setVisibility(View.VISIBLE);
-                                tv_em_salec.setText(getFloat(root.getJSONArray("subs").getJSONObject(2).getFloatValue("FIRSTBFCOUNT"))
-                                        + "/" + getFloat(root.getJSONArray("subs").getJSONObject(2).getFloatValue("ACTUALPROFIT")));
-                                tv_em_planc.setText(getFloat(root.getJSONArray("subs").getJSONObject(2).getIntValue("RANK"))
-                                        + "/" + getFloat(root.getJSONArray("subs").getJSONObject(2).getIntValue("TOPCOUNT")));
+                                tv_em_salec.setText(getFloat(subs.getJSONObject(2).getFloatValue("FIRSTBFCOUNT"))
+                                        + "/" + getFloat(subs.getJSONObject(2).getFloatValue("ACTUALPROFIT")));
+                                tv_em_planc.setText(getFloat(subs.getJSONObject(2).getIntValue("RANK"))
+                                        + "/" + getFloat(subs.getJSONObject(2).getIntValue("TOPCOUNT")));
                             case 2:
-                                tv_em_b.setText(root.getJSONArray("subs").getJSONObject(1).getString("CUSTOMERCOUNT"));
+                                tv_em_b.setText(subs.getJSONObject(1).getString("CUSTOMERCOUNT"));
                                 ll_data_two.setVisibility(View.VISIBLE);
-                                tv_em_saleb.setText(getFloat(root.getJSONArray("subs").getJSONObject(1).getFloatValue("FIRSTBFCOUNT"))
-                                        + "/" + getFloat(root.getJSONArray("subs").getJSONObject(1).getFloatValue("ACTUALPROFIT")));
-                                tv_em_planb.setText(getFloat(root.getJSONArray("subs").getJSONObject(1).getIntValue("RANK"))
-                                        + "/" + getFloat(root.getJSONArray("subs").getJSONObject(1).getIntValue("TOPCOUNT")));
+                                tv_em_saleb.setText(getFloat(subs.getJSONObject(1).getFloatValue("FIRSTBFCOUNT"))
+                                        + "/" + getFloat(subs.getJSONObject(1).getFloatValue("ACTUALPROFIT")));
+                                tv_em_planb.setText(getFloat(subs.getJSONObject(1).getIntValue("RANK"))
+                                        + "/" + getFloat(subs.getJSONObject(1).getIntValue("TOPCOUNT")));
                             case 1:
-                                tv_em_a.setText(root.getJSONArray("subs").getJSONObject(0).getString("CUSTOMERCOUNT"));
+                                tv_em_a.setText(subs.getJSONObject(0).getString("CUSTOMERCOUNT"));
                                 ll_data_one.setVisibility(View.VISIBLE);
-                                tv_em_salea.setText(getFloat(root.getJSONArray("subs").getJSONObject(0).getFloatValue("FIRSTBFCOUNT"))
-                                        + "/" + getFloat(root.getJSONArray("subs").getJSONObject(0).getFloatValue("ACTUALPROFIT")));
-                                tv_em_plana.setText(getFloat(root.getJSONArray("subs").getJSONObject(0).getIntValue("RANK"))
-                                        + "/" + getFloat(root.getJSONArray("subs").getJSONObject(0).getIntValue("TOPCOUNT")));
+                                tv_em_salea.setText(getFloat(subs.getJSONObject(0).getFloatValue("FIRSTBFCOUNT"))
+                                        + "/" + getFloat(subs.getJSONObject(0).getFloatValue("ACTUALPROFIT")));
+                                tv_em_plana.setText(getFloat(subs.getJSONObject(0).getIntValue("RANK"))
+                                        + "/" + getFloat(subs.getJSONObject(0).getIntValue("TOPCOUNT")));
                                 break;
                             default:
-                                ll_data_one.setVisibility(View.VISIBLE);
-                                ll_data_two.setVisibility(View.VISIBLE);
-                                ll_data_three.setVisibility(View.VISIBLE);
-                                tv_em_a.setText(root.getJSONArray("subs").getJSONObject(0).getString("CUSTOMERCOUNT"));
-                                tv_em_b.setText(root.getJSONArray("subs").getJSONObject(1).getString("CUSTOMERCOUNT"));
-                                tv_em_c.setText(root.getJSONArray("subs").getJSONObject(2).getString("CUSTOMERCOUNT"));
-                                tv_em_plana.setText(root.getJSONArray("subs").getJSONObject(0).getFloatValue("FIRSTBFCOUNT")
-                                        + "/" + root.getJSONArray("subs").getJSONObject(0).getFloatValue("ACTUALPROFIT"));
-                                tv_em_salea.setText(root.getJSONArray("subs").getJSONObject(0).getIntValue("RANK")
-                                        + "/" + root.getJSONArray("subs").getJSONObject(0).getIntValue("TOPCOUNT"));
-                                tv_em_planb.setText(root.getJSONArray("subs").getJSONObject(1).getFloatValue("FIRSTBFCOUNT")
-                                        + "/" + root.getJSONArray("subs").getJSONObject(1).getFloatValue("ACTUALPROFIT"));
-                                tv_em_saleb.setText(root.getJSONArray("subs").getJSONObject(1).getIntValue("RANK")
-                                        + "/" + root.getJSONArray("subs").getJSONObject(1).getIntValue("TOPCOUNT"));
-                                tv_em_planc.setText(root.getJSONArray("subs").getJSONObject(2).getFloatValue("FIRSTBFCOUNT")
-                                        + "/" + root.getJSONArray("subs").getJSONObject(2).getFloatValue("ACTUALPROFIT"));
-                                tv_em_salec.setText(root.getJSONArray("subs").getJSONObject(2).getIntValue("RANK")
-                                        + "/" + root.getJSONArray("subs").getJSONObject(2).getIntValue("TOPCOUNT"));
                                 break;
                         }
-                        ll_data_empty.setVisibility(View.GONE);
+                        if (size > 3) {
+                            tv_em_c.setText(subs.getJSONObject(2).getString("CUSTOMERCOUNT"));
+                            tv_em_b.setText(subs.getJSONObject(1).getString("CUSTOMERCOUNT"));
+                            tv_em_a.setText(subs.getJSONObject(0).getString("CUSTOMERCOUNT"));
+                            ll_data_one.setVisibility(View.VISIBLE);
+                            ll_data_two.setVisibility(View.VISIBLE);
+                            ll_data_three.setVisibility(View.VISIBLE);
+                            tv_em_salec.setText(getFloat(subs.getJSONObject(2).getFloatValue("FIRSTBFCOUNT"))
+                                    + "/" + getFloat(subs.getJSONObject(2).getFloatValue("ACTUALPROFIT")));
+                            tv_em_planc.setText(getFloat(subs.getJSONObject(2).getIntValue("RANK"))
+                                    + "/" + getFloat(subs.getJSONObject(2).getIntValue("TOPCOUNT")));
+                            tv_em_saleb.setText(getFloat(subs.getJSONObject(1).getFloatValue("FIRSTBFCOUNT"))
+                                    + "/" + getFloat(subs.getJSONObject(1).getFloatValue("ACTUALPROFIT")));
+                            tv_em_planb.setText(getFloat(subs.getJSONObject(1).getIntValue("RANK"))
+                                    + "/" + getFloat(subs.getJSONObject(1).getIntValue("TOPCOUNT")));
+                            tv_em_salea.setText(getFloat(subs.getJSONObject(0).getFloatValue("FIRSTBFCOUNT"))
+                                    + "/" + getFloat(subs.getJSONObject(0).getFloatValue("ACTUALPROFIT")));
+                            tv_em_plana.setText(getFloat(subs.getJSONObject(0).getIntValue("RANK"))
+                                    + "/" + getFloat(subs.getJSONObject(0).getIntValue("TOPCOUNT")));
+                            ll_data_empty.setVisibility(View.VISIBLE);
+                            subs_tv.setText("点击查看更多");
+                        } else
+                            ll_data_empty.setVisibility(View.GONE);
                     } else {
                         ll_data_empty.setVisibility(View.VISIBLE);
+                        subs_tv.setText("暂时没有数据");
                         ll_data_one.setVisibility(View.GONE);
                         ll_data_two.setVisibility(View.GONE);
                         ll_data_three.setVisibility(View.GONE);
@@ -849,14 +893,26 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
                 case INIT_InactionCusts:
                     progressDialog.dismiss();
                     Log.i(TAG, "handleMessage InactionCusts:" + msg.getData().getString("result"));
-                    if (JSON.parseObject(msg.getData().getString("result")).get("data") instanceof JSONObject) {
-                        root = JSON.parseObject(msg.getData().getString("result")).getJSONObject("datas");
-                        CommonUtil.textAarrySpanForStyle(tv_cu_count,
-                                root.getIntValue("customernum") + " 个"
-                                , new String[]{String.valueOf(root.getIntValue("customernum"))},
-                                ct.getResources().getColor(R.color.yellow_home));
-                        ll_data_empty1.setVisibility(View.GONE);
-                        ll_customer_lost.setVisibility(View.VISIBLE);
+                    String message = msg.getData().getString("result");
+                    if (JSON.parseObject(message).get("datas") instanceof JSONObject) {
+                        root = JSON.parseObject(message).getJSONObject("datas");
+                        custs = root.getJSONArray("cusdatas");
+                        if (custs != null && custs.size() > 0) {
+                            tv_customer_name.setText(getValues(custs.getJSONArray(0), 0));
+                            String time = getValues(custs.getJSONArray(0), 1);
+                            tv_customer_lastTime.setText(time);
+                            if (time.length() > 5)//容cuo
+                            {
+                                int i = (int) ((System.currentTimeMillis() - TimeUtils.s_str_2_long(time)) / (60 * 1000 * 24 * 60));
+                                tv_customer_days.setText("距离上次跟进" + i + "天");
+                            }
+                            ll_data_empty1.setVisibility(View.GONE);
+                            ll_customer_lost.setVisibility(View.VISIBLE);
+                        } else {
+                            //无数据处理
+                            ll_customer_lost.setVisibility(View.GONE);
+                            ll_data_empty1.setVisibility(View.VISIBLE);
+                        }
                     } else {
                         //无数据处理
                         ll_customer_lost.setVisibility(View.GONE);
@@ -901,11 +957,16 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
         return df.format(f);
     }
 
+    private String getValues(JSONArray array, int i) {
+        return array.getString(i) == null ? "" : array.getString(i);
+    }
+
     private void sendHttpResquest() {
         sendInactionCusts();
-        sendPersonalRank(DateFormatUtil.getStrDate4Date(new Date(), "yyyyMM"));
-        sendSalesKit(DateFormatUtil.getStrDate4Date(new Date(), "yyyyMM"));
-        sendTargets(DateFormatUtil.getStrDate4Date(new Date(), "yyyyMM"));
+        date = DateFormatUtil.getStrDate4Date(new Date(), "yyyyMM");
+        sendPersonalRank(date);
+        sendSalesKit(date);
+        sendTargets(date);
     }
 
     private void sendInactionCusts() {
@@ -921,6 +982,7 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
     }
 
     private void sendTargets(String date) {
+        this.date = date;
         progressDialog.show();
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         String url;

+ 5 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/CustomerAddActivity.java

@@ -328,7 +328,11 @@ public class CustomerAddActivity extends BaseActivity implements View.OnClickLis
                     Log.i(TAG, "handleMessage:" + msg.getData().getString("result"));
                     ToastMessage("录入成功!");
                     bt_uncommit.setVisibility(View.GONE);
-                    bt_commit.setVisibility(View.VISIBLE);
+                    if (type == 0){
+                        bt_commit.setVisibility(View.GONE);
+                    }else if (type == 1){
+                        bt_commit.setVisibility(View.VISIBLE);
+                    }
                     bt_save.setVisibility(View.GONE);
                     mMenu.findItem(R.id.btn_save).setTitle("更新");
                     mMenu.findItem(R.id.btn_save).setVisible(true);

+ 152 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/SubsActivity.java

@@ -0,0 +1,152 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.crm;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.util.TimeUtils;
+
+import java.text.DecimalFormat;
+
+/**
+ * 我的下属和遗忘客户更多界面
+ * type: 1:我的下属   2:遗忘客户
+ */
+public class SubsActivity extends BaseActivity {
+    private ListView list;
+    private int type = -1;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_subs);
+        LinearLayout top = (LinearLayout) findViewById(R.id.top);
+        list = (ListView) findViewById(R.id.list);
+        if (getIntent() == null) return;
+        type = getIntent().getIntExtra("type", -1);
+        if (type <= 0) return;
+        String title = "UU互联";
+        if (type == 2) {
+            title = "遗忘客户";
+            top.setVisibility(View.GONE);
+        } else if (type == 1) {
+            title = "我的下属";
+            top.setVisibility(View.VISIBLE);
+        }
+        getSupportActionBar().setTitle(title);
+        String chche = getIntent().getStringExtra("data");
+        JsonValidator v = new JsonValidator();
+        if (!StringUtils.isEmpty(chche) && v.validate(chche)) {
+            JSONArray array = JSON.parseArray(chche);
+            if (array == null) return;
+            list.setAdapter(new Adapter(array));
+        }
+    }
+
+    class Adapter extends BaseAdapter {
+        private JSONArray array;
+
+        public Adapter(JSONArray array) {
+            this.array = array;
+        }
+
+        @Override
+        public int getCount() {
+            return array == null ? 0 : array.size();
+        }
+
+        @Override
+        public Object getItem(int i) {
+            return array.get(i);
+        }
+
+        @Override
+        public long getItemId(int i) {
+            return i;
+        }
+
+        @Override
+        public View getView(int i, View view, ViewGroup viewGroup) {
+            ViewHolder holder = null;
+            if (view == null) {
+                holder = new ViewHolder();
+                view = LayoutInflater.from(ct).inflate(R.layout.item_subs, null);
+                holder.name = (TextView) view.findViewById(R.id.name);
+                holder.plan = (TextView) view.findViewById(R.id.plan);
+                holder.salea = (TextView) view.findViewById(R.id.salea);
+                holder.subs = (LinearLayout) view.findViewById(R.id.subs);
+
+                holder.custs = (RelativeLayout) view.findViewById(R.id.custs);
+                holder.name_tv = (TextView) view.findViewById(R.id.name_tv);
+                holder.time = (TextView) view.findViewById(R.id.time);
+                holder.day = (TextView) view.findViewById(R.id.day);
+                view.setTag(holder);
+            } else {
+                holder = (ViewHolder) view.getTag();
+            }
+            if (type == 1) {
+                holder.subs.setVisibility(View.VISIBLE);
+                holder.custs.setVisibility(View.GONE);
+                JSONObject object = array.getJSONObject(i);
+                holder.name.setText(getValue(object, "CUSTOMERCOUNT"));
+                holder.plan.setText(getFloatValue(object, ("RANK")) + "/" + getFloatValue(object, ("TOPCOUNT")));
+                holder.salea.setText(getFloatValue(object, ("FIRSTBFCOUNT")) + "/" + getFloatValue(object, ("ACTUALPROFIT")));
+            } else if (type == 2) {
+                JSONArray arrays = array.getJSONArray(i);
+                holder.subs.setVisibility(View.GONE);
+                holder.custs.setVisibility(View.VISIBLE);
+                holder.name_tv.setText(getValues(arrays, 0));
+                String time = getValues(arrays, 1);
+                holder.time.setText(time);
+                if (time.length() > 5)//容cuo
+                {
+                    int j = (int) ((System.currentTimeMillis() - TimeUtils.s_str_2_long(time)) / (60 * 1000 * 24 * 60));
+                    holder.day.setText("距离上次跟进" + j + "天");
+                }
+            }
+            return view;
+        }
+
+        private String getValues(JSONArray array, int i) {
+            return array.getString(i) == null ? "" : array.getString(i);
+        }
+
+        private String getValue(JSONObject object, String key) {
+            if (!object.containsKey(key) || StringUtils.isEmpty(object.getString(key))) return "";
+            return object.getString(key);
+        }
+
+        private String getFloatValue(JSONObject object, String key) {
+            if (!object.containsKey(key) || StringUtils.isEmpty(object.getString(key)))
+                return "0.0";
+            float f = object.getFloatValue(key);
+            if (f < 1f) {
+                return f + "";
+            }
+            DecimalFormat df = new DecimalFormat(".##");
+            return df.format(f);
+        }
+
+        class ViewHolder {
+            LinearLayout subs;
+            TextView name, plan, salea;
+            RelativeLayout custs;
+            TextView name_tv, time, day;
+
+
+        }
+    }
+}

+ 11 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/TaskAddActivity.java

@@ -16,7 +16,9 @@ import com.andreabaccega.widget.FormEditText;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.oa.SelectListBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectListActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.UserSelectActivity;
 import com.xzjmyk.pm.activity.ui.erp.model.Employees;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
@@ -384,13 +386,11 @@ public class TaskAddActivity extends BaseActivity implements View.OnClickListene
                 showNoticeDialog();
                 break;
             case R.id.tv_priority:
-//                Intent data = new Intent(ct, SelectListActivity.class);
-//                String[] str = new String[]{"特急",
-//                        "紧急", "一般", "不紧急"};
-//                data.putExtra("data", str);
-//                data.putExtra("type", 1);
-//                startActivityForResult(data, 0x20);
-                showPriorityDialog(tv_priority, 0x11);
+                Intent data = new Intent(ct, SelectListActivity.class);
+                data.putExtra("type", SelectListActivity.ADD_TASK_PRIORITY);
+                data.putExtra("title", "紧急程度");
+                startActivityForResult(data, 0x22);
+//                showPriorityDialog(tv_priority, 0x11);
                 break;
             case R.id.tv_executive:
                 Intent intent = new Intent(ct, UserSelectActivity.class);
@@ -432,15 +432,17 @@ public class TaskAddActivity extends BaseActivity implements View.OnClickListene
         if (data == null) return;
         if (requestCode == 0x11 && resultCode == 0x11) {
             ArrayList<Employees> list = data.getParcelableArrayListExtra("data");
-            Log.i("gongpengming", "onActivityResult");
             if (ListUtils.isEmpty(list)) return;
-            Log.i("gongpengming", "部位0");
             StringBuilder str = new StringBuilder();
             for (Employees e : list) {
                 str.append("," + e.getEm_name());
             }
             str.delete(0, 1);
             tv_executive.setText(str.toString());
+        } else if (requestCode == 0x22 && resultCode == 0x20) {
+            SelectListBean b = data.getParcelableExtra("data");
+            if (b == null) return;
+            tv_priority.setText(com.xzjmyk.pm.activity.util.StringUtils.isEmpty(b.getName()) ? "" : b.getName());
         }
     }
 }

+ 63 - 22
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportAddActivity.java

@@ -13,16 +13,20 @@ import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.andreabaccega.widget.FormEditText;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.OABean;
+import com.xzjmyk.pm.activity.bean.oa.SelectListBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectListActivity;
 import com.xzjmyk.pm.activity.ui.erp.util.CodeUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
+import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 import com.xzjmyk.pm.activity.ui.erp.util.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.view.SingleDialog;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
@@ -30,9 +34,6 @@ import com.xzjmyk.pm.activity.util.DateFormatUtil;
 import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.view.wheel.DateTimePicker;
 
-import org.json.JSONException;
-import org.json.JSONObject;
-
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -68,7 +69,6 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
     @ViewInject(R.id.tv_relate_business)
     private FormEditText tv_relate_business;
     private int vp_id = -1;
-    private int type = -1;
 
     private int mVrId;
 
@@ -94,9 +94,11 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
         tv_date_start.setKeyListener(null);
         tv_date_end.setKeyListener(null);
         tv_customer_login.setOnClickListener(this);
-
         tv_visit_steps.setKeyListener(null);
+        tv_relate_business.setKeyListener(null);
         tv_visit_steps.setOnClickListener(this);
+        tv_relate_business.setOnClickListener(this);
+
     }
 
     private void initData() {
@@ -186,14 +188,8 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                     break;
                 case GET_VR_ID:
                     String resultStr = msg.getData().getString("result");
-                    try {
-                        JSONObject resultJsonObject = new JSONObject(resultStr);
-                        if (resultJsonObject != null && resultJsonObject.getBoolean("success")) {
-                            mVrId = resultJsonObject.getInt("id");
-                        }
-                    } catch (JSONException e) {
-                        e.printStackTrace();
-                    }
+                    JSONObject resultJsonObject = JSON.parseObject(resultStr);
+                    mVrId = resultJsonObject.getInteger("id");
                     break;
                 case LOAD_JIEDUAN:
                     progressDialog.dismiss();
@@ -243,16 +239,16 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                             CommonUtil.getNoMarkEditText(tv_customer_login) +
                             "\",\n" +
                             "\"vr_cucontact\":\"" +
-                            CommonUtil.getNoMarkEditText(tv_linksman_login)+
+                            CommonUtil.getNoMarkEditText(tv_linksman_login) +
                             "\",\n" +
                             "\"vr_title\":\"" +
                             CommonUtil.getNoMarkEditText(tv_visit_theme) +//主题
                             "\",\n" +
                             "\"vr_nichestep\":\"" +
-                            CommonUtil.getNoMarkEditText(tv_visit_steps)+
+                            CommonUtil.getNoMarkEditText(tv_visit_steps) +
                             "\",\n" +
                             "\"vr_detail\":\"" +
-                            CommonUtil.getNoMarkEditText(tv_visit_content)+
+                            CommonUtil.getNoMarkEditText(tv_visit_content) +
                             "\",\n" +
                             "\"vr_recorddate\":\"" +
                             DateFormatUtil.getStrDate4Date(new Date(), "yyyy-MM-dd") +
@@ -264,13 +260,10 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                             tv_date_end.getText().toString() +//结束时间
                             "\"\n" +
                             "}";
-
-
         } else {
             return;
         }
         progressDialog.show();
-
         String url = Constants.getAppBaseUrl(ct) + "crm/customermgr/saveVisitRecord.action";
         Map<String, Object> params = new HashMap<>();
         params.put("formStore", formStore);
@@ -312,11 +305,58 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                 });
                 break;
             case R.id.tv_customer_login:
-                loadCustomer(3);
+                Intent data = new Intent(ct, SelectListActivity.class);
+                data.putExtra("type", SelectListActivity.VISIT_REPORT_PLAN_CLIENT);
+                data.putExtra("title", "客户列表");
+                startActivityForResult(data, 0x22);
+//                loadCustomer(3);
                 break;
             case R.id.tv_visit_steps:
-                loadJieDuan();
+                Intent data2 = new Intent(ct, SelectListActivity.class);
+                data2.putExtra("type", SelectListActivity.VISIT_JIE_DUAN);
+                data2.putExtra("title", "当前阶段");
+                startActivityForResult(data2, 0x23);
+//                loadJieDuan();
                 break;
+            case R.id.tv_relate_business:
+                Intent data3 = new Intent(ct, SelectListActivity.class);
+                data3.putExtra("type", SelectListActivity.VISIT_NICHECODES);
+                data3.putExtra("title", "关联商机");
+                startActivityForResult(data3, 0x24);
+//                loadJieDuan();
+                break;
+        }
+    }
+
+    private String nichecode;//商机编号
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (data == null) return;
+        if (requestCode == 0x22 && resultCode == 0x20) {
+            SelectListBean b = data.getParcelableExtra("data");
+            if (b == null || StringUtils.isEmpty(b.getObject())) return;
+            JsonValidator validator = new JsonValidator();
+            if (validator.validate(b.getObject())) {
+                com.alibaba.fastjson.JSONObject object = JSON.parseObject(b.getObject());
+                tv_customer_login.setText(object.containsKey("CU_NAME") ? object.getString("CU_NAME") : " ");
+                tv_linksman_login.setText(object.containsKey("CU_CONTACT") ? object.getString("CU_CONTACT") : " ");
+                tv_address_login.setText(object.containsKey("CU_ADD1") ? object.getString("CU_ADD1") : " ");
+            }
+        } else if (requestCode == 0x23 && resultCode == 0x20) {
+            SelectListBean b = data.getParcelableExtra("data");
+            if (b == null || StringUtils.isEmpty(b.getObject())) return;
+            tv_visit_steps.setText(b.getName());
+        } else if (requestCode == 0x24 && resultCode == 0x20) {
+            SelectListBean b = data.getParcelableExtra("data");
+            if (b == null || StringUtils.isEmpty(b.getObject())) return;
+            tv_relate_business.setText(b.getName());
+            JsonValidator validator = new JsonValidator();
+            if (validator.validate(b.getObject())) {
+                JSONObject object = JSON.parseObject(b.getObject());
+                nichecode = object.getString("code");
+                Log.i("gongpengming", "nichecode=" + (StringUtils.isEmpty(nichecode) ? "空的" : nichecode));
+            }
         }
     }
 
@@ -383,7 +423,8 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
         //cu_code客户编号
         param.put("cu_nichestep", tv_visit_steps.getText().toString());
         param.put("cu_code", vp_code);
-        param.put("bc_nichecode", tv_relate_business.getText().toString());
+//        param.put("bc_nichecode", tv_relate_business.getText().toString());
+        param.put("bc_nichecode", StringUtils.isEmpty(nichecode) ? "" : nichecode);
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"));
         com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.httpSendRequest(this, url, param, mHandler, headers, 0x16, null, null, "post");

+ 42 - 23
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportPlanActivity.java

@@ -13,23 +13,25 @@ import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.andreabaccega.widget.FormEditText;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.oa.SelectListBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectListActivity;
+import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
-import com.xzjmyk.pm.activity.ui.erp.util.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 import com.xzjmyk.pm.activity.ui.erp.view.SingleDialog;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.DateFormatUtil;
+import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.view.wheel.DateTimePicker;
 
-import org.json.JSONException;
-import org.json.JSONObject;
-
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -64,17 +66,34 @@ public class VisitReportPlanActivity extends BaseActivity implements View.OnClic
     private int mVpId;
     private static final String TAG = "VisitReportPlanActivity";
 
-    private String mCustomerName,mContactName,mCustomerAddress;
+    private String mCustomerName, mContactName, mCustomerAddress;
 
 //    @ViewInject(R.id.tv_visit_login)
 //    private FormEditText tv_visit_login;
 
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (data==null) return;
+        if (requestCode == 0x22 && resultCode == 0x20) {
+            SelectListBean b = data.getParcelableExtra("data");
+            if (b == null || StringUtils.isEmpty(b.getObject())) return;
+            JsonValidator validator = new JsonValidator();
+            if (validator.validate(b.getObject())) {
+                JSONObject object = JSON.parseObject(b.getObject());
+                tv_customer_login.setText(object.containsKey("CU_NAME") ? object.getString("CU_NAME") : " ");
+                tv_linksman_login.setText(object.containsKey("CU_CONTACT") ? object.getString("CU_CONTACT") : " ");
+                tv_address_login.setText(object.containsKey("CU_ADD1") ? object.getString("CU_ADD1") : " ");
+            }
+        }
+
+    }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_visit_report_plan);
         Intent intent = getIntent();
-        if (intent != null){
+        if (intent != null) {
             mCustomerName = intent.getStringExtra("customer_name");
             mContactName = intent.getStringExtra("contact_name");
             mCustomerAddress = intent.getStringExtra("customer_address");
@@ -101,22 +120,22 @@ public class VisitReportPlanActivity extends BaseActivity implements View.OnClic
         tv_address_refresh.setOnClickListener(this);
         tv_customer_login.setOnClickListener(this);
 
-        if (!TextUtils.isEmpty(mCustomerName)){
+        if (!TextUtils.isEmpty(mCustomerName)) {
             tv_customer_login.setText(mCustomerName);
         }
-        if (!TextUtils.isEmpty(mContactName)){
+        if (!TextUtils.isEmpty(mContactName)) {
             tv_linksman_login.setText(mContactName);
         }
-        if (!TextUtils.isEmpty(mCustomerAddress)){
+        if (!TextUtils.isEmpty(mCustomerAddress)) {
             tv_address_login.setText(mCustomerAddress);
-        }else {
-           // tv_address_login.setText(MyApplication.getInstance().getBdLocationHelper().getAddress());
+        } else {
+            // tv_address_login.setText(MyApplication.getInstance().getBdLocationHelper().getAddress());
         }
     }
 
 
     private void initData() {
-        CommonUtil.getCommonId(this,"VISITPLAN_SEQ",mHandler,GET_VP_ID);
+        CommonUtil.getCommonId(this, "VISITPLAN_SEQ", mHandler, GET_VP_ID);
         getCodeByNet();
     }
 
@@ -154,7 +173,7 @@ public class VisitReportPlanActivity extends BaseActivity implements View.OnClic
                         public void run() {
                             endActivity();
                         }
-                    },3000);
+                    }, 3000);
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     progressDialog.dismiss();
@@ -183,14 +202,11 @@ public class VisitReportPlanActivity extends BaseActivity implements View.OnClic
                     break;
                 case GET_VP_ID:
                     String resultStr = msg.getData().getString("result");
-                    try {
-                        JSONObject resultJsonObject = new JSONObject(resultStr);
-                        if (resultJsonObject != null && resultJsonObject.getBoolean("success")){
-                            mVpId = resultJsonObject.getInt("id");
-                        }
-                    } catch (JSONException e) {
-                        e.printStackTrace();
+                    JSONObject resultJsonObject = JSON.parseObject(resultStr);
+                    if (resultJsonObject != null && resultJsonObject.getBoolean("success")) {
+                        mVpId = resultJsonObject.getInteger("id");
                     }
+
                     break;
             }
         }
@@ -249,7 +265,6 @@ public class VisitReportPlanActivity extends BaseActivity implements View.OnClic
             return;
         }
         progressDialog.show();
-
         String url = Constants.getAppBaseUrl(ct) + "mobile/crm/saveVisitPlan.action";
         Map<String, Object> params = new HashMap<>();
         params.put("formStore", formStore);
@@ -277,7 +292,7 @@ public class VisitReportPlanActivity extends BaseActivity implements View.OnClic
         picker.setOnDateTimePickListener(new DateTimePicker.OnYearMonthDayTimePickListener() {
             @Override
             public void onDateTimePicked(String year, String month, String day, String hour, String minute) {
-                Log.i(TAG, "onDateTimePicked:" + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":00" );
+                Log.i(TAG, "onDateTimePicked:" + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":00");
                 switch (tv.getId()) {
                     case R.id.tv_date_select:
                         tv_date_select.setText(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":00");
@@ -310,7 +325,11 @@ public class VisitReportPlanActivity extends BaseActivity implements View.OnClic
                 break;
             case R.id.tv_customer_login:
                 //弹框
-                loadCustomer(3);
+                Intent data = new Intent(ct, SelectListActivity.class);
+                data.putExtra("type", SelectListActivity.VISIT_REPORT_PLAN_CLIENT);
+                data.putExtra("title", "客户列表");
+                startActivityForResult(data, 0x22);
+//                loadCustomer(3);
                 break;
         }
     }

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

@@ -17,6 +17,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.DetailTaskActivity;
@@ -113,8 +114,9 @@ public class AddMeetTaskActivity extends BaseActivity {
         String url = CommonUtil.getSharedPreferences(this, "erp_baseurl") + "common/datalist/data.action";
         String emcode = CommonUtil.getSharedPreferences(ct, "erp_username");
         String caller = "ResourceAssignment";
-        //TODO 添加限制
-        String condition = "ra_resourcecode='" + emcode + "' and " + "taskorschedule='MTask' and " + "ra_taskname='" + meetName + "'";
+        String name = MyApplication.getInstance().mLoginUser.getNickName();
+        //添加限制   or ( =" + "'" + emcode + "')  recorder
+        String condition = "(ra_resourcecode='" + emcode + "'  or " + "recorder=" + "'" + name + "'" + ") and " + "(taskorschedule='MTask' and " + "ra_taskname='" + meetName + "') ";
         final Map<String, Object> param = new HashMap<>();
         param.put("caller", caller);
         param.put("emcode", emcode);
@@ -188,8 +190,8 @@ public class AddMeetTaskActivity extends BaseActivity {
             holder.name_tv.setText(object.containsKey("recorder") ? object.getString("recorder") : "");
             holder.theme_tv.setText(object.containsKey("description") ? object.getString("description") : "");
             holder.status_tv.setText(object.containsKey("ra_status") ? object.getString("ra_status") : "进行中");
-            holder.headler_tv.setText("执行人:" + (object.containsKey("recorder") ? object.getString("recorder") : "无"));
-            String name = object.containsKey("recorder") ? object.getString("recorder") : "";
+            holder.headler_tv.setText("执行人:" + (object.containsKey("resourcename") ? object.getString("resourcename") : "无"));
+            String name = object.containsKey("resourcename") ? object.getString("resourcename") : "";
             if (name != null && name.length() > 0) {
                 String str = name.substring(0, 1);
                 holder.head_img.setText(str == null ? "" : str);

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

@@ -197,11 +197,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
         return beans;
     }
 
-    @Override
-    public void preOnCreacte() {
-
-    }
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         if (getIntent() != null && getIntent().getIntExtra("type", 0) == 1)

+ 162 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectListActivity.java

@@ -2,7 +2,8 @@ package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.util.Log;
+import android.os.Handler;
+import android.os.Message;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -14,14 +15,24 @@ import android.widget.CheckBox;
 import android.widget.ListView;
 import android.widget.TextView;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.SelectListBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.Constants;
 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.view.EmptyLayout;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  *
@@ -30,12 +41,78 @@ public class SelectListActivity extends BaseActivity {
     private ListView recycler;
     private ListAdapter adapter;
     private List<SelectListBean> data = null;
-
+    private EmptyLayout emptyLayout;
     public static final int ADD_MEET_YAG_TYPE = 0x11;//添加会议--标签
+    public static final int ADD_TASK_PRIORITY = 0x12;//添加任务--紧急
+    public static final int VISIT_REPORT_PLAN_CLIENT = 0x13;//拜访计划客户列表
+    public static final int VISIT_JIE_DUAN = 0x14;//拜访计划客户列表
+    public static final int VISIT_NICHECODES = 0x15;//关联商机
 
     private boolean isSingle = true;//是否单选
     private int type = -1;
     private String title;
+    private Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (progressDialog.isShowing()) {
+                progressDialog.dismiss();
+            }
+            if (data == null) data = new ArrayList<>();
+            else data.clear();
+            String message = null;
+            JSONObject object = null;
+            JSONArray array = null;
+            SelectListBean b = null;
+            switch (msg.what) {
+                case VISIT_REPORT_PLAN_CLIENT:
+                    message = msg.getData().getString("result");
+                    if (!JSON.parseObject(message).containsKey("customers")) return;
+                    array = JSON.parseObject(message).getJSONArray("customers");
+                    for (int i = 0; i < array.size(); i++) {
+                        object = array.getJSONObject(i);
+                        b = new SelectListBean();
+                        b.setName(object.containsKey("CU_NAME") ? object.getString("CU_NAME") : "空");
+                        b.setObject(object.toString());
+                        data.add(b);
+                    }
+                    break;
+                case VISIT_JIE_DUAN:
+                    message = msg.getData().getString("result");
+                    if (JSON.parseObject(message) != null ||
+                            JSON.parseObject(message).containsKey("success") || JSON.parseObject(message).getBoolean("success")
+                            && JSON.parseObject(message).containsKey("stages")) {
+                        array = JSON.parseObject(message).getJSONArray("stages");
+                        for (int i = 0; i < array.size(); i++) {
+                            object = array.getJSONObject(i);
+                            b = new SelectListBean();
+                            b.setName(object.containsKey("BS_NAME") ? object.getString("BS_NAME") : "空");
+                            b.setObject(object.toString());
+                            data.add(b);
+                        }
+                    }
+
+                    break;
+                case VISIT_NICHECODES:
+                    message = msg.getData().getString("result");
+                    if (JSON.parseObject(message) != null ||
+                            JSON.parseObject(message).containsKey("success") || JSON.parseObject(message).getBoolean("success")
+                            && JSON.parseObject(message).containsKey("stages")) {
+                        array = JSON.parseObject(message).getJSONArray("businesschance");
+                        for (int i = 0; i < array.size(); i++) {
+                            object = array.getJSONObject(i);
+                            b = new SelectListBean();
+                            b.setName(object.containsKey("name") ? object.getString("name") : "空");
+                            b.setObject(object.toString());
+                            data.add(b);
+                        }
+                    }
+                    break;
+            }
+            if (data.size() > 0)
+                adapter.notifyDataSetChanged();
+            else emptyLayout.showEmpty();
+        }
+    };
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
@@ -58,7 +135,7 @@ public class SelectListActivity extends BaseActivity {
         initIntent();
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_select_list);
-        getSupportActionBar().setTitle( StringUtils.isEmpty(title)?"选择":title);
+        getSupportActionBar().setTitle(StringUtils.isEmpty(title) ? "选择" : title);
         init();
         initData();
         initEvent();
@@ -67,16 +144,11 @@ public class SelectListActivity extends BaseActivity {
     private void initIntent() {
         Intent intent = getIntent();
         if (intent == null) return;
-        int action = intent.getIntExtra("action", -1);
+        int action = intent.getIntExtra("type", -1);
         setActionTheme(action);
         isSingle = intent.getBooleanExtra("single", true);
         type = intent.getIntExtra("type", -1);
         title = intent.getStringExtra("title");
-//        if (StringUtils.isEmpty(title)) {
-//            Log.i("gongpengming", "空的 ");
-//            title = "选择";
-//        }
-//        getSupportActionBar().setTitle( title);
     }
 
     /*根据链过来的参数设置该界面actionbar的样式货颜色*/
@@ -84,18 +156,34 @@ public class SelectListActivity extends BaseActivity {
         if (action == -1) return;
         int theme = 0;
         switch (action) {
-            case 0x1:
+            case ADD_MEET_YAG_TYPE:
                 theme = getSharedPreferences("cons", MODE_PRIVATE).getInt("theme", R.style.OAThemeMeet);
                 break;
+            case ADD_TASK_PRIORITY:
+                break;
+            case VISIT_REPORT_PLAN_CLIENT:
+                theme = getSharedPreferences("cons", MODE_PRIVATE).getInt("theme", R.style.CrmThemeTask);
+                break;
+            case VISIT_JIE_DUAN:
+                theme = getSharedPreferences("cons", MODE_PRIVATE).getInt("theme", R.style.CrmThemeTask);
+                break;
+            case VISIT_NICHECODES:
+                theme = getSharedPreferences("cons", MODE_PRIVATE).getInt("theme", R.style.CrmThemeTask);
+                break;
             default:
                 theme = getSharedPreferences("cons", MODE_PRIVATE).getInt("theme", R.style.OAThemeSignin);
                 break;
         }
-        setTheme(theme);
+        if (theme != 0)
+            setTheme(theme);
     }
 
     private void init() {
         recycler = (ListView) findViewById(R.id.recycler);
+        emptyLayout = new EmptyLayout(ct, recycler);
+        emptyLayout.setShowLoadingButton(false);
+        emptyLayout.setShowEmptyButton(false);
+        emptyLayout.setShowErrorButton(false);
         adapter = new ListAdapter();
         recycler.setAdapter(adapter);
     }
@@ -106,11 +194,24 @@ public class SelectListActivity extends BaseActivity {
             case ADD_MEET_YAG_TYPE:
                 setMeetTagData();
                 break;
+            case ADD_TASK_PRIORITY:
+                setTaskTagData();
+                break;
+            case VISIT_REPORT_PLAN_CLIENT:
+                setVisitClientData();
+                break;
+            case VISIT_JIE_DUAN:
+                loadJieDuan();
+                break;
+            case VISIT_NICHECODES:
+                nichecodes();
+                break;
         }
         if (!ListUtils.isEmpty(data))
             adapter.notifyDataSetChanged();
     }
 
+
     private void initEvent() {
         recycler.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
@@ -118,7 +219,6 @@ public class SelectListActivity extends BaseActivity {
                 if (isSingle) {
                     Intent intent = new Intent();
                     intent.putExtra("data", data.get(i));
-                    Log.i("gongpengming", data.get(i).getName());
                     setResult(0x20, intent);
                     finish();
                 } else {
@@ -130,6 +230,54 @@ public class SelectListActivity extends BaseActivity {
     }
 
 
+    public void nichecodes() {
+        progressDialog.show();
+        String url = Constants.getAppBaseUrl(ct) + "mobile/crm/getnichecodes.action";
+        Map<String, Object> params = new HashMap<>();
+        params.put("cu_code", CommonUtil.getSharedPreferences(ct, "erp_username"));
+        params.put("page", 1);
+        params.put("pageSize", 100);
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, params, handler, headers, VISIT_NICHECODES, null, null, "post");
+    }
+
+    /**
+     * @desc:加载阶段
+     * @author:Arison on 2016/7/20
+     */
+    public void loadJieDuan() {
+        progressDialog.show();
+        String url = Constants.getAppBaseUrl(ct) + "/mobile/crm/getBusinessChanceStage.action";
+        Map<String, Object> params = new HashMap<>();
+        params.put("condition", "1=1");
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, params, handler, headers, VISIT_JIE_DUAN, null, null, "post");
+    }
+
+    /*获取拜访计划客户列表*/
+    private void setVisitClientData() {
+        progressDialog.show();
+        String url = Constants.getAppBaseUrl(ct) + "mobile/crm/getCustomerbySeller.action";
+        Map<String, Object> params = new HashMap<>();
+        params.put("sellercode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, params, handler, headers, VISIT_REPORT_PLAN_CLIENT, null, null, "post");
+    }
+
+    //获取会议标签数据
+    private void setTaskTagData() {
+        String[] str = new String[]{"特急", "紧急", "一般", "不紧急"};
+        SelectListBean b;
+        for (String e : str) {
+            b = new SelectListBean();
+            b.setName(e);
+            data.add(b);
+        }
+    }
+
     //获取会议标签数据
     private void setMeetTagData() {
         String[] cities = {"培训会议", "动员大会", "部门会议", "周例会", "月度总结会议", "管理层会议"};
@@ -172,10 +320,11 @@ public class SelectListActivity extends BaseActivity {
                 holer = new ViewHoler();
                 holer.select_scb = (CheckBox) view.findViewById(R.id.select_scb);
                 holer.name_tv = (TextView) view.findViewById(R.id.name_tv);
+                view.setTag(holer);
             } else {
                 holer = (ViewHoler) view.getTag();
             }
-            holer.name_tv.setText(data.get(i).getName());
+            holer.name_tv.setText(StringUtils.isEmpty(data.get(i).getName()) ? "" : data.get(i).getName());
             holer.select_scb.setChecked(data.get(i).isClick());
             holer.select_scb.setFocusable(false);
             holer.select_scb.setClickable(false);

+ 7 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/BaseFragment.java

@@ -7,11 +7,15 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.xzjmyk.pm.activity.ui.erp.view.CustomProgressDialog;
+
 /**
- * Created by PROD on 2016/8/19.
+ *
+ * Created by RaoMeng on 2016/8/19.
  */
 public abstract class BaseFragment extends Fragment {
     protected View root;
+    protected CustomProgressDialog progressDialog;
 
     public static <T extends BaseFragment> T newInstance(Class<T> tClass){
         if (tClass != null){
@@ -37,6 +41,8 @@ public abstract class BaseFragment extends Fragment {
     @Override
     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
+        progressDialog = CustomProgressDialog.createDialog(getActivity());
+
         initViews();
         initEvents();
         initDatas();

+ 1 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OaRegisterFragment.java

@@ -56,18 +56,6 @@ public class OaRegisterFragment extends Fragment {
         MeetSelectAdapter adapter = new MeetSelectAdapter(array);
         listView.setAdapter(adapter);
 
-//        ArrayList str = new ArrayList();
-//        try {
-//            for (int i = 0; i < array.length(); i++) {
-//                str.add(array.getJSONObject(i).getString("EM_NAME"));
-//            }
-//        } catch (JSONException e) {
-//            e.printStackTrace();
-//        }
-//
-//
-//        ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, str);
-//        listView.setAdapter(adapter);
     }
 
     class MeetSelectAdapter extends BaseAdapter {
@@ -114,7 +102,7 @@ public class OaRegisterFragment extends Fragment {
             String position = "";
             if (object.containsKey("EM_DEPART") && !StringUtils.isEmpty(object.getString("EM_DEPART")) &&
                     object.containsKey("EM_DEFAULTHSNAME") && !StringUtils.isEmpty(object.getString("EM_DEFAULTHSNAME"))) {
-                position = object.getString("EM_DEPART") + "|" + object.getString("EM_DEFAULTHSNAME");
+                position = object.getString("EM_DEPART") + " | " + object.getString("EM_DEFAULTHSNAME");
             } else {
                 position = ((object.containsKey("EM_DEPART") && !StringUtils.isEmpty(object.getString("EM_DEPART"))) ? object.getString("EM_DEPART") : "") +
                         ((object.containsKey("EM_DEPART") && !StringUtils.isEmpty(object.getString("EM_DEPART"))) ? object.getString("EM_DEPART") : "");

+ 3 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java

@@ -98,6 +98,9 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
                     if (object.containsKey("success") && object.getBoolean("success")) {
                         isAdmin = object.containsKey("isAdmin") ? ("1".equals(object.getString("isAdmin")) ? true : false) : false;
                     }
+                    if (!isAdmin){
+                        ct.getWindow().findViewById(R.id.title).setVisibility(View.GONE);
+                    }
                     break;
                 case 0x13:
                     object = JSON.parseObject(message);

+ 46 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java

@@ -10,6 +10,7 @@ import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.Html;
 import android.text.Spanned;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.ImageView;
@@ -21,6 +22,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baidu.mapapi.search.core.PoiInfo;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.BdLocationHelper;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.SigninBean;
@@ -34,6 +36,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.CodeUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.FlexJsonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.tool.ThreadUtil;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.CalendarUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
@@ -89,8 +92,10 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     private String code;//账号员工编号
     private boolean isToday = true;
     private boolean isSignining = false;
+    private boolean onActivityResult = false;//返回
     private long time = System.currentTimeMillis();
     private long signinTime = -1;
+    BdLocationHelper locationHelper = null;//
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -136,7 +141,6 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                     break;
                 case 0x13:
                     //签到成功
-                    isSignining = false;
                     if (JSON.parseObject(message).containsKey("success") && JSON.parseObject(message).getBoolean("success"))
                         signinOK();
                     else
@@ -167,7 +171,11 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     public void onAttach(Context ct) {
         super.onAttach(ct);
         this.ct = (BaseActivity) ct;
+    }
 
+    @Override
+    public void onStop() {
+        super.onStop();
     }
 
     @Override
@@ -179,6 +187,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (data == null) return;
         if (requestCode == 0x14 && resultCode == LocationMapActivity.REQUCODE) {
+            onActivityResult = true;
             PoiInfo poi = data.getParcelableExtra(LocationMapActivity.REQUESTNAME);
             if (poi == null) return;
             loaction = poi.name == null ? "" : poi.name;
@@ -232,6 +241,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
         back = (ImageView) view.findViewById(R.id.back);
         title = (TextView) view.findViewById(R.id.title);
         bar.setCustomView(view);
+        locationHelper = MyApplication.getInstance().getBdLocationHelper();//获取对象
         init();
         initView();
         listener();
@@ -275,12 +285,40 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     }
 
     private void init() {
+        ThreadUtil.getInstance().addTask(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    while (isRunable) {
+                        locationHelper.requestLocation();
+                        Thread.sleep(3000);
+                    }
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+        setBaiduLocation();
+        locationHelper.setListener(new BdLocationHelper.OnBaiduResultListener() {
+            @Override
+            public void result(boolean isOk) {
+                Log.i("gongpengming", "gongepngming");
+                setBaiduLocation();
+            }
+        });
+    }
+
+    private void setBaiduLocation() {
+        if (onActivityResult) return;
         longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
         latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
         loaction = MyApplication.getInstance().getBdLocationHelper().getName();
         addr = MyApplication.getInstance().getBdLocationHelper().getAddress();
+        unoffice_mm.setText(setDistance());
+        office_addr.setText(Html.fromHtml("<font color=\'#575757\'>当前位置  " + "</font><font color=\'#000000\'>" + loaction + "</font>"));
     }
 
+
     private void initView() {
         title.setText(TimeUtils.day_long_2_str(System.currentTimeMillis()) + "  " + TimeUtils.getWeek(System.currentTimeMillis()));
         listview.setLayoutManager(new LinearLayoutManager(ct));
@@ -310,6 +348,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
 
     private boolean isPlay() {
         if (isSignining) {
+            Crouton.makeText(ct, "请不要频繁打卡");
             return false;
         }
         if (companyDistance == -1) {
@@ -351,6 +390,12 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
 
     //签到成功
     private void signinOK() {
+        handler.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                isSignining = false;
+            }
+        }, 5000);
         ArrayList<Bean> beans = getDataByAdapter();
         String time = TimeUtils.long2str(signinTime == -1 ? System.currentTimeMillis() : selectTime, "HH:mm");
         for (int i = 0; i < beans.size(); i++) {

+ 29 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SubscriptionAllFragment.java

@@ -14,6 +14,7 @@ import com.xzjmyk.pm.activity.bean.message.AllSubscriptonKindMessage;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
+import com.xzjmyk.pm.activity.ui.erp.view.EmptyLayout;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
 import com.xzjmyk.pm.activity.view.crouton.Style;
 
@@ -29,12 +30,14 @@ import java.util.List;
 import java.util.Map;
 
 /**
+ * 所有订阅
  * Created by RaoMeng on 2016/9/5.
  */
 public class SubscriptionAllFragment extends BaseFragment {
     private PullToRefreshListView mPullToRefreshListView;
     private AllSubscriptionAdapter mAllSubscriptionAdapter;
     private List<AllSubscriptonKindMessage> mAllSubscriptonKindMessages;
+    private EmptyLayout mEmptyLayout;
     @Override
     protected int getLayout() {
         return R.layout.fragment_all_subscription;
@@ -46,12 +49,17 @@ public class SubscriptionAllFragment extends BaseFragment {
         mAllSubscriptonKindMessages = new ArrayList<>();
         mAllSubscriptionAdapter = new AllSubscriptionAdapter(getActivity(),mAllSubscriptonKindMessages);
 
+        mEmptyLayout = new EmptyLayout(getActivity(),mPullToRefreshListView.getRefreshableView());
+        mEmptyLayout.setShowLoadingButton(false);
+        mEmptyLayout.setShowEmptyButton(false);
+        mEmptyLayout.setShowErrorButton(false);
+        mEmptyLayout.setEmptyMessage("没有任何可订阅号");
     }
 
     @Override
     protected void initEvents() {
         mPullToRefreshListView.setAdapter(mAllSubscriptionAdapter);
-        mPullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
+        mPullToRefreshListView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
         mPullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
             @Override
             public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
@@ -82,6 +90,7 @@ public class SubscriptionAllFragment extends BaseFragment {
      * 获取全部订阅
      */
     private void sendAllSubscriptionRequest() {
+        progressDialog.show();
         String allSubsUrl = Constants.getAppBaseUrl(getActivity()) + "common/charts/getApplySubs.action";
         Map<String, Object> params = new HashMap<>();
         params.put("em_code", CommonUtil.getSharedPreferences(getActivity(),"erp_username"));
@@ -97,6 +106,7 @@ public class SubscriptionAllFragment extends BaseFragment {
         public void handleMessage(Message msg) {
             switch (msg.what){
                 case GET_ALL_SUBSCRIPTION:
+                    progressDialog.dismiss();
                     String resultJson = msg.getData().getString("result");
                     Log.d("allsubscriptionResult: ", resultJson);
                     try {
@@ -104,6 +114,14 @@ public class SubscriptionAllFragment extends BaseFragment {
                         JSONArray datasArray = resultObject.getJSONArray("datas");
                         JSONObject datasObject = datasArray.getJSONObject(0);
                         Iterator<String> iterator = datasObject.keys();
+                        if (!iterator.hasNext()){
+                            mEmptyLayout.showEmpty();
+                            if (mPullToRefreshListView.isRefreshing()){
+                                mPullToRefreshListView.onRefreshComplete();
+                                Crouton.makeText(getActivity(),"没有订阅数据", 0xff99cc00,1500).show();
+                            }
+                            return;
+                        }
                         while (iterator.hasNext()){
                             String key = iterator.next().toString();
                             Log.d("allsubskeys: ",key);
@@ -118,28 +136,30 @@ public class SubscriptionAllFragment extends BaseFragment {
                                 subscriptionNumber.setId(subsObject.getInt("id"));
                                 subscriptionNumber.setTitle(subsObject.getString("title"));
                                 subscriptionNumber.setKind(subsObject.getString("kind"));
-                                subscriptionNumbers.add(subscriptionNumber);
+                                subscriptionNumber.setStatus(subsObject.getInt("status"));
+                                if (subsObject.getInt("status") != 1){
+                                    subscriptionNumbers.add(subscriptionNumber);
+                                }
                             }
                             subscriptonKindMessage.setSubscriptionNumbers(subscriptionNumbers);
                             mAllSubscriptonKindMessages.add(subscriptonKindMessage);
                             mAllSubscriptionAdapter.notifyDataSetChanged();
-                            if (mPullToRefreshListView.isRefreshing()){
-                                mPullToRefreshListView.onRefreshComplete();
-                                Crouton.makeText(getActivity(),"刷新成功", 0xff99cc00,1500).show();
-                            }
+
                         }
                     } catch (JSONException e) {
                         e.printStackTrace();
                     }
+                    if (mPullToRefreshListView.isRefreshing()){
+                        mPullToRefreshListView.onRefreshComplete();
+                        Crouton.makeText(getActivity(),"刷新成功", 0xff99cc00,1500).show();
+                    }
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
+                    progressDialog.dismiss();
                     Crouton.makeText(getActivity(),msg.getData().getString("result"), Style.ALERT).show();
                     break;
             }
         }
     };
 
-    public interface OnRefreshAllSubsListener{
-        public void onRefreshAllSubs();
-    }
 }

+ 42 - 16
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SubscriptionMyFragment.java

@@ -22,9 +22,9 @@ import com.xzjmyk.pm.activity.bean.PersonalSubscriptionBean;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
+import com.xzjmyk.pm.activity.ui.erp.view.EmptyLayout;
 import com.xzjmyk.pm.activity.util.DisplayUtil;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
-import com.xzjmyk.pm.activity.view.crouton.Style;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -37,7 +37,8 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * Created by PROD on 2016/9/5.
+ * 我的订阅
+ * Created by RaoMeng on 2016/9/5.
  */
 public class SubscriptionMyFragment extends BaseFragment {
     private PullToRefreshScrollView mPullToRefreshScrollView;
@@ -53,6 +54,7 @@ public class SubscriptionMyFragment extends BaseFragment {
     private final static int REMOVE_MY_SUBSCRIPTION = 13;
 
     private int mCanclePosition;
+    private EmptyLayout mEmptyLayout;
     @Override
     protected int getLayout() {
         return R.layout.fragment_my_subscription;
@@ -66,6 +68,12 @@ public class SubscriptionMyFragment extends BaseFragment {
         mMySubscriptionAdapter = new MySubscriptionAdapter(getActivity(),mPersonalSubscriptionBeans);
         mMySwipeMenuCreator = new MySwipeMenuCreator(getActivity());
 
+
+        mEmptyLayout = new EmptyLayout(getActivity(),mSwipeMenuListView);
+        mEmptyLayout.setShowLoadingButton(false);
+        mEmptyLayout.setShowEmptyButton(false);
+        mEmptyLayout.setShowErrorButton(false);
+        mEmptyLayout.setEmptyMessage("您没有任何订阅号");
     }
 
     @Override
@@ -128,7 +136,7 @@ public class SubscriptionMyFragment extends BaseFragment {
             }
         });
 
-        mPullToRefreshScrollView.setMode(PullToRefreshBase.Mode.BOTH);
+        mPullToRefreshScrollView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
         mPullToRefreshScrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
             @Override
             public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
@@ -153,6 +161,7 @@ public class SubscriptionMyFragment extends BaseFragment {
      * 获取当前用户的订阅号
      */
     private void sendSubscriptionRequest() {
+        progressDialog.show();
         String subsUrl = Constants.getAppBaseUrl(getActivity()) + "common/charts/getPersonalSubs.action";
         Map<String, Object> params = new HashMap<>();
         params.put("em_code", CommonUtil.getSharedPreferences(getActivity(),"erp_username"));
@@ -166,6 +175,7 @@ public class SubscriptionMyFragment extends BaseFragment {
      * 取消订阅
      */
     private void sendRemoveRequest(int position) {
+        progressDialog.show();
         String subsUrl = Constants.getAppBaseUrl(getActivity()) + "common/charts/removeSubsMans.action";
         Map<String, Object> params = new HashMap<>();
         params.put("em_code", CommonUtil.getSharedPreferences(getActivity(),"erp_username"));
@@ -183,26 +193,40 @@ public class SubscriptionMyFragment extends BaseFragment {
         public void handleMessage(Message msg) {
             switch (msg.what){
                 case GET_MY_SUBSCRIPTION:
+                    progressDialog.dismiss();
                     String resultJson = msg.getData().getString("result");
                     Log.d("subscriptionResult",resultJson);
                     try {
                         JSONObject resultObject = new JSONObject(resultJson);
                         JSONArray resultArray = resultObject.getJSONArray("datas");
-                        for (int i = 0; i < resultArray.length(); i++) {
-                            JSONObject currentObject = resultArray.getJSONObject(i);
-                            PersonalSubscriptionBean personalSubscriptionBean = new PersonalSubscriptionBean();
-                            personalSubscriptionBean.setNUM_ID(currentObject.getInt("NUM_ID"));
-                            personalSubscriptionBean.setTITLE(currentObject.getString("TITLE_"));
-                            personalSubscriptionBean.setKIND(currentObject.getString("KIND_"));
-                            personalSubscriptionBean.setTYPE(currentObject.getString("TYPE_"));
-                            personalSubscriptionBean.setISAPPLED(currentObject.getInt("ISAPPLIED_"));
-
-                            mPersonalSubscriptionBeans.add(personalSubscriptionBean);
+                        if (resultArray != null){
+                            if (resultArray.length() == 0){
+                                mEmptyLayout.showEmpty();
+                                if (mPullToRefreshScrollView.isRefreshing()){
+                                    mPullToRefreshScrollView.onRefreshComplete();
+                                    Crouton.makeText(getActivity(),"您没有任何订阅号", 0xff99cc00, 1500).show();
+                                }
+                            }else {
+                                for (int i = 0; i < resultArray.length(); i++) {
+                                    JSONObject currentObject = resultArray.getJSONObject(i);
+                                    PersonalSubscriptionBean personalSubscriptionBean = new PersonalSubscriptionBean();
+                                    personalSubscriptionBean.setNUM_ID(currentObject.getInt("NUM_ID"));
+                                    personalSubscriptionBean.setTITLE(currentObject.getString("TITLE_"));
+                                    personalSubscriptionBean.setKIND(currentObject.getString("KIND_"));
+                                    personalSubscriptionBean.setTYPE(currentObject.getString("TYPE_"));
+                                    personalSubscriptionBean.setISAPPLED(currentObject.getInt("ISAPPLIED_"));
+
+                                    mPersonalSubscriptionBeans.add(personalSubscriptionBean);
+                                }
+                                mMySubscriptionAdapter.notifyDataSetChanged();
+                                if (mPullToRefreshScrollView.isRefreshing()){
+                                    mPullToRefreshScrollView.onRefreshComplete();
+                                    Crouton.makeText(getActivity(),"刷新成功", 0xff99cc00, 1500).show();
+                                }
+                            }
                         }
-                        mMySubscriptionAdapter.notifyDataSetChanged();
                         if (mPullToRefreshScrollView.isRefreshing()){
                             mPullToRefreshScrollView.onRefreshComplete();
-                            Crouton.makeText(getActivity(),"刷新成功", Style.CONFIRM).show();
                         }
                     } catch (JSONException e) {
                         e.printStackTrace();
@@ -211,13 +235,15 @@ public class SubscriptionMyFragment extends BaseFragment {
                     break;
 
                 case REMOVE_MY_SUBSCRIPTION:
+                    progressDialog.dismiss();
                     Crouton.makeText(getActivity(), "取消订阅成功", 0xff99cc00, 1500).show();
                     mPersonalSubscriptionBeans.remove(mCanclePosition);
                     mMySubscriptionAdapter.notifyDataSetChanged();
                     break;
 
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
-                    Crouton.makeText(getActivity(), msg.getData().getString("result"), Style.CONFIRM).show();
+                    progressDialog.dismiss();
+                    Crouton.makeText(getActivity(), msg.getData().getString("result"), 0xff99cc00, 1500).show();
                     if (mPullToRefreshScrollView.isRefreshing()){
                         mPullToRefreshScrollView.onRefreshComplete();
                     }

+ 79 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java

@@ -19,6 +19,7 @@ import android.graphics.Matrix;
 import android.graphics.Typeface;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
+import android.net.Uri;
 import android.os.Build;
 import android.os.Handler;
 import android.text.Spannable;
@@ -26,6 +27,7 @@ import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
 import android.text.style.ForegroundColorSpan;
 import android.text.style.StyleSpan;
+import android.text.style.UnderlineSpan;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.Patterns;
@@ -53,6 +55,7 @@ import com.xzjmyk.pm.activity.util.DateFormatUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.xmpp.listener.ChatMessageListener;
 
+import java.io.File;
 import java.io.UnsupportedEncodingException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -699,6 +702,33 @@ public class CommonUtil {
     }
 
 
+    /**
+     * @desc:修改textView样式(添加下划线)
+     * @author:Arison on 2016/8/3
+     */
+    public static void textUnderlineForStyle(
+            TextView view,
+            String input,
+            String match) {
+        SpannableStringBuilder style = new SpannableStringBuilder(input);
+        Pattern highlight = Pattern.compile(match);
+        Matcher m = highlight.matcher(style.toString());
+        while (m.find()) {
+//            style.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), m.start(), m.end(),
+//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+//            style.setSpan(new ForegroundColorSpan(color), m.start(), m.end(),
+//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+//            style.setSpan(new StrikethroughSpan(), m.start(), m.end(),
+//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+            style.setSpan(new UnderlineSpan(), m.start(), m.end(),
+                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+        }
+        view.setText(style);
+    }
+
+
+
+
     private static long mLastClickTime;
     private static final long SPACE_TIME = 1000;//重复点击间隔时间
 
@@ -824,4 +854,53 @@ public class CommonUtil {
         toast.setView(toastLayout);
         toast.show();
     }
+
+
+    /**
+     * 打开一个文件
+     * @param file
+     * @return
+     */
+    public static Intent getFileIntent(File file) {
+        Uri uri = Uri.fromFile(file);
+        String type = getMIMEType(file);
+        Intent intent = new Intent("android.intent.action.VIEW");
+        intent.addCategory("android.intent.category.DEFAULT");
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.setDataAndType(uri, type);
+        return intent;
+    }
+
+    /**
+     * 判断文件类型
+     * @param f
+     * @return
+     */
+    public static String getMIMEType(File f){
+        String type = "";
+        String fName = f.getName();
+      /* 取得扩展名 */
+        String end = fName.substring(fName.lastIndexOf(".") + 1, fName.length()).toLowerCase();
+
+      /* 依扩展名的类型决定MimeType */
+        if (end.equals("pdf")) {
+            type = "application/pdf";//
+        } else if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") ||
+                end.equals("xmf") || end.equals("ogg") || end.equals("wav")) {
+            type = "audio/*";
+        } else if (end.equals("3gp") || end.equals("mp4")) {
+            type = "video/*";
+        } else if (end.equals("jpg") || end.equals("gif") || end.equals("png") ||
+                end.equals("jpeg") || end.equals("bmp")) {
+            type = "image/*";
+        } else if (end.equals("apk")) {
+            type = "application/vnd.android.package-archive";
+        } else {
+//	              /*如果无法直接打开,就跳出软件列表给用户选择 */
+            type = "*/*";
+        }
+        return type;
+    }
+
+
 }

+ 0 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/CalendarPopup.java

@@ -12,12 +12,9 @@ import com.xzjmyk.pm.activity.R;
  * Created by gongpengming on 2016/9/5.
  */
 public class CalendarPopup extends LinearLayout {
-
-
     public CalendarPopup(Context context) {
         this(context, null);
     }
-
     public CalendarPopup(Context context, AttributeSet attrs) {
         super(context, attrs);
         LayoutInflater.from(context).inflate(R.layout.calender_popup, this, false);

+ 24 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/ThreadUtil.java

@@ -0,0 +1,24 @@
+package com.xzjmyk.pm.activity.ui.tool;
+
+/**
+ * 线程抽象类,所有线程在这里进行,防止修改时候改动代码过多 复杂
+ * Created by pengminggong on 2016/9/23.
+ */
+public class ThreadUtil {
+    private static ThreadUtil instance = null;
+
+    public static ThreadUtil getInstance() {
+        if (instance == null) {
+            synchronized (ThreadUtil.class) {
+                instance = new ThreadUtil();
+            }
+        }
+        return instance;
+    }
+
+    //普通线程
+    public void addTask(Runnable runnable) {
+        ThreadPool.getThreadPool().addTask(runnable);//暂时的线程开启方式
+    }
+
+}

+ 102 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/DownloadUtil.java

@@ -0,0 +1,102 @@
+package com.xzjmyk.pm.activity.util;
+
+import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
+import android.app.Activity;
+import android.app.DownloadManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Environment;
+
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+
+import java.io.File;
+import java.net.URLDecoder;
+
+/**
+ * 下载类
+ *
+ * @author RaoMeng
+ */
+@TargetApi(Build.VERSION_CODES.GINGERBREAD)
+@SuppressLint("DefaultLocale")
+public class DownloadUtil {
+    static String FilePath;
+    static BroadcastReceiver receiver;
+
+    /**
+     * @param context 上下文场景
+     * @param url     下载文件的地址
+     * @param path    SD卡保存的路径 如:"/MyDownload",自动在SD下创建该目录。
+     */
+    public static void DownloadFile(Context context, String url, String path) {
+ 
+         /*
+         * 注册广播监听下载完成
+         */
+        receiver = new DownloadCompleteReceiver();
+        context.registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
+        /**
+         * 先检测SD卡是否存在
+         */
+        if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+            return;
+        }
+         /*
+         * 创建文件夹
+         */
+        String file = Environment.getExternalStorageDirectory().getPath() + path;
+        File files = new File(file);
+        if (files == null || !files.exists()) {
+            files.mkdir();
+        }
+         /*
+         * 截取文件名
+         */
+        String fileName = url.substring(url.lastIndexOf("/") + 1);
+        fileName = URLDecoder.decode(fileName);
+         /*
+         *系统下载服务类
+         */
+        DownloadManager downManager = (DownloadManager) context.getSystemService(Activity.DOWNLOAD_SERVICE);
+        DownloadManager.Request down = new DownloadManager.Request(Uri.parse(url));
+        down.setShowRunningNotification(true);
+        //在通知栏显示
+        down.setVisibleInDownloadsUi(true);
+        //输出目录
+        down.setDestinationInExternalPublicDir(path + "/", fileName);
+        //文件路径
+        FilePath = file + "/" + fileName;
+        //加入下载队列执行
+        downManager.enqueue(down);
+    }
+
+    public static void unregisterReceiver(Context context) {
+        context.unregisterReceiver(receiver);
+    }
+
+    ;
+
+    /**
+     * 监听下载完成
+     *
+     * @author Administrator
+     */
+    public static class DownloadCompleteReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (intent.getAction().equals(
+                    DownloadManager.ACTION_DOWNLOAD_COMPLETE)) {
+                //获取文件路径
+                File files = new File(FilePath);
+                //打开这个文件
+                Intent openFile = CommonUtil.getFileIntent(files);
+                context.startActivity(openFile);
+            }
+        }
+    }
+}

+ 4 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CalendarView.java

@@ -64,7 +64,7 @@ public class CalendarView extends View implements View.OnTouchListener {
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         surface.width = getResources().getDisplayMetrics().widthPixels;
-        surface.height = (getResources().getDisplayMetrics().heightPixels * 1 / 4);
+        surface.height = (getResources().getDisplayMetrics().heightPixels * 1 / 3);
         widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(surface.width, View.MeasureSpec.EXACTLY);
         heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(surface.height, View.MeasureSpec.EXACTLY);
         setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
@@ -407,6 +407,9 @@ public class CalendarView extends View implements View.OnTouchListener {
             monthHeight = 0;//(float) ((temp + temp * 0.3f) * 0.6);
             weekHeight = (float) ((temp + temp * 0.3f) * 0.7);
             cellHeight = (height - monthHeight - weekHeight) / 5f;
+            weekHeight = cellHeight = (height - 10) / 6f;
+            weekHeight += 10;
+//            weekHeight = (float) (cellHeight * 1.2);
             cellWidth = width / 7f;
             borderPaint = new Paint();
             borderPaint.setColor(borderColor);

+ 17 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/DialogUtil.java

@@ -0,0 +1,17 @@
+package com.xzjmyk.pm.activity.view;
+
+/**
+ * Created by pengminggong on 2016/9/22.
+ */
+public class DialogUtil {
+    private static DialogUtil instance = null;
+
+    public static DialogUtil getInstance() {
+        if (instance == null) {
+            synchronized (DialogUtil.class) {
+                instance = new DialogUtil();
+            }
+        }
+        return instance;
+    }
+}

BIN
WeiChat/src/main/res/drawable-hdpi/ic_downloading_progress.png


+ 2 - 2
WeiChat/src/main/res/layout/activity_capture_result.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent">
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
 
     <WebView
         android:id="@+id/result_webview"

+ 27 - 21
WeiChat/src/main/res/layout/activity_client.xml

@@ -131,7 +131,7 @@
                     android:text="筛选" />
             </RelativeLayout>
 
-            <View style="@style/app_line_gray_1dp"></View>
+            <!--<View style="@style/app_line_gray_1dp"></View>-->
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -243,7 +243,7 @@
                        android:id="@+id/ib_sale_condition" />-->
             </RelativeLayout>
 
-            <View style="@style/app_line_gray_1dp"></View>
+            <!--<View style="@style/app_line_gray_1dp"></View>-->
 
             <LinearLayout
                 style="@style/crm_ll_sale"
@@ -457,7 +457,7 @@
                      android:id="@+id/ib_em_condition" />-->
             </RelativeLayout>
 
-            <View style="@style/app_line_gray_1dp"></View>
+            <!--<View style="@style/app_line_gray_1dp"></View>-->
 
             <LinearLayout
                 style="@style/LinearLayout_horizontal"
@@ -465,22 +465,21 @@
                 android:padding="10dp">
 
                 <TextView
-                    android:layout_width="wrap_content"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
-                    android:layout_weight="2"
-                    android:text="              " />
+                    android:layout_weight="1.5" />
 
                 <TextView
-                    android:layout_width="wrap_content"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
-                    android:layout_weight="1"
+                    android:layout_weight="2"
                     android:gravity="center"
                     android:text="计划销售额/毛利润\n(万元)" />
 
                 <TextView
-                    android:layout_width="wrap_content"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
-                    android:layout_weight="1"
+                    android:layout_weight="2"
                     android:gravity="center"
                     android:text="实际销售额/毛利润\n(万元)" />
             </LinearLayout>
@@ -492,21 +491,23 @@
 
                 <TextView
                     android:id="@+id/tv_em_a"
-                    android:layout_width="wrap_content"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_margin="5dp"
-                    android:layout_weight="1"
+                    android:layout_weight="1.5"
                     android:text="沈佳" />
 
                 <TextView
                     android:id="@+id/tv_em_plana"
                     style="@style/TextView_VerticalCenter"
+                    android:layout_width="0dp"
                     android:layout_weight="2"
                     android:text=" 万元" />
 
                 <TextView
                     android:id="@+id/tv_em_salea"
                     style="@style/TextView_VerticalCenter"
+                    android:layout_width="0dp"
                     android:layout_weight="2"
                     android:text=" 万元" />
 
@@ -520,21 +521,23 @@
 
                 <TextView
                     android:id="@+id/tv_em_b"
-                    android:layout_width="wrap_content"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_margin="5dp"
-                    android:layout_weight="1"
+                    android:layout_weight="1.5"
                     android:text="沈佳" />
 
                 <TextView
                     android:id="@+id/tv_em_planb"
                     style="@style/TextView_VerticalCenter"
+                    android:layout_width="0dp"
                     android:layout_weight="2"
                     android:text=" 万元" />
 
                 <TextView
                     android:id="@+id/tv_em_saleb"
                     style="@style/TextView_VerticalCenter"
+                    android:layout_width="0dp"
                     android:layout_weight="2"
                     android:text=" 万元" />
 
@@ -548,21 +551,23 @@
 
                 <TextView
                     android:id="@+id/tv_em_c"
-                    android:layout_width="wrap_content"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_margin="5dp"
-                    android:layout_weight="1"
+                    android:layout_weight="1.5"
                     android:text="沈佳" />
 
                 <TextView
                     android:id="@+id/tv_em_planc"
                     style="@style/TextView_VerticalCenter"
+                    android:layout_width="0dp"
                     android:layout_weight="2"
                     android:text=" 万元" />
 
                 <TextView
                     android:id="@+id/tv_em_salec"
                     style="@style/TextView_VerticalCenter"
+                    android:layout_width="0dp"
                     android:layout_weight="2"
                     android:text=" 万元" />
 
@@ -583,9 +588,11 @@
                     android:visibility="gone" />
 
                 <TextView
+                    android:id="@+id/subs_tv"
                     style="@style/TextView_VerticalCenter"
                     android:layout_height="match_parent"
                     android:layout_weight="1"
+                    android:drawableRight="@drawable/oa_next"
                     android:gravity="center"
                     android:text="暂时没有数据" />
 
@@ -787,7 +794,7 @@
                     android:text="筛选" />
             </RelativeLayout>
 
-            <View style="@style/app_line_gray_1dp"></View>
+            <!--<View style="@style/app_line_gray_1dp"></View>-->
 
             <LinearLayout
                 style="@style/LinearLayout_horizontal"
@@ -866,7 +873,6 @@
                     android:src="@drawable/ic_forget_customer" />
 
                 <TextView
-
                     android:id="@+id/tv_cu_count"
                     style="@style/crm_tv_card_topLeftTitle"
                     android:text="@string/crm_customer_forget_num"
@@ -879,7 +885,7 @@
                     android:textColor="@color/gray_light" />
             </RelativeLayout>
 
-            <View style="@style/app_line_gray_1dp"></View>
+            <!--<View style="@style/app_line_gray_1dp"></View>-->
 
             <LinearLayout
                 android:id="@+id/ll_customer_lost"
@@ -888,7 +894,7 @@
                 <TextView
                     android:id="@+id/tv_customer_name"
                     style="@style/TextView_Basic"
-                    android:layout_margin="20dp"
+                    android:layout_marginLeft="10dp"
                     android:text="深圳优软科技有限公司" />
 
                 <LinearLayout
@@ -898,7 +904,7 @@
                     <LinearLayout
                         style="@style/LinearLayout_vertical"
                         android:layout_marginBottom="20dp"
-                        android:layout_marginLeft="20dp"
+                        android:layout_marginLeft="10dp"
                         android:layout_marginRight="0dp"
                         android:layout_weight="1">
 

+ 2 - 2
WeiChat/src/main/res/layout/activity_customter_add.xml

@@ -491,8 +491,8 @@
                 android:hint="请输入"
                 android:text=" "
                 whatever:testType="regexp"
-                whatever:customRegexp="^[\u4e00-\u9fa5_a-zA-Z0-9_\s]{0,50}$"
-                whatever:testErrorString="限定字符长度不大于50" />
+                whatever:customRegexp="^[\u4e00-\u9fa5_a-zA-Z0-9_\s]{0,200}$"
+                whatever:testErrorString="限定字符长度不大于200" />
         </RelativeLayout>
         
         <LinearLayout

+ 62 - 0
WeiChat/src/main/res/layout/activity_subs.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/ll_subordinate"
+    style="@style/crm_ll_card"
+    android:layout_height="wrap_content"
+    android:layout_marginLeft="0dp"
+    android:layout_marginRight="0dp"
+    android:layout_marginTop="10dp"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:id="@+id/top"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <ImageView
+            android:layout_width="240dp"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:layout_gravity="center"
+            android:src="@drawable/ic_my_branch" />
+
+        <View style="@style/app_line_gray_1dp" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:padding="10dp">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="2" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="计划销售额/毛利润\n(万元)" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="实际销售额/毛利润\n(万元)" />
+        </LinearLayout>
+    </LinearLayout>
+
+    <View style="@style/app_line_gray_1dp" />
+
+    <ListView
+        android:id="@+id/list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:divider="@color/item_line"
+        android:dividerHeight="1px" />
+
+</LinearLayout>

+ 2 - 1
WeiChat/src/main/res/layout/item_activity_meettask.xml

@@ -53,7 +53,8 @@
         android:drawableLeft="@drawable/icon_meeting"
         android:drawablePadding="10dp"
         android:ellipsize="end"
-        android:lines="2"
+        android:maxLines="2"
+        android:text="aaaa"
         android:textColor="@color/text_main"
         android:textSize="@dimen/text_main" />
 

+ 73 - 0
WeiChat/src/main/res/layout/item_subs.xml

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:padding="8dp">
+
+    <LinearLayout
+        android:id="@+id/subs"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:orientation="horizontal"
+        android:paddingBottom="8dp"
+        android:paddingTop="8dp"
+        android:visibility="gone">
+
+        <TextView
+            android:id="@+id/name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="沈佳" />
+
+        <TextView
+            android:id="@+id/plan"
+            style="@style/TextView_VerticalCenter"
+            android:layout_weight="2"
+            android:text=" 万元" />
+
+        <TextView
+            android:id="@+id/salea"
+            style="@style/TextView_VerticalCenter"
+            android:layout_weight="2"
+            android:text=" 万元" />
+    </LinearLayout>
+
+    <RelativeLayout
+        android:id="@+id/custs"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:visibility="gone">
+
+        <TextView
+            android:id="@+id/name_tv"
+            style="@style/TextView_Basic"
+            android:layout_marginLeft="10dp"
+            android:text="深圳优软科技有限公司" />
+
+        <TextView
+            android:id="@+id/tag"
+            style="@style/TextView_Basic"
+            android:layout_alignLeft="@id/name_tv"
+            android:layout_below="@id/name_tv"
+            android:layout_marginTop="5dp"
+            android:text="最后跟进时间  " />
+
+        <TextView
+            android:id="@+id/time"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignTop="@+id/tag"
+            android:layout_toRightOf="@+id/tag"
+            android:text="最后跟进时间" />
+
+        <TextView
+            android:id="@+id/day"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_alignTop="@+id/tag"
+            android:text="距离上次跟进188天" />
+    </RelativeLayout>
+</FrameLayout>

+ 1 - 1
WeiChat/src/main/res/layout/layout_all_subscription_number_list.xml

@@ -21,7 +21,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_toRightOf="@id/all_subscription_list_name_tv"
-        android:text="添加"
+        android:text="申请"
         android:layout_centerVertical="true"
         android:layout_marginLeft="12dp"/>
 </RelativeLayout>

+ 9 - 7
WeiChat/src/main/res/layout/layout_my_subscribe_list.xml

@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="80dp"
+    android:layout_height="70dp"
     android:padding="10dp"
     android:gravity="center_vertical">
 
     <ImageView
         android:id="@+id/my_subscribe_iv"
-        android:layout_width="60dp"
-        android:layout_height="60dp"
+        android:layout_width="50dp"
+        android:layout_height="50dp"
         android:scaleType="fitXY"
         />
 
@@ -18,7 +18,8 @@
         android:layout_height="wrap_content"
         android:layout_toRightOf="@id/my_subscribe_iv"
         android:layout_marginLeft="10dp"
-        android:textSize="18sp"/>
+        android:textSize="16sp"
+        android:text="xxxxxxx"/>
 
     <TextView
         android:id="@+id/my_subscribe_content_tv"
@@ -28,12 +29,13 @@
         android:layout_alignParentBottom="true"
         android:layout_marginLeft="10dp"
         android:layout_marginBottom="5dp"
-        android:textSize="14sp"/>
+        android:textSize="14sp"
+        android:text="yyyyyy"/>
 
     <ImageView
         android:id="@+id/my_subscribe_lock_iv"
-        android:layout_width="25dp"
-        android:layout_height="25dp"
+        android:layout_width="18dp"
+        android:layout_height="18dp"
         android:layout_alignParentRight="true"
         android:src="@drawable/ic_lock"
         android:layout_marginRight="10dp"

+ 1 - 1
WeiChat/src/main/res/menu/menu_manage_subscribe.xml

@@ -5,7 +5,7 @@
 
     <item
         android:id="@+id/subscribe_manage"
-        android:title="管理"
+        android:title="订阅管理"
         app:showAsAction="ifRoom" />
 
 </menu>

+ 7 - 1
WeiChat/src/main/res/values/styles.xml

@@ -9,6 +9,10 @@
         <item name="android:background">@color/antionbarcolor</item>
     </style>
 
+    <style name="style_actionbar_title_style">
+        <item name="android:textSize">20sp</item>
+    </style>
+
     <style name="style_bg_bar_bule">
         <item name="android:background">@color/titleBlue</item>
     </style>
@@ -18,6 +22,7 @@
     <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
         <item name="android:buttonStyle">@android:style/Widget.Button</item>
         <item name="android:windowAnimationStyle">@style/IMAnimationStyle</item>
+        <item name="android:actionMenuTextAppearance">@style/style_actionbar_title_style</item>
         <item name="actionBarStyle">@style/style_bg_bar</item>
         <item name="android:listViewStyle">@style/IMListView</item>
         <item name="actionBarItemBackground">@drawable/actionbar_menu_selector</item>
@@ -750,7 +755,8 @@
     <style name="TextView_VerticalCenter">
         <item name="android:layout_width">wrap_content</item>
         <item name="android:layout_height">wrap_content</item>
-        <item name="android:layout_gravity">top</item>
+        <item name="android:layout_gravity">center_vertical</item>
+        <item name="android:gravity">center</item>
     </style>
 
     <style name="TextView_Basic">

+ 1 - 1
library-swipemenu_lv/src/main/java/com/baoyz/swipemenulistview/MySwipeMenuListView.java

@@ -8,7 +8,7 @@ import android.view.MotionEvent;
 import android.view.View;
 
 /**
- * Created by PROD on 2016/9/7.
+ * Created by RaoMeng on 2016/9/7.
  */
 public class MySwipeMenuListView extends SwipeMenuListView {
     private GestureDetector mGestureDetector;