Browse Source

Merge branch 'draft' of https://gitlab.com/Arisono/SkWeiChat-Baidu into developer

FANGLH 9 years ago
parent
commit
7a73e2cff7
41 changed files with 1212 additions and 575 deletions
  1. 1 1
      WeiChat/build.gradle
  2. 7 5
      WeiChat/src/main/AndroidManifest.xml
  3. 1 1
      WeiChat/src/main/java/com/ipaulpro/afilechooser/FileChooserActivity.java
  4. 2 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/CustomCrashActivity.java
  5. 10 15
      WeiChat/src/main/java/com/xzjmyk/pm/activity/MyApplication.java
  6. 3 23
      WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/FriendSortAdapter.java
  7. 64 42
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OABean.java
  8. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SigninBean.java
  9. 16 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/SigninDao.java
  10. 9 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/SubscriptionDao.java
  11. 13 24
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/BaseInfoActivity.java
  12. 162 19
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CompanyContactsActivity.java
  13. 3 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/MyFriendActivity.java
  14. 6 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/NoticeMenuActivity.java
  15. 6 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SubscribeDetailActivity.java
  16. 38 35
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/TaskActivity.java
  17. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/ClientActivity.java
  18. 19 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportAddActivity.java
  19. 265 159
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/ProcessMsgActivity.java
  20. 2 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddDailyActivity.java
  21. 0 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AlarmaActivity.java
  22. 12 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ChangeMobileActivity.java
  23. 84 34
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java
  24. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SubscriptionAllFragment.java
  25. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/HttpClient.java
  26. 59 22
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java
  27. 25 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java
  28. 153 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmManage.java
  29. 59 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmReceiver.java
  30. 3 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  31. 8 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  32. 79 119
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/SubscriptionActivity.java
  33. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/ImageUtil.java
  34. 0 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/MacAndIDUtil.java
  35. 1 1
      WeiChat/src/main/res/layout/activity_add_work_daily.xml
  36. 4 0
      WeiChat/src/main/res/layout/activity_client.xml
  37. 3 2
      WeiChat/src/main/res/layout/activity_oa_alarma.xml
  38. 1 1
      WeiChat/src/main/res/layout/contact_item.xml
  39. 81 0
      WeiChat/src/main/res/layout/item_pop_employee.xml
  40. 2 2
      WeiChat/src/main/res/layout/message_header.xml
  41. 1 1
      pullToRefershLibraryMy/src/main/java/com/handmark/pulltorefresh/library/PullToRefreshBase.java

+ 1 - 1
WeiChat/build.gradle

@@ -13,7 +13,7 @@ android {
     }
     signingConfigs {
         config {
-            storeFile file('C:/Users/FANGlh/Desktop/UU5.5.1/applicationsignname[20150409]')
+            storeFile file('C:/Users/Arison/Desktop/applicationsignname[20150409]')
             storePassword '13237658359'
             keyAlias 'jie-20150409'
             keyPassword '13237658359'

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

@@ -2,8 +2,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     package="com.xzjmyk.pm.activity"
-    android:versionCode="70"
-    android:versionName="5.5.6.0">
+    android:versionCode="71"
+    android:versionName="5.5.6">
 
     <uses-sdk
         android:minSdkVersion="11"
@@ -186,7 +186,8 @@
         <activity android:name=".ui.erp.activity.ScheduleActivity" />
         <activity android:name=".ui.erp.activity.SubscribeDetailActivity" />
         <!-- Contacts 模块 -->
-        <activity android:name=".ui.erp.activity.CompanyContactsActivity" />
+        <activity android:name=".ui.erp.activity.CompanyContactsActivity"
+            android:windowSoftInputMode="stateVisible|adjustResize"/>
         <!-- 通用的activity 加载fragment -->
         <activity android:name=".ui.erp.activity.CommonFragmentActivity" />
         <activity android:name=".ui.erp.activity.MyFriendActivity" />
@@ -469,7 +470,8 @@
         </receiver>
 
         <activity android:name=".video.VideoActivity" />
-        <activity android:name=".ui.erp.activity.CompanyActivity" />
+        <activity android:name=".ui.erp.activity.CompanyActivity"
+            />
         <activity android:name=".ui.erp.activity.BaseInfoActivity" />
         <activity android:name=".ui.message.SubscriptionActivity" />
         <activity android:name=".ui.circle.PhoneSelectActivity" />
@@ -596,7 +598,7 @@
             android:label="地点微调" />
         <activity
             android:name=".ui.erp.activity.oa.AlarmaActivity"
-            android:label="签到提醒"
+            android:label="签到设置"
             android:theme="@style/OAThemeSignin" />
         <activity
             android:name=".ui.erp.activity.oa.MeetingActivity"

+ 1 - 1
WeiChat/src/main/java/com/ipaulpro/afilechooser/FileChooserActivity.java

@@ -153,7 +153,7 @@ public class FileChooserActivity extends FragmentActivity implements
     private void addFragment() {
         FileListFragment fragment = FileListFragment.newInstance(mPath);
         mFragmentManager.beginTransaction()
-                .add(android.R.id.content, fragment).commit();
+                .add(android.R.id.content, fragment).commitAllowingStateLoss();
     }
 
     /**

+ 2 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/CustomCrashActivity.java

@@ -4,13 +4,10 @@ import android.app.Activity;
 import android.content.Intent;
 import android.graphics.drawable.AnimationDrawable;
 import android.os.Bundle;
-import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.ImageView;
 
-import com.afollestad.materialdialogs.MaterialDialog;
-
 import cat.ereza.customactivityoncrash.CustomActivityOnCrash;
 
 /**
@@ -36,8 +33,8 @@ public class CustomCrashActivity extends Activity {
         stackTraceString = CustomActivityOnCrash.getAllErrorDetailsFromIntent(this,intent);
         if (stackTraceString != null){
             //Toast.makeText(this, stackTraceString, Toast.LENGTH_LONG).show();
-            new MaterialDialog.Builder(this).content(stackTraceString)
-                    .build().show();
+//            new MaterialDialog.Builder(this).content(stackTraceString)
+//                    .build().show();
         }
         final Class<? extends Activity> activityClassFromIntent = CustomActivityOnCrash.getRestartActivityClassFromIntent(intent);
         final CustomActivityOnCrash.EventListener listenerFromIntent = CustomActivityOnCrash.getEventListenerFromIntent(intent);

+ 10 - 15
WeiChat/src/main/java/com/xzjmyk/pm/activity/MyApplication.java

@@ -69,6 +69,16 @@ public class MyApplication extends Application {
     @Override
     public void onCreate() {
         super.onCreate();
+        //内存泄漏检测工具初始化
+        /*if (AppConfig.DEBUG){
+            if (LeakCanary.isInAnalyzerProcess(this)) {
+                // This process is dedicated to LeakCanary for heap analysis.
+                // You should not init your app in this process.
+                return;
+            }
+            LeakCanary.install(this);
+        }*/
+
         //Stetho调试工具初始化
         Stetho.initializeWithDefaults(this);
         //自定义闪退页面初始化
@@ -82,14 +92,12 @@ public class MyApplication extends Application {
         //设置重新启动的activity
         CustomActivityOnCrash.setRestartActivityClass(SplashActivity.class);
 
-
         INSTANCE = this;
         ZXingLibrary.initDisplayOpinion(this);
         mRequestQueue = Volley.newRequestQueue(this);
 
         mHttpUtils = new HttpUtils();
         configHttpUtils();
-       // initDbUtils();
 
         SharedUtil.init(this);
         initShareAPI();
@@ -138,19 +146,6 @@ public class MyApplication extends Application {
         PlatformConfig.setQQZone("1104894295", "Nk8zMIz5YSqwRQ1F");
     }
 
-
-    private final String mDbDir = "/sdcard/uu/database";//数据库存放路径
-    private final String mDbName = "uuhulian.db";//数据库名称
-    /**
-     * 配置DbUtils
-     */
-    private void initDbUtils() {
-        DbUtils.DaoConfig daoConfig = new DbUtils.DaoConfig(this);
-        daoConfig.setDbDir(mDbDir);
-        daoConfig.setDbName(mDbName);
-        mDbUtils = DbUtils.create(daoConfig);
-    }
-
     /**
      * 为HttpUtils配置参数
      */

+ 3 - 23
WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/FriendSortAdapter.java

@@ -1,8 +1,6 @@
 package com.xzjmyk.pm.activity.adapter;
 
 import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
 import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -13,11 +11,11 @@ import android.widget.ImageView;
 import android.widget.SectionIndexer;
 import android.widget.TextView;
 
-import com.afollestad.materialdialogs.MaterialDialog;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.helper.AvatarHelper;
 import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.view.SelectPicPopupWindow;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
@@ -152,7 +150,7 @@ public class FriendSortAdapter extends BaseAdapter implements SectionIndexer {
                     Matcher matcher = regex.matcher(phone.toString());
                     if (matcher.matches()) {
 //                        selectByPhone(phone, finalConvertView);
-                        phoneAction(phone);
+                        CommonUtil.phoneAction(mContext,phone);
                     } else {
                         Crouton.makeText(mContext, R.string.not_format_phone);
                     }
@@ -176,25 +174,7 @@ public class FriendSortAdapter extends BaseAdapter implements SectionIndexer {
         menuWindow.showAtLocation(v, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置
     }
 
-    private void phoneAction(final String phone) {
-        MaterialDialog dialog = new MaterialDialog.Builder(mContext).title("确认是否拨打电话").content("手机号码:" + phone)
-                .positiveText("拨打").negativeText("取消").autoDismiss(false).callback(new MaterialDialog.ButtonCallback() {
-                    @Override
-                    public void onPositive(MaterialDialog dialog) {
-                        // 用intent启动拨打电话
-                        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone));
-                        mContext.startActivity(intent);
-                    }
-
-                    @Override
-                    public void onNegative(MaterialDialog dialog) {
-                        super.onNegative(dialog);
-                        dialog.dismiss();
-                    }
-                }).build();
-
-        dialog.show();
-    }
+   
 
     /**
      * 根据ListView的当前位置获取分类的首字母的Char ascii值

+ 64 - 42
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OABean.java

@@ -31,6 +31,8 @@ public class OABean implements Parcelable {
     private String recordman;//陈萍(记录人)
     private String client;//陈萍(客户)
     private String remark;//null(备注)
+    private String vr_nichename;//关联商机名称(备注)
+    private String vr_nichecode;//关联商机 编号(备注)
     private String address;//testaddress(地址)
     private String visitdate;//2016-07-20 00:00:00(拜访日期)
     private String department;//业务员
@@ -43,6 +45,14 @@ public class OABean implements Parcelable {
     public OABean() {
     }
 
+    public String getVp_contact() {
+        return vp_contact;
+    }
+
+    public void setVp_contact(String vp_contact) {
+        this.vp_contact = vp_contact;
+    }
+
     public int getType() {
         return type;
     }
@@ -187,6 +197,22 @@ public class OABean implements Parcelable {
         this.remark = remark;
     }
 
+    public String getVr_nichename() {
+        return vr_nichename;
+    }
+
+    public void setVr_nichename(String vr_nichename) {
+        this.vr_nichename = vr_nichename;
+    }
+
+    public String getVr_nichecode() {
+        return vr_nichecode;
+    }
+
+    public void setVr_nichecode(String vr_nichecode) {
+        this.vr_nichecode = vr_nichecode;
+    }
+
     public String getAddress() {
         return address;
     }
@@ -235,14 +261,6 @@ public class OABean implements Parcelable {
         this.nichestep = nichestep;
     }
 
-    public String getVp_contact() {
-        return vp_contact;
-    }
-
-    public void setVp_contact(String vp_contact) {
-        this.vp_contact = vp_contact;
-    }
-
     protected OABean(Parcel in) {
         type = in.readInt();
         startdate = in.readString();
@@ -262,6 +280,8 @@ public class OABean implements Parcelable {
         recordman = in.readString();
         client = in.readString();
         remark = in.readString();
+        vr_nichename = in.readString();
+        vr_nichecode = in.readString();
         address = in.readString();
         visitdate = in.readString();
         department = in.readString();
@@ -271,6 +291,42 @@ public class OABean implements Parcelable {
         vp_contact = in.readString();
     }
 
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(type);
+        dest.writeString(startdate);
+        dest.writeString(status);
+        dest.writeString(enddate);
+        dest.writeInt(ra_id);
+        dest.writeString(ra_taskid);
+        dest.writeString(ra_resourcecode);
+        dest.writeString(resourcecode);
+        dest.writeString(taskcode);
+        dest.writeString(description);
+        dest.writeString(recorder);
+        dest.writeString(name);
+        dest.writeString(handler);
+        dest.writeInt(vp_id);
+        dest.writeString(visitman);
+        dest.writeString(recordman);
+        dest.writeString(client);
+        dest.writeString(remark);
+        dest.writeString(vr_nichename);
+        dest.writeString(vr_nichecode);
+        dest.writeString(address);
+        dest.writeString(visitdate);
+        dest.writeString(department);
+        dest.writeString(vp_visitmancode);
+        dest.writeString(vp_custcode);
+        dest.writeString(nichestep);
+        dest.writeString(vp_contact);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
     public static final Creator<OABean> CREATOR = new Creator<OABean>() {
         @Override
         public OABean createFromParcel(Parcel in) {
@@ -282,38 +338,4 @@ public class OABean implements Parcelable {
             return new OABean[size];
         }
     };
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel parcel, int i) {
-        parcel.writeInt(type);
-        parcel.writeString(startdate);
-        parcel.writeString(status);
-        parcel.writeString(enddate);
-        parcel.writeInt(ra_id);
-        parcel.writeString(ra_taskid);
-        parcel.writeString(ra_resourcecode);
-        parcel.writeString(resourcecode);
-        parcel.writeString(taskcode);
-        parcel.writeString(description);
-        parcel.writeString(recorder);
-        parcel.writeString(name);
-        parcel.writeString(handler);
-        parcel.writeInt(vp_id);
-        parcel.writeString(visitman);
-        parcel.writeString(recordman);
-        parcel.writeString(client);
-        parcel.writeString(remark);
-        parcel.writeString(address);
-        parcel.writeString(visitdate);
-        parcel.writeString(department);
-        parcel.writeString(vp_visitmancode);
-        parcel.writeString(vp_custcode);
-        parcel.writeString(nichestep);
-        parcel.writeString(vp_contact);
-    }
 }

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SigninBean.java

@@ -8,9 +8,9 @@ import android.os.Parcelable;
  */
 
 public class SigninBean implements Parcelable {
-    private String workSignin;//上班签到时间  yyyyMMdd HH:mm:ss
+    private String workSignin;//上班签到时间   HH:mm
     private String workTime;//上班时间  HH:mm
-    private String offSignin;//下班签到时间  yyyyMMdd HH:mm:ss
+    private String offSignin;//下班签到时间  HH:mm
     private String offTime;//下班时间  HH:mm
     private String startTime;//上班可签到时间  HH:mm
     private String endTime;//下班可签到时间  HH:mm

+ 16 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/SigninDao.java

@@ -5,12 +5,14 @@ import android.content.Context;
 import android.database.Cursor;
 import android.database.SQLException;
 import android.database.sqlite.SQLiteDatabase;
+import android.util.Log;
 
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.bean.oa.SigninBean;
 import com.xzjmyk.pm.activity.ui.erp.db.DBOpenHelper;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -60,8 +62,16 @@ public class SigninDao {
                 values.put("master", master);
                 values.put("workTime", e.getWorkTime());
                 values.put("offTime", e.getOffTime());
-                values.put("workSignin", e.getWorkSignin());
-                values.put("offSignin", e.getOffSignin());
+                if (StringUtils.isEmpty(e.getWorkSignin()) || e.getWorkSignin().compareTo(e.getWorkTime()) > 0) {
+                    values.put("workSignin", "");
+                } else {
+                    values.put("workSignin", e.getWorkSignin());
+                }
+                if (StringUtils.isEmpty(e.getOffSignin()) || e.getOffSignin().compareTo(e.getOffTime()) < 0) {
+                    values.put("workSignin", "");
+                } else {
+                    values.put("offSignin", e.getOffSignin());
+                }
                 values.put("startTime", e.getStartTime());
                 values.put("endTime", e.getEndTime());
                 i = db.insert(titleName, nullColumn, values);
@@ -202,4 +212,8 @@ public class SigninDao {
         return beans == null ? new ArrayList<SigninBean>() : beans;
     }
 
+    private void testShow(String tag, String message) {
+        if (StringUtils.isEmpty(tag)) return;
+        Log.i("gongpengming", tag + ":" + message);
+    }
 }

+ 9 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/SubscriptionDao.java

@@ -87,7 +87,7 @@ public class SubscriptionDao {
         long k = 0;
         SQLiteDatabase db = sqliteHelper.getWritableDatabase();
         try {
-            String where = "createdate_>? and createdate_<=?";
+            String where = "createdate_>=? and createdate_<?";
             String[] whereArg = {date + "", endDate + ""};
             k = db.delete(titleName, where, whereArg);
         } catch (SQLException e) {
@@ -171,13 +171,13 @@ public class SubscriptionDao {
                 messages.add(message);
             }
         } catch (SQLException e) {
-            Log.i("gong", e.getMessage());
+
+        } catch (Exception e) {
+
         } finally {
             db.close();
         }
-        for (int i = 0; i < messages.size(); i++) {
-            Log.i("aaaaa", messages.get(i).getTITLE_());
-        }
+
         return messages;
     }
 
@@ -187,8 +187,10 @@ public class SubscriptionDao {
         SQLiteDatabase db = sqliteHelper.getReadableDatabase();
         String[] colums = {"id_", "num_id_", "instance_id_", "createdate_", "title_", "son_title_", "status_", "EMP_ID_"
                 , "RN_", "SUMDATA_"};
-        String selection = "createdate_>? and createdate_<?" + "  and name=?";
-        String[] selectionArgs = {date + "", "" + endDate, name};
+        date /= 1000;//为防止有个别误差,不计算毫秒
+        endDate /= 1000;
+        String selection = "createdate_>=? and createdate_<?" + "  and name=?";
+        String[] selectionArgs = {date * 1000 + "", "" + endDate * 1000, name};
         try {
             SubscriptionMessage message = null;
             Cursor values = db.query(titleName, colums, selection, selectionArgs, null, null, null);

+ 13 - 24
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/BaseInfoActivity.java

@@ -6,7 +6,6 @@ import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
-import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.View;
@@ -43,13 +42,13 @@ import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
 import com.xzjmyk.pm.activity.ui.erp.entity.EmployeesEntity;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.me.BasicInfoEditActivity;
 import com.xzjmyk.pm.activity.ui.me.LocalVideoActivity;
 import com.xzjmyk.pm.activity.ui.tool.SelectAreaActivity;
 import com.xzjmyk.pm.activity.util.CameraUtil;
 import com.xzjmyk.pm.activity.util.DisplayUtil;
 import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
-import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
 import com.xzjmyk.pm.activity.view.wheel.DateTimePicker;
@@ -184,7 +183,8 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
             mNickname = entities.get(0).getEM_NAME();
         }
         // mNameEdit.setText(mTempData.getNickName());
-        tv_address.setText(Area.getProvinceCityString(mTempData.getProvinceId(), mTempData.getCityId()));
+        tv_address.setText(Area.getProvinceCityString(mTempData.getProvinceId(), mTempData.getCityId())
+        +"-"+Area.getCityAreaString(0,mTempData.getAreaId()));
         AvatarHelper.getInstance().displayAvatar(mTempData.getUserId(), iv_headImage, true);
     }
 
@@ -378,8 +378,10 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
                 // String country_name = data.getStringExtra(Constant.EXTRA_COUNTRY_NAME);
                 String province_name = data.getStringExtra(SelectAreaActivity.EXTRA_PROVINCE_NAME);
                 String city_name = data.getStringExtra(SelectAreaActivity.EXTRA_CITY_NAME);
-                tv_address.setText(province_name + "-" + city_name);
+                String county_name=data.getStringExtra(SelectAreaActivity.EXTRA_COUNTY_NAME);
+                tv_address.setText(province_name + "-" + city_name+"-"+county_name);
 
+                LogUtil.d("省:" + provinceId + "市:" + cityId + "县:" + countryId);
                 mTempData.setCountryId(countryId);
                 mTempData.setProvinceId(provinceId);
                 mTempData.setCityId(cityId);
@@ -501,19 +503,6 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
             uploadAvatar(mCurrentFile);
         } else {
             ProgressDialogUtil.dismiss(mProgressDialog);
-//            Crouton crouton = Crouton.makeText(this, "保存成功", 0xff99cc00, 1000);
-//            crouton.setLifecycleCallback(new LifecycleCallback() {
-//                @Override
-//                public void onDisplayed() {
-//
-//                }
-//
-//                @Override
-//                public void onRemoved() {
-//                    
-//                }
-//            });
-//            crouton.show();
         }
 
     }
@@ -559,7 +548,7 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
                     BaseInfoActivity.this.sendBroadcast(intent);
                     AvatarHelper.getInstance().deleteAvatar(loginUserId);
                     ToastUtil.showToast(BaseInfoActivity.this, R.string.upload_avatar_success);
-
+                    mCurrentFile=null;
                 } else {
                     ToastUtil.showToast(BaseInfoActivity.this, R.string.upload_avatar_failed);
                 }
@@ -610,8 +599,8 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
     }
 
 
-    private void showBackDialog() {
-        /*AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle(R.string.prompt_title).setMessage("个人资料发生改变,是否保存当前内容?")
+/*    private void showBackDialog() {
+        *//*AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle(R.string.prompt_title).setMessage("个人资料发生改变,是否保存当前内容?")
                 .setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
@@ -624,7 +613,7 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
 
                     }
                 });
-        builder.create().show();*/
+        builder.create().show();*//*
 
         if (!MyApplication.getInstance().isNetworkActive()) {
             ToastUtil.showToast(BaseInfoActivity.this, "网络异常,更新失败");
@@ -646,10 +635,10 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
             Log.d("wang", "数据改变了,提交数据");
           //  updateData();
         }
-        /*if (mCurrentFile != null && mCurrentFile.exists()) {
+        *//*if (mCurrentFile != null && mCurrentFile.exists()) {
             Log.d("wang", "uploadAvatar");
             uploadAvatar(mCurrentFile);
-        }*/
-    }
+        }*//*
+    }*/
 
 }

+ 162 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CompanyContactsActivity.java

@@ -3,6 +3,7 @@ package com.xzjmyk.pm.activity.ui.erp.activity;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
+import android.graphics.drawable.BitmapDrawable;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -13,37 +14,46 @@ import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowManager;
 import android.widget.AbsListView;
 import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.HorizontalScrollView;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.PopupWindow;
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
 import android.widget.RelativeLayout;
+import android.widget.SimpleAdapter;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.db.dao.FriendDao;
+import com.xzjmyk.pm.activity.helper.AvatarHelper;
 import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.circle.BasicInfoActivity;
 import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
 import com.xzjmyk.pm.activity.ui.erp.entity.EmployeesEntity;
 import com.xzjmyk.pm.activity.ui.erp.entity.Hrorgs;
 import com.xzjmyk.pm.activity.ui.erp.entity.HrorgsEntity;
 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.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.view.CustomerListView;
 import com.xzjmyk.pm.activity.ui.message.ChatActivity;
+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.ClearEditText;
@@ -574,13 +584,17 @@ public class CompanyContactsActivity extends BaseActivity {
         mEditText.addTextChangedListener(new TextWatcher() {
             @Override
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-                
+
             }
 
             @Override
             public void onTextChanged(CharSequence s, int start, int before, int count) {
-                if (!StringUtils.isEmpty(s.toString())){
-                    searchEmployee(s.toString());
+                if (!StringUtils.isEmpty(s.toString())) {
+                    searchData= searchEmployee(s.toString());
+                    if (!ListUtils.isEmpty(searchData)){
+                        popupWindow=null;
+                        showPopupWindow(mEditText);
+                    }
                 }
             }
 
@@ -594,17 +608,7 @@ public class CompanyContactsActivity extends BaseActivity {
     }
     
     
-    public void searchEmployee(String key){
-        String master=CommonUtil.getSharedPreferences(ct,"erp_master");
-        Log.i(TAG, "master="+master);
-        
-        List<EmployeesEntity> eList = manager.select_getEmployee(
-                new String[]{"%"+key+"%", master},
-                "em_name like ? and whichsys=?");
-        LogUtil.prinlnLongMsg(TAG, JSON.toJSONString(eList));
-                
-       
-    }
+  
 
     private void EnterChatAction(DetailItemAdapter.ModelItem item) {
         Friend friendOne = FriendDao.getInstance().getFriend(MyApplication.getInstance().mLoginUser.getUserId(),
@@ -667,26 +671,26 @@ public class CompanyContactsActivity extends BaseActivity {
     /**
      * @注释:关键字查询
      */
-    private void LoadEmployeeFromServer(String em_name) {
+  /*  private void LoadEmployeeFromServer(String em_name) {
         Bundle bundle = new Bundle();
         bundle.putString("or_id", em_name);
         Message message = new Message();
         message.setData(bundle);
         message.what = LOAD_SUCCESS_EMPLOYEE;
         mHandler.sendMessage(message);
-    }
+    }*/
 
     /**
      * @注释:详细信息
      */
-    private void LoadEmployeeInfoFromServer(String em_id) {
+  /*  private void LoadEmployeeInfoFromServer(String em_id) {
         Bundle bundle = new Bundle();
         bundle.putString("or_id", em_id);
         Message message = new Message();
         message.setData(bundle);
         message.what = LOAD_SUCCESS_EMPLOYEEINFO;
         mHandler.sendMessage(message);
-    }
+    }*/
 
     /**
      * @author Administrator
@@ -834,6 +838,104 @@ public class CompanyContactsActivity extends BaseActivity {
     }
 
 
+    private PopupWindow popupWindow = null;
+
+    public void showPopupWindow(View parent) {
+        View view = null;
+        WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
+        if (popupWindow == null) {
+            LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            view = layoutInflater.inflate(R.layout.pop_crm_list, null);
+            ListView plist = (ListView) view.findViewById(R.id.mList);
+            final  MySimpleAdapter adapter = new  MySimpleAdapter(
+                    this,
+                    searchData,
+                    R.layout.item_pop_employee,
+                    new String[]{"item_name","item_sub"}, new int[]{R.id.name_tv,R.id.sub_tv});
+            plist.setAdapter(adapter);
+            plist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+                @Override
+                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                    Map<String, Object> mMap = (Map<String, Object>) adapter.getItem(position);
+                    String name=  mMap.get("item_name").toString();
+                    String sub=  mMap.get("item_sub").toString();
+                    String depart=  mMap.get("item_depart").toString();
+                    String pos=  mMap.get("item_position").toString();
+                    String imId=  mMap.get("item_imId").toString();
+                    final String phone=  mMap.get("item_phone").toString();
+               
+          
+                    Friend friend = new Friend();
+                    friend.setNickName(name);
+                    friend.setPhone(phone);
+                    friend.setDepart(depart);
+                    friend.setPosition(pos);
+                    friend.setUserId(imId);
+                     Intent intent = new Intent(ct, BasicInfoActivity.class);
+                    intent.putExtra(AppConstant.EXTRA_NICK_CODE, friend.getPhone());
+                    intent.putExtra(AppConstant.EXTRA_USER_ID, friend.getUserId());
+                    intent.putExtra(AppConstant.EXTRA_NICK_NAME, friend.getNickName());
+                    intent.putExtra("friend", friend);
+                    startActivity(intent);
+                    closePoppupWindow();
+                }
+            });
+            popupWindow = new PopupWindow(view, windowManager.getDefaultDisplay().getWidth() , windowManager.getDefaultDisplay().getHeight() / 3);
+        }
+        // 使其聚集
+        popupWindow.setFocusable(true);
+        // 设置允许在外点击消失
+        //popupWindow.setOutsideTouchable(true);
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                DisplayUtil.backgroundAlpha(ct, 1f);
+            }
+        });
+        DisplayUtil.backgroundAlpha(this, 1f);
+        // 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
+        popupWindow.setBackgroundDrawable(new BitmapDrawable());
+        popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+        popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
+        popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);;
+        // 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半
+        popupWindow.showAsDropDown(parent, windowManager.getDefaultDisplay().getWidth(), 0);
+    }
+
+    private void closePoppupWindow() {
+        if (popupWindow != null && popupWindow.isShowing()) {
+            popupWindow.dismiss();
+            popupWindow = null;
+        }
+    }
+
+    List<Map<String, Object>> searchData;
+
+    public List<Map<String, Object>> searchEmployee(String key){
+        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
+        Map<String, Object> map = new HashMap<String, Object>();
+        String master=CommonUtil.getSharedPreferences(ct,"erp_master");
+
+        List<EmployeesEntity> eList = manager.select_getEmployee(
+                new String[]{"%"+key+"%", master},
+                "em_name like ? and whichsys=?");
+        LogUtil.prinlnLongMsg(TAG, JSON.toJSONString(eList));
+       if(!ListUtils.isEmpty(eList)){
+           for (int i=0;i<eList.size(); i++){
+               map = new HashMap<String, Object>();
+               map.put("item_name", eList.get(i).getEM_NAME());
+               map.put("item_sub",eList.get(i).getEM_DEPART()+">"+eList.get(i).getEM_POSITION());
+               map.put("item_depart",eList.get(i).getEM_DEPART());
+               map.put("item_position",eList.get(i).getEM_POSITION());
+               map.put("item_imId",eList.get(i).getEm_IMID());
+               map.put("item_phone",eList.get(i).getEM_MOBILE());
+               list.add(map);
+           }
+       }
+       return  list;
+    }
+    
+    
     public static final int LIST_LEFT_MODE = 0;
     public static final int LIST_TOP_MODE = 2;
     public static final int LIST_RIGHT_MODE = 1;
@@ -1012,4 +1114,45 @@ public class CompanyContactsActivity extends BaseActivity {
             public ImageView phone;
         }
     }
-}
+
+
+
+    private class MySimpleAdapter extends SimpleAdapter {
+
+        /**
+         * Constructor
+         *
+         * @param context  The context where the View associated with this SimpleAdapter is running
+         * @param data     A List of Maps. Each entry in the List corresponds to one row in the list. The
+         *                 Maps contain the data for each row, and should include all the entries specified in
+         *                 "from"
+         * @param resource Resource identifier of a view layout that defines the views for this list
+         *                 item. The layout file should include at least those named views defined in "to"
+         * @param from     A list of column names that will be added to the Map associated with each
+         *                 item.
+         * @param to       The views that should display column in the "from" parameter. These should all be
+         *                 TextViews. The first N views in this list are given the values of the first N columns
+         */
+        public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
+            super(context, data, resource, from, to);
+        }
+
+        @Override
+        public View getView(final  int position, View convertView, ViewGroup parent) {
+            convertView=super.getView(position, convertView, parent);
+            ImageView phone_img= (ImageView) convertView.findViewById(R.id.phone_img);
+            ImageView header_img= (ImageView) convertView.findViewById(R.id.header_img);
+           final Map<String, Object> mMap = (Map<String, Object>)getItem(position);
+            phone_img.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                  
+                    CommonUtil.phoneAction(mContext,mMap.get("item_phone").toString());
+                }
+            });
+
+            AvatarHelper.getInstance().displayAvatar(mMap.get("item_imId").toString(),header_img,true);
+            return convertView;
+        }
+    }
+    }

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

@@ -95,7 +95,7 @@ public class MyFriendActivity extends BaseActivity {
         if (isPeculiar)
             getSupportActionBar().setTitle("常用联系人");
         else
-            getSupportActionBar().setTitle("我的好友");
+            getSupportActionBar().setTitle("UU好友");
         mSortFriends = new ArrayList<>();
         allFriends = new ArrayList<>();
         mBaseComparator = new BaseComparator<Friend>();
@@ -164,7 +164,7 @@ public class MyFriendActivity extends BaseActivity {
         mTextDialog = (TextView) findViewById(R.id.text_dialog);
         mSideBar = (SideBar) findViewById(R.id.sidebar);
         mSideBar.setTextView(mTextDialog);
-        mPullToRefreshListView.setEmptyView(R.layout.view_empty);
+//        mPullToRefreshListView.setEmptyView(R.layout.view_empty);
         mSideBar.setOnTouchingLetterChangedListener(new SideBar.OnTouchingLetterChangedListener() {
             @Override
             public void onTouchingLetterChanged(String s) {
@@ -221,7 +221,7 @@ public class MyFriendActivity extends BaseActivity {
                     intent.putExtra(AppConstant.EXTRA_NICK_CODE, friend.getPhone());
                     intent.putExtra("friend", friend);
                 }
-                startActivity(intent);
+                startActivityForResult(intent,0x20);
             }
         });
         mPullToRefreshListView.getRefreshableView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

+ 6 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/NoticeMenuActivity.java

@@ -104,9 +104,9 @@ public class NoticeMenuActivity extends BaseActivity {
                 } else if (setData == type) {
                     bean.unReNun = NES_count;
                     if (bean.unReNun > 0) {
-                        bean.subTitle = "您有" + bean.unReNun + "条新闻未阅读";
+                        bean.subTitle = "您有新的新闻未阅读!";
                     } else {
-                        bean.subTitle = "您暂无未阅读新闻消息";
+                        bean.subTitle = "您暂无未阅读新闻消息!";
                     }
                     bean.time = "刚刚";
                     bean.title = "新闻";
@@ -119,9 +119,9 @@ public class NoticeMenuActivity extends BaseActivity {
                 else if (setData == type) {
                     bean.unReNun = NOTICE_count;
                     if (bean.unReNun > 0) {
-                        bean.subTitle = "您有" + bean.unReNun + "条通知未阅读";
+                        bean.subTitle = "您有新的通知未阅读!";
                     } else {
-                        bean.subTitle = "您无未阅读通知内容";
+                        bean.subTitle = "您暂无未阅读的通知!";
                     }
                     bean.time = "刚刚";
                     bean.title = "通知";
@@ -133,9 +133,9 @@ public class NoticeMenuActivity extends BaseActivity {
                 else if (setData == type) {
                     bean.unReNun = GONGGAO_count;
                     if (bean.unReNun > 0) {
-                        bean.subTitle = "您有" + bean.unReNun + "条公告未阅读";
+                        bean.subTitle = "您有新的公告未阅读!";
                     } else {
-                        bean.subTitle = "您暂无未阅读公告消息";
+                        bean.subTitle = "您暂无未阅读的公告!";
                     }
                     bean.time = "刚刚";
                     bean.title = "公告";

+ 6 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SubscribeDetailActivity.java

@@ -275,8 +275,8 @@ public class SubscribeDetailActivity extends BaseActivity {
         webSettings.setDomStorageEnabled(true);
 //        webSettings.setSupportZoom(true);
 //        webSettings.setBuiltInZoomControls(true);
-        webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
-        webSettings.setBlockNetworkImage(true);
+        webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);//提高渲染的优先级
+        webSettings.setBlockNetworkImage(true);//把图片加载放在最后来加载
         if (Build.VERSION.SDK_INT >= 19) {//硬件加速器的使用
             mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
         } else {
@@ -298,7 +298,6 @@ public class SubscribeDetailActivity extends BaseActivity {
                     mProgressBar.setVisibility(View.GONE);
                 }
             }
-
         });
 
         mWebView.setWebChromeClient(new WebChromeClient() {
@@ -308,7 +307,11 @@ public class SubscribeDetailActivity extends BaseActivity {
                     mProgressBar.setVisibility(View.VISIBLE);
                 }
                 mProgressBar.setProgress(newProgress);
+                if (mProgressBar.getVisibility() == View.VISIBLE && newProgress == 100) {
+                    mProgressBar.setVisibility(View.GONE);
+                }
             }
+
         });
 
         subscribeUrl = Constants.getAppBaseUrl(this) + "common/charts/mobilePreview.action?id="

+ 38 - 35
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/TaskActivity.java

@@ -101,9 +101,7 @@ public class TaskActivity extends BaseActivity {
                         process.setRecorder(item.getString("recorder"));//发起人
                         process.setStatus(item.getString("ra_status"));//状态
                         process.setMainname(item.getString("ra_status"));//状态
-
                         process.setTaskname(item.getString("ra_taskname"));//名称
-
                         process.setDatetime(item.getDate("ra_startdate"));//发起时间
                         process.setLink(task_url + item.get("ra_id"));
                         process.setTypecode(item.getString("ra_type"));
@@ -132,7 +130,6 @@ public class TaskActivity extends BaseActivity {
                     listview_main.onRefreshComplete();
                 }
             }
-
             if (msg.what == LOAD_EM_NAME) {
                 String result = msg.getData().getString("result");
                 Log.i("Task", result);
@@ -162,12 +159,9 @@ public class TaskActivity extends BaseActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.task_listview);
-
         context = TaskActivity.this;
         ViewUtils.inject(this);
         getSupportActionBar().setTitle("我的任务");
-
-
         String mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
         // 表示已读
         FriendDao.getInstance().markUserMessageRead(mLoginUserId, Friend.ID_ERP_TASK);
@@ -204,7 +198,6 @@ public class TaskActivity extends BaseActivity {
                 intent.putExtra("status", store.tv_task_status.getText().toString());
                 intent.putExtra("taskid", store.pTextView3.getText().toString());//编号
                 intent.putExtra("taskname", store.pTextView4.getText().toString());//名称
-
                 intent.putExtra("taskemcode", store.pTextView1.getText().toString());//发起人
                 intent.putExtra("tasktime", store.pTextView2.getText().toString());//发起时间
                 intent.putExtra("performer", store.tv_task_performer);//处理人
@@ -213,7 +206,7 @@ public class TaskActivity extends BaseActivity {
                 intent.putExtra("ra_taskid", store.task_id);//取回复内容id
                 intent.putExtra("attachs", store.attachs);
                 intent.putExtra("endtime", store.tv_task_duration);
-                startActivity(intent);
+                startActivityForResult(intent, 0x20);
             }
 
             /**
@@ -249,32 +242,7 @@ public class TaskActivity extends BaseActivity {
         listview_main.setOnRefreshListener(new OnRefreshListener<ListView>() {
             @Override
             public void onRefresh(PullToRefreshBase<ListView> refreshView) {
-                if (state_all == null || state_finish == null
-                        || state_start == null || state_taskforme == null
-                        || state_unconfirmed == null) {
-                    mEmptyLayout.showLoading();
-                    listview_main.getLoadingLayoutProxy().setPullLabel("下拉更新");
-                    sendResquestForServer("START", 2);
-                    return;
-                }
-                if (state_all.isSelected()) {
-                    mEmptyLayout.showLoading();
-                    listview_main.getLoadingLayoutProxy().setPullLabel("下拉更新");
-                    new Thread(new getallprocess_run()).start();
-                }
-                if (state_finish.isSelected()) {
-                    sendResquestForServer("FINISHED", 2);
-                }
-                if (state_start.isSelected()) {
-                    sendResquestForServer("START", 2);
-                }
-                if (state_unconfirmed.isSelected()) {
-                    sendResquestForServer("UNCONFIRMED", 2);
-                }
-                if (state_taskforme.isSelected()) {
-                    sendResquestForServerOther(2);
-                }
-
+                refreshing();
             }
         });
     }
@@ -285,6 +253,35 @@ public class TaskActivity extends BaseActivity {
         getEmNameForServer();//网络请求
     }
 
+
+    private void refreshing() {
+        if (state_all == null || state_finish == null
+                || state_start == null || state_taskforme == null
+                || state_unconfirmed == null) {
+            mEmptyLayout.showLoading();
+            listview_main.getLoadingLayoutProxy().setPullLabel("下拉更新");
+            sendResquestForServer("START", 2);
+            return;
+        }
+        if (state_all.isSelected()) {
+            mEmptyLayout.showLoading();
+            listview_main.getLoadingLayoutProxy().setPullLabel("下拉更新");
+            new Thread(new getallprocess_run()).start();
+        }
+        if (state_finish.isSelected()) {
+            sendResquestForServer("FINISHED", 2);
+        }
+        if (state_start.isSelected()) {
+            sendResquestForServer("START", 2);
+        }
+        if (state_unconfirmed.isSelected()) {
+            sendResquestForServer("UNCONFIRMED", 2);
+        }
+        if (state_taskforme.isSelected()) {
+            sendResquestForServerOther(2);
+        }
+    }
+
     @SuppressWarnings("unchecked")
     private void loadData() {
         hClient = new HttpClient();
@@ -620,5 +617,11 @@ public class TaskActivity extends BaseActivity {
         return super.onOptionsItemSelected(item);
     }
 
-
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (data == null) return;
+        if (requestCode == 0x20 && resultCode == 0x20) {
+            refreshing();
+        }
+    }
 }

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

@@ -668,8 +668,8 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
                                     }, ct.getResources().getColor(R.color.red));
                             CommonUtil.textAarrySpanForStyle(tv_rank_rirun_right, profits.getJSONArray(1).get(0) + "万元"
                                     , new String[]{
-                                            String.valueOf(profits.getJSONArray(0).get(0))
-                                    }, ct.getResources().getColor(R.color.gray));
+                                    String.valueOf(profits.getJSONArray(0).get(0))
+                            }, ct.getResources().getColor(R.color.gray));
                         } else {
                             if (profits.getJSONArray(0).getString(2).equals(CommonUtil.getSharedPreferences(ct, "erp_username"))) {
                                 CommonUtil.textAarrySpanForStyle(tv_rank_rirun_left,
@@ -680,8 +680,8 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
 
                                 CommonUtil.textAarrySpanForStyle(tv_rank_rirun_right, profits.getJSONArray(0).get(0) + "万元"
                                         , new String[]{
-                                                String.valueOf(profits.getJSONArray(0).get(0))
-                                        }, ct.getResources().getColor(R.color.gray));
+                                        String.valueOf(profits.getJSONArray(0).get(0))
+                                }, ct.getResources().getColor(R.color.gray));
 
                             } else {
                                 CommonUtil.textAarrySpanForStyle(tv_rank_rirun_left,
@@ -1002,7 +1002,7 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, INIT_PersonalRank, null, null, "post");
     }
 
-    //需要抽取的代码
+    
     private PopupWindow popupWindow = null;
 
     public void showPopupWindow(View parent) {

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

@@ -5,6 +5,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -123,6 +124,7 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
             if (bean == null) return;
             vp_id = bean.getVp_id();
             vp_code = bean.getVp_custcode();
+            cu_code = bean.getVp_custcode();
             tv_date_start.setText(bean.getStartdate() == null ? "未填写" : bean.getStartdate());
             tv_date_end.setText(bean.getEnddate() == null ? "未填写" : bean.getEnddate());
             tv_customer_login.setText(bean.getClient() == null ? "未填写" : bean.getClient());
@@ -130,6 +132,10 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
             tv_address_login.setText(bean.getAddress() == null ? "未填写" : bean.getAddress());
             tv_visit_theme.setText(bean.getRemark() == null ? "未填写" : bean.getRemark());
             tv_visit_steps.setText(bean.getNichestep() == null ? "" : bean.getNichestep());
+            if (!StringUtils.isEmpty(bean.getVr_nichename()))
+                tv_relate_business.setText(bean.getVr_nichename());
+            if (!StringUtils.isEmpty(bean.getVr_nichecode()))
+                nichecode = bean.getVr_nichecode();
         } else if (getIntent().getIntExtra("type", -1) == 2) {
             String chche = getIntent().getStringExtra("data");
             JSONObject object = JSON.parseObject(chche);
@@ -141,6 +147,10 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
             tv_visit_theme.setText(getJSONString(object, "vr_title"));
             tv_visit_steps.setText(getJSONString(object, "vr_nichestep"));
             tv_visit_content.setText(getJSONString(object, "vr_detail"));
+            nichecode = object.getString(getJSONString(object, "vr_nichecode"));
+            tv_relate_business.setText(getJSONString(object, "vr_nichename"));
+            tv_visit_content.setText(getJSONString(object, "vr_detail"));
+
         }
     }
 
@@ -268,11 +278,11 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
     }
 
     private void sendHttpResquest(int what, String code) {
-        String emname="";
+        String emname = "";
         if (!StringUtils.isEmpty(CommonUtil.getSharedPreferences(ct, "erp_emname"))) {
-            emname=CommonUtil.getSharedPreferences(ct, "erp_emname").trim();
+            emname = CommonUtil.getSharedPreferences(ct, "erp_emname").trim();
         } else {
-            emname=MyApplication.getInstance().mLoginUser.getNickName().trim();
+            emname = MyApplication.getInstance().mLoginUser.getNickName().trim();
         }
         String formStore = "";
         if (tv_date_start.testValidity() && tv_date_end.testValidity()
@@ -308,6 +318,12 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                             "\"vr_detail\":\"" +
                             CommonUtil.getNoMarkEditText(tv_visit_content) +
                             "\",\n" +
+                            "\"vr_nichecode\":\"" +
+                            nichecode +
+                            "\",\n" +
+                            "\"vr_nichename\":\"" +
+                            (TextUtils.isEmpty(tv_relate_business.getText()) ? "" : tv_relate_business.getText().toString()) +
+                            "\",\n" +
                             "\"vr_recorddate\":\"" +
                             DateFormatUtil.getStrDate4Date(new Date(), "yyyy-MM-dd") +
                             "\",\n" +

+ 265 - 159
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/ProcessMsgActivity.java

@@ -5,17 +5,24 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.support.v7.app.ActionBar;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.BaseAdapter;
+import android.widget.Filter;
+import android.widget.Filterable;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.lidroid.xutils.ViewUtils;
@@ -36,9 +43,9 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
-  * @desc:
-  * @author:Arison on 2016/11/1
-  */
+ * @desc:
+ * @author:Arison on 2016/11/1
+ */
 public class ProcessMsgActivity extends BaseActivity implements View.OnClickListener {
 
     @ViewInject(R.id.edt_search)
@@ -54,79 +61,78 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
     private TextView tv_process_already;
     @ViewInject(R.id.tv_process_un)
     private TextView tv_process_un;
- 
+
     @ViewInject(R.id.back)
     private ImageView iv_back;
 
     private ProcessAdapter mAdapter;
-    private JSONArray array=new JSONArray();
-    
-    private int tab_type=1;
-    private int page=1;
-    private final int SUSSCESS_un=1;
-    private final int SUSSCESS_already=2;
-    private final int SUSSCESS_me=3;
-    
-    
-    
-    private Handler mHandler=new Handler(){
+    private JSONArray array = new JSONArray();
+
+    private int tab_type = 1;
+    private int page = 1;
+    private final int SUSSCESS_un = 1;
+    private final int SUSSCESS_already = 2;
+    private final int SUSSCESS_me = 3;
+
+
+    private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
-            String result=msg.getData().getString("result");
+            String result = msg.getData().getString("result");
             progressDialog.dismiss();
             mList.onRefreshComplete();
-            
-           switch (msg.what){
-               case SUSSCESS_un:
-                    JSONArray itemArray= JSON.parseObject(result).getJSONArray("data");
-                   if(page==1)array.clear();
+
+            switch (msg.what) {
+                case SUSSCESS_un:
+                    JSONArray itemArray = JSON.parseObject(result).getJSONArray("data");
+                    if (page == 1) array.clear();
                     array.addAll(itemArray);
-                    if (mAdapter==null){
-                        mAdapter=new ProcessAdapter(ct,array);
+                    if (mAdapter == null) {
+                        mAdapter = new ProcessAdapter(ct, array);
                         mList.setAdapter(mAdapter);
-                    }else {
+                    } else {
                         mAdapter.notifyDataSetChanged();
                     }
-                   if (array.size()==0){
-                       mEmptyLayout.showEmpty();
-                   }
-               break;
-               case SUSSCESS_already:
-                    itemArray= JSON.parseObject(result).getJSONArray("data");
-                   if(page==1)array.clear();
-                   array.addAll(itemArray);
-                   if (mAdapter==null){
-                       mAdapter=new ProcessAdapter(ct,array);
-                       mList.setAdapter(mAdapter);
-                   }else {
-                       mAdapter.notifyDataSetChanged();
-                   }
-                   if (array.size()==0){
-                       
-                       mEmptyLayout.showEmpty();
-                   }
-                   break;
-               case SUSSCESS_me:
-                    itemArray= JSON.parseObject(result).getJSONArray("data");
-                   if(page==1)array.clear();
-                   array.addAll(itemArray);
-                   if (mAdapter==null){
-                       mAdapter=new ProcessAdapter(ct,array);
-                       mList.setAdapter(mAdapter);
-                   }else {
-                       mAdapter.notifyDataSetChanged();
-                   }
-                   if (array.size()==0){
-                       mEmptyLayout.showEmpty();
-                   }
-                   break;
-               case Constants.APP_SOCKETIMEOUTEXCEPTION:
-                   ToastMessage(result);
-                   break;
-           }
+                    if (array.size() == 0) {
+                        mEmptyLayout.showEmpty();
+                    }
+                    break;
+                case SUSSCESS_already:
+                    itemArray = JSON.parseObject(result).getJSONArray("data");
+                    if (page == 1) array.clear();
+                    array.addAll(itemArray);
+                    if (mAdapter == null) {
+                        mAdapter = new ProcessAdapter(ct, array);
+                        mList.setAdapter(mAdapter);
+                    } else {
+                        mAdapter.notifyDataSetChanged();
+                    }
+                    if (array.size() == 0) {
+
+                        mEmptyLayout.showEmpty();
+                    }
+                    break;
+                case SUSSCESS_me:
+                    itemArray = JSON.parseObject(result).getJSONArray("data");
+                    if (page == 1) array.clear();
+                    array.addAll(itemArray);
+                    if (mAdapter == null) {
+                        mAdapter = new ProcessAdapter(ct, array);
+                        mList.setAdapter(mAdapter);
+                    } else {
+                        mAdapter.notifyDataSetChanged();
+                    }
+                    if (array.size() == 0) {
+                        mEmptyLayout.showEmpty();
+                    }
+                    break;
+                case Constants.APP_SOCKETIMEOUTEXCEPTION:
+                    ToastMessage(result);
+                    break;
+            }
         }
     };
-    
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -146,14 +152,14 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
         mEmptyLayout.setShowErrorButton(false);
         mEmptyLayout.setShowLoadingButton(false);
         mEmptyLayout.showLoading();
-        
+
         View view = LayoutInflater.from(ct).inflate(R.layout.process_header, null);
         ActionBar bar = this.getSupportActionBar();
         bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
-        tv_process_already= (TextView) view.findViewById(R.id.tv_process_already);
-        tv_process_un= (TextView) view.findViewById(R.id.tv_process_un);
-        tv_process_me= (TextView) view.findViewById(R.id.tv_process_me);
-        iv_back= (ImageView) view.findViewById(R.id.back);
+        tv_process_already = (TextView) view.findViewById(R.id.tv_process_already);
+        tv_process_un = (TextView) view.findViewById(R.id.tv_process_un);
+        tv_process_me = (TextView) view.findViewById(R.id.tv_process_me);
+        iv_back = (ImageView) view.findViewById(R.id.back);
         bar.setCustomView(view);
         tv_process_already.setOnClickListener(this);
         tv_process_me.setOnClickListener(this);
@@ -164,8 +170,8 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
         mList.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
             @Override
             public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
-               page=1;
-                switch (tab_type){
+                page = 1;
+                switch (tab_type) {
                     case 1:
                         loadProcessToDo(page);
                         break;
@@ -181,7 +187,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
             @Override
             public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                 page++;
-                switch (tab_type){
+                switch (tab_type) {
                     case 1:
                         loadProcessToDo(page);
                         break;
@@ -192,100 +198,127 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                         loadProcessAlreadyLaunch(page);
                         break;
                 }
-                
+
             }
         });
-        
+
         mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                ProcessAdapter.ViewModel model= (ProcessAdapter.ViewModel) view.getTag();
-                String title="";
-                switch (tab_type){
+                ProcessAdapter.ViewModel model = (ProcessAdapter.ViewModel) view.getTag();
+                String title = "";
+                switch (tab_type) {
                     case 1:
-                        title="待审批";
+                        title = "待审批";
                         break;
                     case 2:
-                        title="已审批";
+                        title = "已审批";
                         break;
                     case 3:
-                        title="我发起的";
+                        title = "我发起的";
                         break;
                 }
-                String url="jsps/mobile/jprocand.jsp?nodeId="+model.JP_NODEID;
-                CommonUtil.loadWebView(ct,url,title,CommonUtil.getSharedPreferences(ct,"erp_master"),null,null);
+                String url = "jsps/mobile/jprocand.jsp?nodeId=" + model.JP_NODEID;
+                CommonUtil.loadWebView(ct, url, title, CommonUtil.getSharedPreferences(ct, "erp_master"), null, null);
+            }
+        });
+
+        mEditText.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                if (mAdapter == null) {
+                    Toast.makeText(getApplication(), "系统内部错误", Toast.LENGTH_SHORT).show();
+                } else {
+                    if (!StringUtils.isEmpty(mEditText.getText().toString())) {
+                        mAdapter.getFilter().filter(mEditText.getText().toString());
+                    } else {
+                        mAdapter.getFilter().filter("");
+                    }
+                }
             }
         });
     }
-  
-    
+
 
     @Override
     public void onClick(View v) {
-        switch (v.getId()){
+        switch (v.getId()) {
             case R.id.tv_process_un:
-                page=1;
-                tab_type=1;
+                page = 1;
+                tab_type = 1;
                 tv_process_un.setSelected(true);
                 tv_process_already.setSelected(false);
                 tv_process_me.setSelected(false);
                 loadProcessToDo(page);
+                mAdapter = null;
                 break;
             case R.id.tv_process_already:
-                page=1;
-                tab_type=2;
+                page = 1;
+                tab_type = 2;
                 tv_process_un.setSelected(false);
                 tv_process_already.setSelected(true);
                 tv_process_me.setSelected(false);
                 loadProcesstoAlreadyDo(page);
+                mAdapter = null;
                 break;
             case R.id.tv_process_me:
-                page=1;
-                tab_type=3;
+                page = 1;
+                tab_type = 3;
                 tv_process_un.setSelected(false);
                 tv_process_already.setSelected(false);
                 tv_process_me.setSelected(true);
                 loadProcessAlreadyLaunch(page);
+                mAdapter = null;
                 break;
             case R.id.back:
                 onBackPressed();
                 break;
         }
     }
-    
-    
-    private void loadProcessToDo(int page){
+
+
+    private void loadProcessToDo(int page) {
         progressDialog.show();
         String url = Constants.getAppBaseUrl(ct) + "common/desktop/process/toDo.action";
         Map<String, Object> params = new HashMap<>();
-       // count=10&page=1&limit=25
-        params.put("count","10");
-        params.put("page",page);
+        // count=10&page=1&limit=25
+        params.put("count", "1000");
+        params.put("page", page);
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
-        ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, SUSSCESS_un, null, null, "get"); 
-        
+        ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, SUSSCESS_un, null, null, "get");
+
     }
-    
 
-    private void loadProcesstoAlreadyDo(int page){
+
+    private void loadProcesstoAlreadyDo(int page) {
         progressDialog.show();
         String url = Constants.getAppBaseUrl(ct) + "common/desktop/process/alreadyDo.action";
         Map<String, Object> params = new HashMap<>();
-        params.put("count","10");
-        params.put("page",page);
+        params.put("count", "1000");
+        params.put("page", page);
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, SUSSCESS_already, null, null, "get");
 
     }
 
-    private void loadProcessAlreadyLaunch(int page){
+    private void loadProcessAlreadyLaunch(int page) {
         progressDialog.show();
         String url = Constants.getAppBaseUrl(ct) + "common/desktop/process/alreadyLaunch.action";
         Map<String, Object> params = new HashMap<>();
-        params.put("count","10");
-        params.put("page",page);
+        params.put("count", "1000");
+        params.put("page", page);
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, SUSSCESS_me, null, null, "get");
@@ -293,21 +326,21 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
     }
 
 
-    public class ProcessAdapter extends BaseAdapter{
-        
+    public class ProcessAdapter extends BaseAdapter implements Filterable {
+
         private Context ct;
         private LayoutInflater inflater;
         private JSONArray jsonArray;
-        
-        ProcessAdapter(Context ct,JSONArray array){
-            this.ct=ct;
-            this.jsonArray=array;
-            this.inflater=LayoutInflater.from(ct);
+
+        ProcessAdapter(Context ct, JSONArray array) {
+            this.ct = ct;
+            this.jsonArray = array;
+            this.inflater = LayoutInflater.from(ct);
         }
 
         @Override
         public int getCount() {
-            return jsonArray==null?0:jsonArray.size();
+            return jsonArray == null ? 0 : jsonArray.size();
         }
 
         @Override
@@ -322,52 +355,52 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
 
         @Override
         public View getView(int position, View convertView, ViewGroup parent) {
-            ViewModel model=null;
-            if(convertView==null){
-                convertView= inflater.inflate(R.layout.item_process_state,parent,false);
-                model=new ViewModel();
-                model.name= (TextView) convertView.findViewById(R.id.tv_name);
-                model.date= (TextView) convertView.findViewById(R.id.tv_date);
-                model.status= (TextView) convertView.findViewById(R.id.tv_status);
+            ViewModel model = null;
+            if (convertView == null) {
+                convertView = inflater.inflate(R.layout.item_process_state, parent, false);
+                model = new ViewModel();
+                model.name = (TextView) convertView.findViewById(R.id.tv_name);
+                model.date = (TextView) convertView.findViewById(R.id.tv_date);
+                model.status = (TextView) convertView.findViewById(R.id.tv_status);
                 convertView.setTag(model);
-            }else{
-                model= (ViewModel) convertView.getTag();
+            } else {
+                model = (ViewModel) convertView.getTag();
             }
-            
-            switch (tab_type){
+
+            switch (tab_type) {
                 case 1:
                     //JP_LAUNCHERNAME
                     //JP_NAME
                     //JP_STATUS
                     //JP_LAUNCHTIME
-                    String jp_launchername=jsonArray.getJSONObject(position).getString("JP_LAUNCHERNAME");
-                    String jp_name=jsonArray.getJSONObject(position).getString("JP_NAME");
-                    String JP_NODEID=jsonArray.getJSONObject(position).getString("JP_NODEID");
-                    if (!StringUtils.isEmpty(jp_name))jp_name=jp_name.replace("流程","");
-                    long jp_launchtime=jsonArray.getJSONObject(position).getLong("JP_LAUNCHTIME");
-                    String jp_status=jsonArray.getJSONObject(position).getString("JP_STATUS");
-
-                    model.name.setText(jp_launchername+"的"+jp_name);
-                    model.date.setText(DateFormatUtil.getStrDate4Date(new Date(jp_launchtime),"yyyy-MM-dd HH:mm"));
+                    String jp_launchername = jsonArray.getJSONObject(position).getString("JP_LAUNCHERNAME");
+                    String jp_name = jsonArray.getJSONObject(position).getString("JP_NAME");
+                    String JP_NODEID = jsonArray.getJSONObject(position).getString("JP_NODEID");
+                    if (!StringUtils.isEmpty(jp_name)) jp_name = jp_name.replace("流程", "");
+                    long jp_launchtime = jsonArray.getJSONObject(position).getLong("JP_LAUNCHTIME");
+                    String jp_status = jsonArray.getJSONObject(position).getString("JP_STATUS");
+
+                    model.name.setText(jp_launchername + "的" + jp_name);
+                    model.date.setText(DateFormatUtil.getStrDate4Date(new Date(jp_launchtime), "yyyy-MM-dd HH:mm"));
                     model.status.setText(jp_status);
-                    model.JP_NODEID=JP_NODEID;
+                    model.JP_NODEID = JP_NODEID;
                     break;
                 case 2:
                     //JN_DEALMANNAME
                     //JP_NAME
                     //JN_DEALTIME
                     //JN_DEALRESULT
-                    String jn_dealmanname=jsonArray.getJSONObject(position).getString("JN_DEALMANNAME");
-                    jp_name=jsonArray.getJSONObject(position).getString("JP_NAME");
-                    JP_NODEID=jsonArray.getJSONObject(position).getString("JP_NODEID");
-                    if (!StringUtils.isEmpty(jp_name))jp_name=jp_name.replace("流程","");
-                    String jn_dealtime=jsonArray.getJSONObject(position).getString("JN_DEALTIME");
-                    String jn_dealresult=jsonArray.getJSONObject(position).getString("JN_DEALRESULT");
-
-                    model.name.setText(jn_dealmanname+"的"+jp_name);
+                    String jn_dealmanname = jsonArray.getJSONObject(position).getString("JN_DEALMANNAME");
+                    jp_name = jsonArray.getJSONObject(position).getString("JP_NAME");
+                    JP_NODEID = jsonArray.getJSONObject(position).getString("JP_NODEID");
+                    if (!StringUtils.isEmpty(jp_name)) jp_name = jp_name.replace("流程", "");
+                    String jn_dealtime = jsonArray.getJSONObject(position).getString("JN_DEALTIME");//JP_LAUNCHTIME
+                    String jn_dealresult = jsonArray.getJSONObject(position).getString("JN_DEALRESULT");
+
+                    model.name.setText(jn_dealmanname + "的" + jp_name);
                     model.date.setText(jn_dealtime);
                     model.status.setText(jn_dealresult);
-                    model.JP_NODEID=JP_NODEID;
+                    model.JP_NODEID = JP_NODEID;
                     break;
                 case 3:
                     //JP_CODEVALUE
@@ -375,30 +408,103 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     //JP_STATUS
                     //JP_LAUNCHTIME 
                     //JP_NODEDEALMANNAME
-                    long time=jsonArray.getJSONObject(position).getLong("JP_LAUNCHTIME");
-                    String name=jsonArray.getJSONObject(position).getString("JP_NAME");
-                    String code=jsonArray.getJSONObject(position).getString("JP_CODEVALUE");
-                    String status=jsonArray.getJSONObject(position).getString("JP_STATUS");
-                    String nodename=jsonArray.getJSONObject(position).getString("JP_NODEDEALMANNAME");
-                    JP_NODEID=jsonArray.getJSONObject(position).getString("JP_NODEID");
-                    if (!StringUtils.isEmpty(status))
-                    {
-                        if (status.equals("待审批")){
-                            status="等待"+nodename+"审批";
+                    long time = jsonArray.getJSONObject(position).getLong("JP_LAUNCHTIME");
+                    String name = jsonArray.getJSONObject(position).getString("JP_NAME");
+                    String code = jsonArray.getJSONObject(position).getString("JP_CODEVALUE");
+                    String status = jsonArray.getJSONObject(position).getString("JP_STATUS");
+                    String nodename = jsonArray.getJSONObject(position).getString("JP_NODEDEALMANNAME");
+                    JP_NODEID = jsonArray.getJSONObject(position).getString("JP_NODEID");
+                    if (!StringUtils.isEmpty(status)) {
+                        if (status.equals("待审批")) {
+                            status = "等待" + nodename + "审批";
                         }
                     }
-                    if (!StringUtils.isEmpty(name))name=name.substring(0,name.length()-2);
-                    model.name.setText(name+"-"+code);
-                    model.date.setText(DateFormatUtil.getStrDate4Date(new Date(time),"yyyy-MM-dd HH:mm"));
+                    if (!StringUtils.isEmpty(name)) name = name.substring(0, name.length() - 2);
+                    model.name.setText(name + "-" + code);
+                    model.date.setText(DateFormatUtil.getStrDate4Date(new Date(time), "yyyy-MM-dd HH:mm"));
                     model.status.setText(status);
-                    model.JP_NODEID=JP_NODEID;
+                    model.JP_NODEID = JP_NODEID;
                     break;
             }
-            
+
             return convertView;
         }
-        
-        class ViewModel{
+
+        @Override
+        public Filter getFilter() {
+            return new Filter() {
+                @Override
+                protected FilterResults performFiltering(CharSequence constraint) {
+                    FilterResults searchResults = new FilterResults();
+                    if (constraint == null || constraint.length() == 0) {
+                        searchResults.values = array;
+                        searchResults.count = array.size();
+                    } else {
+                        JSONArray newArry = new JSONArray();
+                        for (int i = 0; i < jsonArray.size(); i++) {
+                            JSONObject jsonObject = jsonArray.getJSONObject(i);
+                            Log.i("Arison", "performFiltering:" + jsonObject.toString());
+                            String cu_name = "";
+                            String time = "";
+                            String status = "";
+                            String nodename = "";
+                            String jn_dealresult = "";
+                            String jp_launchername = "";
+                            String code = "";
+                            switch (tab_type) {
+                                case 1:
+                                    cu_name = jsonObject.getString("JP_NAME") == null ? "" : jsonObject.getString("JP_NAME");
+                                    long temp_long = jsonObject.getLong("JP_LAUNCHTIME") == null ? 0 : jsonObject.getLong("JP_LAUNCHTIME");
+                                    time = DateFormatUtil.getStrDate4Date(new Date(temp_long), "yyyy-MM-dd HH:mm");
+                                    status = jsonObject.getString("JP_STATUS") == null ? "" : jsonObject.getString("JP_STATUS");
+                                    jp_launchername = jsonObject.getString("JP_LAUNCHERNAME") == null ? "" : jsonObject.getString("JP_LAUNCHERNAME");
+                                    break;
+                                case 2:
+                                    cu_name = jsonObject.getString("JP_NAME") == null ? "" : jsonObject.getString("JP_NAME");
+                                    time = jsonObject.getString("JN_DEALTIME") == null ? "" : jsonObject.getString("JN_DEALTIME");
+                                    jn_dealresult = jsonObject.getString("JN_DEALRESULT") == null ? "" : jsonObject.getString("JN_DEALRESULT");
+                                    break;
+                                case 3:
+                                    cu_name = jsonObject.getString("JP_NAME") == null ? "" : jsonObject.getString("JP_NAME");
+                                    temp_long = jsonObject.getLong("JP_LAUNCHTIME") == null ? 0 : jsonObject.getLong("JP_LAUNCHTIME");
+                                    time = DateFormatUtil.getStrDate4Date(new Date(temp_long), "yyyy-MM-dd HH:mm");
+                                    status = jsonObject.getString("JP_STATUS") == null ? "" : jsonObject.getString("JP_STATUS");
+                                    nodename = jsonObject.getString("JP_NODEDEALMANNAME") == null ? "" : jsonObject.getString("JP_NODEDEALMANNAME");
+                                    code = jsonObject.getString("JP_CODEVALUE") == null ? "" : jsonObject.getString("JP_CODEVALUE");
+
+                                    break;
+                            }
+                            if (cu_name.contains(constraint)
+                                    || time.contains(constraint)
+                                    || status.contains(constraint)
+                                    || jn_dealresult.contains(constraint)
+                                    || jp_launchername.contains(constraint)
+                                    || nodename.contains(constraint)
+                                    || code.contains(constraint)) {
+                                newArry.add(jsonObject);
+                            }
+                        }
+
+                        searchResults.values = newArry;
+                        searchResults.count = newArry.size();
+                    }
+                    return searchResults;
+                }
+
+                @Override
+                protected void publishResults(CharSequence constraint, FilterResults results) {
+                    //装配数据
+                    jsonArray = (JSONArray) results.values;
+                    if (mAdapter.getCount() == 0) {
+
+                    }
+
+                    notifyDataSetChanged();
+                }
+            };
+        }
+
+        class ViewModel {
             TextView name;
             TextView date;
             TextView status;

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

@@ -241,8 +241,10 @@ public class AddDailyActivity extends BaseActivity{
         Map<String, Object> formStoreMap = new HashMap<>();
         formStoreMap.put("wd_empcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
         formStoreMap.put("wd_comment", text);
+
         formStoreMap.put("wd_plan", plan);
         formStoreMap.put("wd_experience", experience);
+
         String formStore = StringUtils.mapToJson(formStoreMap);
         HashMap<String, Object> params = new HashMap<>();
         params.put("caller", "WorkDaily");

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

@@ -37,10 +37,6 @@ public class AlarmaActivity extends BaseActivity implements View.OnClickListener
     private boolean isAlarm;//判断是否为提醒
     private boolean isAuto;//判断是否为自动
 
-
-    public static String KEY_ALAR_TIME = "KEY_ALAR_TIME";//上班提醒时间
-    public static String KEY_UALAR_TIME = "KEY_UALAR_TIME";//下班时间
-
     private AlarmManage manage;
 
     @Override

+ 12 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ChangeMobileActivity.java

@@ -1,5 +1,6 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -43,6 +44,7 @@ public class ChangeMobileActivity extends BaseActivity {
         @Override
         public void handleMessage(Message msg) {
             String message = msg.getData().getString("result");
+            submiting = false;
             switch (msg.what) {
                 case 0x11:
                     try {
@@ -55,8 +57,11 @@ public class ChangeMobileActivity extends BaseActivity {
                     break;
                 case 0x12:
                     progressDialog.dismiss();
-                    finish();
                     Toast.makeText(ct, R.string.change_mobile_ok, Toast.LENGTH_SHORT).show();
+                    Intent intent = new Intent();
+                    intent.putExtra("isChange", true);
+                    setResult(0x20, intent);
+                    finish();
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     progressDialog.dismiss();
@@ -77,6 +82,8 @@ public class ChangeMobileActivity extends BaseActivity {
         initView();
     }
 
+    private boolean submiting = false;
+
     private void initView() {
         String mac = null;
         if (getIntent() != null)
@@ -94,11 +101,11 @@ public class ChangeMobileActivity extends BaseActivity {
 
             }
         });
-
-
     }
 
     private void validatorMac() {
+        if (submiting) return;
+        submiting = true;
         //获取网络数据
         progressDialog.show();
         String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "common/saveCommon.action";
@@ -108,6 +115,8 @@ public class ChangeMobileActivity extends BaseActivity {
         params.put("mm_emname", MyApplication.getInstance().mLoginUser.getNickName());
         params.put("mm_macaddress", mac_tv.getText().toString());
         params.put("mm_remark", sum_tv.getText().toString());
+        String addr = MyApplication.getInstance().getBdLocationHelper().getAddress();
+        params.put("mm_address", addr);
         params.put("mm_status", "在录入");
         params.put("mm_statuscode", "ENTERING");
         params.put("mm_date", TimeUtils.f_long_2_str(System.currentTimeMillis()));

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

@@ -24,7 +24,6 @@ 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.AppConfig;
 import com.xzjmyk.pm.activity.BdLocationHelper;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
@@ -48,6 +47,7 @@ import com.xzjmyk.pm.activity.util.CalendarUtils;
 import com.xzjmyk.pm.activity.util.MacAndIDUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
+import com.xzjmyk.pm.activity.view.crouton.Style;
 import com.xzjmyk.pm.activity.view.wheel.OASigninPicker;
 
 import java.util.ArrayList;
@@ -107,6 +107,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     private String macAddress;
     private WifiReceiverUtil wifiReceiver;
     private MacAndIDUtil util;
+    private boolean isWork = false;
 
     private Handler handler = new Handler() {
         @Override
@@ -117,9 +118,35 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             switch (msg.what) {
                 case 0x11://获取班次
                     JSONObject jsonObject = parseObject(message);//返回对象
-                    if (jsonObject.containsKey("success")
-//                            && jsonObject.getBoolean("success")
-                            ) {//返回正常
+                    Log.i("handleMessage11: ", jsonObject.toString());
+
+                    if (jsonObject.containsKey("comaddressset") ? jsonObject.getBoolean("comaddressset") : false) {//如果有分配公司
+                        companyDistance = Integer.parseInt(jsonObject.containsKey("distance") ? (StringUtils.isEmpty(jsonObject.getString("distance")) ? "-1" : jsonObject.getString("distance")) : "-1");
+                        companyX = Double.parseDouble(jsonObject.containsKey("longitude") ? (StringUtils.isEmpty(jsonObject.getString("longitude")) ? "0" : jsonObject.getString("longitude")) : "0");
+                        companyY = Double.parseDouble(jsonObject.containsKey("latitude") ? (StringUtils.isEmpty(jsonObject.getString("latitude")) ? "0" : jsonObject.getString("latitude")) : "0");
+                        CommonUtil.setSharedPreferences(ct, "companyX", (float) companyX);
+                        CommonUtil.setSharedPreferences(ct, "companyY", (float) companyY);
+                        unoffice_mm.setText(setDistance());
+                    }
+                    if (jsonObject.getBoolean("success")) {
+                        //有班次
+                        isWork = true;
+                        setDataByDegree(jsonObject);
+                    } else {
+                        //没有班次
+                        isWork = false;
+                        ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_workdata), Style.holoRedLight, 3000);
+                        setDataByNoDegree(jsonObject);
+                    }
+//                     else {
+//                        ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+//                                , Style.holoRedLight, 2000);
+//                    }
+                    loadLog(TimeUtils.s_long_2_str(selectTime));//获取打卡时间
+                  /*
+
+
+                    if (jsonObject.getBoolean("success")) {//返回正常
                         if (jsonObject.containsKey("comaddressset") ? jsonObject.getBoolean("comaddressset") : false) {//如果有分配公司
                             companyDistance = Integer.parseInt(jsonObject.containsKey("distance") ? (StringUtils.isEmpty(jsonObject.getString("distance")) ? "-1" : jsonObject.getString("distance")) : "-1");
                             companyX = Double.parseDouble(jsonObject.containsKey("longitude") ? (StringUtils.isEmpty(jsonObject.getString("longitude")) ? "0" : jsonObject.getString("longitude")) : "0");
@@ -127,14 +154,15 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                             CommonUtil.setSharedPreferences(ct, "companyX", (float) companyX);
                             CommonUtil.setSharedPreferences(ct, "companyY", (float) companyY);
                             unoffice_mm.setText(setDistance());
-                            if (loginNum < 3 && distance > 1000000) {
-                                returnLogin();
-                            }
+//                            if (loginNum < 3 && distance > 1000000) {
+//                                returnLogin();
+//                            }
                         } else {
-                            if (loginNum < 3) {
-                                returnLogin();
-                            }
-                            Crouton.makeText(ct, R.string.not_addr_message);
+//                            if (loginNum < 3) {
+//                                returnLogin();
+//                            }
+                            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+                                    , Style.holoRedLight, 2000);
                         }
                         if (jsonObject.containsKey("wd_degree")) {//当该用户有排班
                             //用户有排班时候
@@ -145,14 +173,15 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                         loadLog(TimeUtils.s_long_2_str(selectTime));//获取打卡时间
                     } else {
                         //如果返回失败
-                        Crouton.makeText(ct, R.string.not_workdata);
-                    }
+                        ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_workdata), Style.holoRedLight, 3000);
+                    }*/
                     break;
                 case 0x12:
+                    Log.i("handleMessage12: ", parseObject(message).toString());
                     if (parseObject(message).containsKey("listdata")) {
                         setDataByLogs(parseObject(message).getJSONArray("listdata"));
                     } else {
-                        Crouton.makeText(ct, R.string.not_workdata);
+                        ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_workdata), Style.holoRedLight, 3000);
                     }
                     break;
                 case 0x13:
@@ -167,7 +196,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                         }, 20000);
                         loadLog(selectTime == 0 ? TimeUtils.s_long_2_str(System.currentTimeMillis()) : TimeUtils.s_long_2_str(selectTime));
                     } else
-                        Crouton.makeText(ct, R.string.signin_error);
+                        ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.signin_error), Style.holoRedLight, 3000);
                     break;
                 case 0x15:
                     JSONObject object = JSON.parseObject(message);
@@ -200,7 +229,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                 default:
                     JsonValidator validator = new JsonValidator();
                     if (validator.validate(message)) {
-                        Crouton.makeText(ct, message);
+                        ViewUtil.ToastMessage(ct,message,Style.holoRedLight,3000);
                     }
                     if (loginNum < 3 && StringUtils.isInclude(message, getResources().getString(R.string.session_out)) || StringUtils.isInclude(message, "程序错误")) {
                         returnLogin();
@@ -254,6 +283,10 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             latitude = poi.location.latitude;
             longitude = poi.location.longitude;
             unoffice_mm.setText(setDistance());
+        } else if (requestCode == 0x18 && resultCode == 0x20) {
+            boolean isChange = data.getBooleanExtra("isChange", false);
+            if (isChange)
+                macError = getResources().getString(R.string.mac_changing);
         }
     }
 
@@ -272,7 +305,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             case R.id.signin_btn:
                 if (isPlay()) {
                     if (!CommonUtil.isNetWorkConnected(ct)) {
-                        Crouton.makeText(ct, "当前网络不可用,请检查网络连接");
+                        Crouton.makeText(ct, "当前网络不可用,请检查网络连接",Style.holoRedLight,2000);
                         return;
                     }
                     //TODO 上传文件
@@ -304,7 +337,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                 startActivityForResult(intent, 0x14);
                 break;
             default:
-                Crouton.makeText(ct, "系统没有找到你的排班信息,请联系管理员处理");
+                Crouton.makeText(ct, "系统没有找到你的排班信息,请联系管理员处理",Style.holoRedLight,2000);
                 ct.finish();
                 break;
         }
@@ -330,8 +363,6 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     private void returnLogin() {
         loginNum++;
         if (loginNum > 1) return;
-        if (AppConfig.DEBUG)
-            Log.i("gongpengming", "重新登陆");
         ViewUtil.ct = ct;
         ViewUtil.LoginERPTask(ct, handler, 0x16);
     }
@@ -374,7 +405,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                     setBaiduLocation();
                 } else {
                     if (resultCode == 62) {
-                        Crouton.makeText(ct, "定位失败,请查看是否开启定位权限", 2000);
+                        Crouton.makeText(ct, "定位失败,请查看是否开启定位权限", Style.holoRedLight,2000);
                     }
                 }
             }
@@ -389,10 +420,8 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             wifiReceiver.regReceiver(ct, new WifiReceiverUtil.OnWifiStatusChangeLinstener() {
                 @Override
                 public void callBack(boolean isOpen) {
-                    Log.i("gongpengming", "isOpen=" + isOpen);
                     if (isOpen) {
                         macAddress = util.getMac(ct);
-                        Log.i("gongpengming", "");
                     }
                 }
             });
@@ -486,32 +515,52 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     //判断是否可以打卡
     private boolean isPlay() {
         if (!CommonUtil.isNetWorkConnected(ct)) {
-            Crouton.makeText(ct, ct.getString(R.string.networks_out));
+            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.networks_out)
+                    , Style.holoRedLight, 2000);
             return false;
         }
         if (ListUtils.isEmpty(getDataByAdapter())) {
-            Crouton.makeText(ct, R.string.not_work_message);
+            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_work_message)
+                    , Style.holoRedLight, 2000);
+            if (companyDistance == -1) {
+                ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+                        , Style.holoRedLight, 2000);
+            }
             return false;
         }
         if (!StringUtils.isEmpty(macError)) {
-            Crouton.makeText(ct, macError);
+            ViewUtil.ToastMessage(ct, macError
+                    , Style.holoRedLight, 2000);
             return false;
         }
         if (isSignining) {
-            Crouton.makeText(ct, R.string.not_signin_agin);
+            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_signin_agin)
+                    , Style.holoRedLight, 2000);
+            return false;
+        }
+        if (!isWork) {
+            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_workdata)
+                    , Style.holoRedLight, 2000);
+            if (companyDistance == -1) {
+                ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+                        , Style.holoRedLight, 2000);
+            }
             return false;
         }
 
         if (companyDistance == -1) {
-            Crouton.makeText(ct, R.string.not_addr_message);
+            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+                    , Style.holoRedLight, 2000);
             return false;
         }
         if (companyDistance < distance) {
-            Crouton.makeText(ct, R.string.too_long);
+            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.too_long)
+                    , Style.holoRedLight, 2000);
             return false;
         }
         if (!isToday) {
-            Crouton.makeText(ct, R.string.not_today);
+            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_today)
+                    , Style.holoRedLight, 2000);
             return false;
         }
         return true;
@@ -596,9 +645,9 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
         if (!StringUtils.isEmpty(b.getWorkTime()) && !b.getWorkTime().equals("00:00"))
             beans.add(b);
         //没有排班情况
-        if (ListUtils.isEmpty(beans)) {
-            Crouton.makeText(ct,R.string.not_work_message);
-        }
+//        if (ListUtils.isEmpty(beans)) {
+//            Crouton.makeText(ct, R.string.not_work_message);
+//        }
         setDataForAdapter(beans);
     }
 
@@ -679,7 +728,8 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
 
     private void setDataForAdapter(List<SigninBean> beans) {
         if (companyDistance == -1 || (companyX == 0 && companyY == 0)) {
-            Crouton.makeText(ct, R.string.not_addr_message);
+            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+                    , Style.holoRedLight, 2000);
         }
         if (adapter == null) {
             adapter = new SigninAdapter(ct);

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

@@ -112,6 +112,7 @@ public class SubscriptionAllFragment extends BaseFragment {
             public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                 if (CommonUtil.isNetWorkConnected(getActivity().getApplicationContext())){
                     mAllSubscriptonKindMessages.clear();
+                    rbPos = 0;
                     sendAllSubscriptionRequest();
                 }else {
                     if (mPullToRefreshListView.isRefreshing()){

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

@@ -193,7 +193,6 @@ public class HttpClient {
             } else
                 buf.deleteCharAt(buf.length() - 1);
         }
-        Log.i("gongpengming", "网址:" + buf.toString());
         HttpGet httpGet = new HttpGet(buf.toString());
         httpclient.getParams().setParameter(
                 CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8");

+ 59 - 22
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java

@@ -34,6 +34,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.tool.ThreadPool;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
+import com.xzjmyk.pm.activity.view.crouton.Style;
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -92,19 +93,25 @@ public class ViewUtil {
 
     private static String oldMsg;
     private static long time;
+    private static String oldMsg2;
+    private static long time2;
+
+
     /**
      * 弹出Toast消息
      * 间隔时间不超过三秒的重复信息不会反复弹出
+     *
      * @param msg
+     * @author RaoMeng
      */
     public static void ToastMessage(Context cont, String msg) {
         if (cont instanceof Activity) {
-            if (!msg.equals(oldMsg)){
-                Crouton.makeText((Activity) cont, msg, cont.getResources().getColor(R.color.light_green), 3000).show();
+            if (!msg.equals(oldMsg)) {
+                Crouton.makeText((Activity) cont, msg, Style.holoGreenLight, 3000).show();
                 time = System.currentTimeMillis();
             } else {
-                if ((System.currentTimeMillis() - time) > 3000){
-                    Crouton.makeText((Activity) cont, msg, cont.getResources().getColor(R.color.light_green), 3000).show();
+                if ((System.currentTimeMillis() - time) > 3000) {
+                    Crouton.makeText((Activity) cont, msg, Style.holoGreenLight, 3000).show();
                     time = System.currentTimeMillis();
                 }
             }
@@ -115,6 +122,31 @@ public class ViewUtil {
 
     }
 
+    /**
+     * 弹出Toast消息
+     * 间隔时间不超过三秒的重复信息不会反复弹出
+     *
+     * @param msg
+     * @author RaoMeng
+     */
+    public static void ToastMessage(Context cont, String msg, int toastColor, int toastTime) {
+        if (cont instanceof Activity) {
+            if (!msg.equals(oldMsg2)) {
+                Crouton.makeText((Activity) cont, msg, toastColor, toastTime).show();
+                time2 = System.currentTimeMillis();
+            } else {
+                if ((System.currentTimeMillis() - time2) > 3000) {
+                    Crouton.makeText((Activity) cont, msg, toastColor, toastTime).show();
+                    time2 = System.currentTimeMillis();
+                }
+            }
+            oldMsg2 = msg;
+        } else {
+            Toast.makeText(cont, msg, Toast.LENGTH_SHORT).show();
+        }
+
+    }
+
     public static void ShowMessageTitle(Context ct, String msg) {
         new MaterialDialog.Builder(ct).title("系统提示").content(msg)
                 .positiveText("关闭").autoDismiss(false)
@@ -156,8 +188,8 @@ public class ViewUtil {
                 result = hClient.sendPostRequest(url, params);
             }
         } catch (Exception e) {
-            CommonUtil.getExceptionStack(ct,e,true);
-            Log.i("HttpResquest", "getDataFromServer"+CommonUtil.getExceptionStack(ct,e,true));
+            CommonUtil.getExceptionStack(ct, e, true);
+            Log.i("HttpResquest", "getDataFromServer" + CommonUtil.getExceptionStack(ct, e, true));
             handler.sendEmptyMessage(Constants.SocketTimeoutException);
         }
         return result;
@@ -275,7 +307,7 @@ public class ViewUtil {
                 Log.i("company", "切换公司走缓存 手机号:" + user_phone + "密码:" + user_password);
                 showDialogCompany(CommonUtil.getSharedPreferences(ct, "loginJson"), user_phone, user_password);
             } else {
-                ToastMessage(ct, "缓存没有公司信息,请重新登录!");
+                ToastMessage(ct, "缓存没有公司信息,请重新登录!", Style.holoGreenLight, 3000);
             }
 
         } else {
@@ -338,10 +370,10 @@ public class ViewUtil {
                             ChangeStatusERP(msg.getData().getString("result"));
                         } else {
                             String reason = JSON.parseObject(result).getString("reason");
-                            ToastMessage(ct, reason);
+                            ToastMessage(ct, reason, Style.holoGreenLight, 3000);
                         }
                     } else {
-                        ToastMessage(ct, "接口数据非法!");
+                        ToastMessage(ct, "接口数据非法!", Style.holoRedLight, 3000);
                     }
                     break;
                 case Constants.SUCCESS_B2B:
@@ -351,14 +383,19 @@ public class ViewUtil {
                     if (mdProcessDialog != null && mdProcessDialog.isShowing()) {
                         mdProcessDialog.dismiss();
                     }
-                    ToastMessage(MyApplication.getInstance(), "网络超时响应!");
+                    ToastMessage(MyApplication.getInstance(), "网络超时响应!", Style.holoRedLight, 3000);
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     if (new JsonValidator().validate(msg.getData().getString("result"))) {
                         ToastMessage(MyApplication.getInstance(),
-                                JSON.parseObject(msg.getData().getString("result")).getString("exception"));
+                                JSON.parseObject(msg.getData().getString("result")).getString("exception"), Style.holoRedLight, 3000);
                     } else {
-                        ToastMessage(MyApplication.getInstance(), "系统内部错误!");
+                        
+                        boolean isNetHas = CommonUtil.isNetWorkConnected(ct);
+                        if (isNetHas)
+                            ToastMessage(MyApplication.getInstance(), "系统内部错误!", Style.holoRedLight, 3000);
+                        else
+                            ToastMessage(MyApplication.getInstance(), MyApplication.getInstance().getResources().getString(R.string.networks_out));
                     }
                     break;
                 default:
@@ -395,7 +432,7 @@ public class ViewUtil {
             CommonUtil.setSharedPreferences(ct, "erp_uu", String.valueOf(dataMap.get("uu")));
             CommonUtil.setSharedPreferences(ct, "erp_masterId", erp_masterId);
             CommonUtil.setSharedPreferences(ct, "erp_login", true);
-            CommonUtil.setSharedPreferences(ct,"erp_emname",String.valueOf(dataMap.get("emname")));
+            CommonUtil.setSharedPreferences(ct, "erp_emname", String.valueOf(dataMap.get("emname")));
         }
         if (erp_phone != null) {
             Log.i("login_status", "ChangeStatusERP:" + erp_phone);
@@ -461,17 +498,17 @@ public class ViewUtil {
     private static void loginERPItemDialog(final String phone,
                                            final String password) {
         String[] items = new String[erpEntities.size()];
-        int select=0;
+        int select = 0;
         for (int j = 0; j < erpEntities.size(); j++) {
             items[j] = erpEntities.get(j).getName();
         }
         if (CommonUtil.isDialogShowing(loginERPDialog)) {
             return;
         } else {
-            if (loginERPDialog!=null) {
-             select= loginERPDialog.getSelectedIndex();
+            if (loginERPDialog != null) {
+                select = loginERPDialog.getSelectedIndex();
             }
-         
+
             loginERPDialog = new MaterialDialog.Builder(ct)
                     .title("选择登录的UAS账套")
                     .items(items)
@@ -480,7 +517,7 @@ public class ViewUtil {
                                 @Override
                                 public boolean onSelection(MaterialDialog dialog,
                                                            View view, int which, CharSequence text) {
-                                    LogUtil.d("onSelection:"+which);
+                                    LogUtil.d("onSelection:" + which);
                                     if (!StringUtils.isEmpty(text.toString())) {
 //                                        for (int j2 = 0; j2 < erpEntities.size(); j2++) {
 //                                            if (text.toString().equals(
@@ -523,12 +560,12 @@ public class ViewUtil {
         String phone = msg.getData().getString("phone");
         String password = msg.getData().getString("password");
         Log.i("Login", "login sucess:" + json);
-        if(new JsonValidator().validate(json)){
+        if (new JsonValidator().validate(json)) {
             showDialogCompany(json, phone, password);
-        }else{
-            ToastMessage(ct,"接口数据非法!");
+        } else {
+            ToastMessage(ct, "接口数据非法!", Style.holoRedLight, 3000);
         }
-        
+
     }
 
     private static void showDialogCompany(String json, String phone, String password) {

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

@@ -40,6 +40,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.afollestad.materialdialogs.MaterialDialog;
 import com.andreabaccega.widget.FormEditText;
 import com.nostra13.universalimageloader.core.DisplayImageOptions;
 import com.nostra13.universalimageloader.core.assist.ImageScaleType;
@@ -1164,4 +1165,28 @@ public class CommonUtil {
         return resultList;
     }
 
+
+    /**
+      * @desc:打电话确认框
+      * @author:Arison on 2016/11/3
+      */
+    public static  void phoneAction(final Context mContext,final String phone) {
+        MaterialDialog dialog = new MaterialDialog.Builder(mContext).title("确认是否拨打电话").content("手机号码:" + phone)
+                .positiveText("拨打").negativeText("取消").autoDismiss(false).callback(new MaterialDialog.ButtonCallback() {
+                    @Override
+                    public void onPositive(MaterialDialog dialog) {
+                        // 用intent启动拨打电话
+                        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone));
+                        mContext.startActivity(intent);
+                    }
+
+                    @Override
+                    public void onNegative(MaterialDialog dialog) {
+                        super.onNegative(dialog);
+                        dialog.dismiss();
+                    }
+                }).build();
+
+        dialog.show();
+    }
 }

+ 153 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmManage.java

@@ -4,12 +4,12 @@ import android.app.AlarmManager;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
-import android.util.Log;
-import android.widget.Toast;
 
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.bean.oa.SigninBean;
 import com.xzjmyk.pm.activity.db.dao.SigninDao;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 
@@ -33,11 +33,18 @@ public class AlarmManage {
     public void setSigninAlarm(Context ct) {
         boolean isAlarm = CommonUtil.getSharedPreferencesBoolean(ct, ALARMA_CLICK, false);//是否自动打卡
         boolean isAuto = CommonUtil.getSharedPreferencesBoolean(ct, AUTO_SIGNIN, false);//是否提醒
+        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
+        if (ListUtils.isEmpty(beans)) return;
+        if (isAuto)
+            setAutoSignin(ct, beans);
+        else if (isAlarm) {//当不自动打卡只是签到时候
+            setAlarm(ct, beans);
+        }
+        if (true) return;
         if (!isAlarm && !isAuto) {
             unArmmanager(ct);
             return;
         }
-        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
         int u = CommonUtil.getSharedPreferencesInt(ct, "ALARM_WORK_TIME", 5);//上班提前xx分钟
         int d = CommonUtil.getSharedPreferencesInt(ct, "ALARM_OFFWORK_TIME", 5);//下班延迟xx分钟
         boolean isToday = false;
@@ -87,17 +94,157 @@ public class AlarmManage {
         }
     }
 
+    private void setAlarm(Context ct, List<SigninBean> beans) {
+        for (SigninBean e : beans) {
+            boolean isOK = alarmBySigninBean(ct, e);
+            if (isOK) {//不在该班次
+                break;
+            }
+        }
+        //TODO 当天时间没有   先不理
+    }
+
+    private void setAutoSignin(Context ct, List<SigninBean> beans) {
+        long time = -1;
+        for (SigninBean e : beans) {
+            time = autoBySigninBean(e);
+            if (time != -1) {//不在该班次
+                setNextAlarm(ct, AUTO_SIGNIN_ACTION, time);
+                break;
+            }
+        }
+        //TODO 当天时间没有   先不理
+    }
+
+    private boolean alarmBySigninBean(Context ct, SigninBean e) {
+        long workTime = 0;
+        int u = CommonUtil.getSharedPreferencesInt(ct, "ALARM_WORK_TIME", 5);//上班提前xx分钟
+        workTime = getTimeByHHmm(e.getWorkTime()) - u * 60 * 1000;
+        if (System.currentTimeMillis() < workTime) {//符合提醒时间
+            setNextAlarm(MyApplication.getInstance(), WORK_ALARM_ACTION, workTime);
+            return true;
+        }
+        int d = CommonUtil.getSharedPreferencesInt(ct, "ALARM_OFFWORK_TIME", 5);//下班延迟xx分钟
+        workTime = getTimeByHHmm(e.getOffTime()) + d * 60 * 1000;
+        if (System.currentTimeMillis() < workTime) {
+            setNextAlarm(MyApplication.getInstance(), OFFWORK_ALARM_ACTION, workTime);
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 只计算当天不计算第二天,只计算自动打卡
+     *
+     * @param e
+     * @return
+     */
+    private long autoBySigninBean(SigninBean e) {
+        long time = -1;
+        long workTime = 0;
+        //***************先上班后下班***************************
+        //***************上班开始***************************
+        /*x:当前时间  自动打卡满足   上班前10分钟 < x < 上班时间  */
+        //当前时间处于上班前时间
+        if (!isWorked(true, e)) {
+            //递归判断   10分钟  每2分钟进行判断、
+            time = recursiveByWork(workTime);
+            if (time != 1) {//符合自动打卡
+                return time;
+            } else {//不符合  下一分自动打卡
+                return System.currentTimeMillis() + 1000 * 60;
+            }
+        }
+        workTime = getTimeByHHmm(e.getOffTime());
+        //当前时间处于下班前时间
+        if (!isWorked(true, e)) {
+            //递归判断   10分钟  每2分钟进行判断、
+            time = recursiveByOffic(2, workTime);
+            if (time != 0) {//符合自动打卡
+                return time;
+            } else {//不符合  下一秒自动打卡
+                return System.currentTimeMillis() + 1000 * 5 * 60;
+            }
+        }
+        //当前时间不处于该班次可打卡范围
+        return -1;
+    }
+
+
+    /**
+     * 判断是否在可打卡范围   1.时间提醒之前  2.没有签成功
+     *
+     * @param isWork
+     * @param e
+     * @return
+     */
+    private boolean isWorked(boolean isWork, SigninBean e) {
+        long workTime;
+        if (isWork) {//上班
+            workTime = getTimeByHHmm(e.getWorkTime());
+            if (System.currentTimeMillis() < workTime && StringUtils.isEmpty(e.getWorkSignin())) {
+                return false;
+            } else {
+                return true;
+            }
+        } else {//下班
+            workTime = getTimeByHHmm(e.getOffSignin());
+            if (System.currentTimeMillis() < workTime && StringUtils.isEmpty(e.getOffSignin())) {
+                return false;
+            } else {
+                return true;
+            }
+        }
+    }
+
+    /**
+     * 判断当前时间的前10秒
+     *
+     * @param workTime 当天上班时间戳
+     * @return
+     */
+    private long recursiveByWork(long workTime) {
+        int[] times = {10, 8, 6, 4, 2, 0};
+        for (int e : times) {
+            long time = workTime - e * 1000 * 60;
+            if (System.currentTimeMillis() < time) {//当前时间小于 该时间点(上班前 2、4、6、8、10 分)
+                return time;
+            }
+        }
+        return -1;
+
+    }
+
+    /**
+     * 递归判断当前时间的前10秒
+     *
+     * @param times    2、4、6、8、10
+     * @param workTime 当天下班时间戳
+     * @return
+     */
+    private long recursiveByOffic(int times, long workTime) {
+        if (times == 10) return 0;
+        long time = workTime + times * 1000 * 60;
+        if (System.currentTimeMillis() < time) {//当前时间小于 该时间点(上班前 2、4、6、8、10 分)
+            return time;
+        } else {
+            recursiveByOffic(times + 2, workTime);
+        }
+        return 0;
+    }
+
     private long getTimeByHHmm(String time) {
         String che = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time + ":00";//当天下班时间
-        Log.i("gongpengming", "che=" + che);
         return TimeUtils.f_str_2_long(che);
     }
 
 
     private void setNextAlarm(Context ct, String action, long time) {
-        String str = TimeUtils.f_long_2_str(time);
         if (time < System.currentTimeMillis()) return;
-        Toast.makeText(ct, "提醒时间为:" + str, Toast.LENGTH_SHORT).show();
+//        String str = TimeUtils.f_long_2_str(time);
+//        if (AppConfig.DEBUG)
+//            Toast.makeText(ct, "提醒时间为:" + str, Toast.LENGTH_SHORT).show();
         Intent intent = new Intent(ct, AlarmReceiver.class);
         intent.setAction(StringUtils.isEmpty(action) ? WORK_ALARM_ACTION : action);
         AlarmManager alarm = (AlarmManager) ct.getSystemService(ALARM_SERVICE);

+ 59 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmReceiver.java

@@ -6,12 +6,11 @@ import android.content.Intent;
 import android.database.SQLException;
 import android.os.Handler;
 import android.os.Message;
-import android.util.Log;
-import android.widget.Toast;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 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;
 import com.xzjmyk.pm.activity.db.dao.SigninDao;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SigninActivity;
@@ -28,6 +27,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import static com.alibaba.fastjson.JSON.parseObject;
+import static com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.ct;
+
 
 /**
  * Created by pengminggong on 2016/10/26.
@@ -114,8 +116,6 @@ public class AlarmReceiver extends BroadcastReceiver {
             form.put("cl_location", helper.getName());
             double companyX = CommonUtil.getSharedPreferencesfloat(ct, "companyX", 0);
             double companyY = CommonUtil.getSharedPreferencesfloat(ct, "companyY", 0);
-            Log.i("gongpengming", "companyX=" + companyX);
-            Log.i("gongpengming", "companyY=" + companyY);
             double latitude = helper.getLatitude();
             double longitude = helper.getLongitude();
             String distance = BaiduMapUtil.getInstence().getDistance(companyX, companyY, latitude, longitude);
@@ -135,16 +135,69 @@ public class AlarmReceiver extends BroadcastReceiver {
         ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x11, null, null, "get");
     }
 
+    //获取打卡记录 date:yyyy-MM-dd
+    private void loadLog() {
+        String date = TimeUtils.s_long_2_str(System.currentTimeMillis());
+        //获取网络数据
+        String url = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl") + "mobile/oa/workdata.action";
+        Map<String, Object> param = new HashMap<>();
+        String code = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+        param.put("currentMaster", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master"));
+        param.put("page", 1);
+        param.put("pageSize", 1000);
+        param.put("condition", "cl_emcode='" + code + "' and to_char(cl_time,'yyyy-MM-dd')='" + date + "'");
+        param.put("caller", "CardLog");
+        param.put("emcode", code);
+        param.put("master", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master"));
+        param.put("sessionUser", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username"));
+        param.put("sessionId", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "sessionId"));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(MyApplication.getInstance(), url, param, handler, headers, 0x12, null, null, "get");
+    }
+
+
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
+            String message = msg.getData().getString("result");
             switch (msg.what) {
                 case 0x11:
-                    Toast.makeText(MyApplication.getInstance(), R.string.auto_signin, Toast.LENGTH_SHORT).show();
+                    loadLog();
+//                    Toast.makeText(MyApplication.getInstance(), R.string.auto_signin, Toast.LENGTH_SHORT).show();
+                    NotificationManage notificationManage = new NotificationManage();
+                    notificationManage.sendNotification(MyApplication.getInstance(), "系统已为你自动打卡成功", SigninActivity.class);
+                    break;
+                case 0x12:
+                    if (parseObject(message).containsKey("listdata")) {
+                        setDataByLogs(parseObject(message).getJSONArray("listdata"));
+                    }
                     break;
                 default:
                     break;
             }
         }
     };
+
+    //处理数据,获取到用户签到列表
+    public void setDataByLogs(JSONArray array) {
+        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
+        if (ListUtils.isEmpty(beans)) return;
+        //取最后一个
+        JSONObject object = array.getJSONObject(array.size() - 1);
+        String time = object.getString("cl_time");
+        if (!StringUtils.isEmpty(time)) {
+            time = clearDay(time);
+            for (SigninBean e : beans) {
+
+            }
+        } else {
+
+        }
+    }
+
+    //获取打卡时间列表去除年月日和秒
+    private String clearDay(String time) {
+        return TimeUtils.long2str(TimeUtils.f_str_2_long(time), "HH:mm");
+    }
 }

+ 3 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -50,6 +50,7 @@ import com.xzjmyk.pm.activity.ui.erp.view.SelectPicPopupWindow;
 import com.xzjmyk.pm.activity.ui.tool.SingleImagePreviewActivity;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
+import com.xzjmyk.pm.activity.view.crouton.Style;
 
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -154,7 +155,7 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
                     Map<String, Object> results = FlexJsonUtil.fromJson(msg
                             .getData().getString("result"));
                     if ((Boolean) results.get("success")) {
-                        com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.ToastMessage(ct, "账套切换成功!");
+                        com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.ToastMessage(ct, "账套切换成功!", Style.holoGreenLight, 3000);
                         String sessionId = results.get("sessionId").toString();
                         String master = msg.getData().getString("master");
                         String master_ch = msg.getData().getString("master_ch");
@@ -167,7 +168,7 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
                         intent.putExtra("falg", "home");
                         LocalBroadcastManager.getInstance(ct).sendBroadcast(intent);
                     } else {
-                        com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.ToastMessage(ct, "账套切换失败!");
+                        com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.ToastMessage(ct, "账套切换失败!", Style.holoRedLight, 3000);
                     }
                     break;
             }

+ 8 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -752,11 +752,11 @@ public class MessageFragment extends EasyFragment {
                     if (num > 0) {
                         num_tv.setText(num + "");
                         num_tv.setVisibility(View.VISIBLE);
-                        content_tv.setText("您有" + num + "条订阅消息");
+                        content_tv.setText("您有新的订阅消息!");
                         time_tv.setText("刚刚");
                     } else {
                         num_tv.setVisibility(View.GONE);
-                        content_tv.setText("您暂无订阅消息");
+                        content_tv.setText("您暂无新的订阅消息!");
                     }
                     break;
                 case Constants.SUCCESS_LOGIN://公告
@@ -786,11 +786,11 @@ public class MessageFragment extends EasyFragment {
                     if (TASK_count > 0) {
                         task_num_tv.setText(TASK_count + "");
                         task_num_tv.setVisibility(View.VISIBLE);
-                        task_content_tv.setText("您有" + TASK_count + "条任务");
+                        task_content_tv.setText("您有新的任务!");
                         task_time_tv.setText("刚刚");
                     } else {
                         task_num_tv.setVisibility(View.GONE);
-                        task_content_tv.setText("您暂无任务");
+                        task_content_tv.setText("您暂无新的任务!");
                     }
                     break;
                 case DAIBAN_MSG:
@@ -798,11 +798,11 @@ public class MessageFragment extends EasyFragment {
                     if (DAIBAN_count > 0) {
                         schedule_num_tv.setText(DAIBAN_count + "");
                         schedule_num_tv.setVisibility(View.VISIBLE);
-                        schedule_content_tv.setText("您有" + DAIBAN_count + "条待审批流程");
+                        schedule_content_tv.setText("您有新的待审批流程!");
                         schedule_time_tv.setText("刚刚");
                     } else {
                         schedule_num_tv.setVisibility(View.GONE);
-                        schedule_content_tv.setText("您暂无审批流程");
+                        schedule_content_tv.setText("您暂无新的审批流程!");
                     }
                     break;
             }
@@ -815,11 +815,11 @@ public class MessageFragment extends EasyFragment {
         if (count > 0) {
             notice_num_tv.setText(count + "");
             notice_num_tv.setVisibility(View.VISIBLE);
-            notice_content_tv.setText("您有" + count + "条通知");
+            notice_content_tv.setText("您有新的通知公告!");
             notice_time_tv.setText("刚刚");
         } else {
             notice_num_tv.setVisibility(View.GONE);
-            notice_content_tv.setText("您暂无通知");
+            notice_content_tv.setText("您暂无新的通知公告!");
         }
     }
 

+ 79 - 119
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/SubscriptionActivity.java

@@ -6,7 +6,6 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -15,7 +14,6 @@ import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.ImageView;
 import android.widget.ListView;
-import android.widget.PopupWindow;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
@@ -31,9 +29,8 @@ import com.xzjmyk.pm.activity.ui.erp.activity.SubcribeManageActivity;
 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.tool.ThreadPool;
-import com.xzjmyk.pm.activity.util.DisplayUtil;
 import com.xzjmyk.pm.activity.util.LoadLocalImageUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
@@ -51,7 +48,6 @@ import java.util.Map;
  */
 public class SubscriptionActivity extends BaseActivity {
     private static final int LOAD_NET = 0x15;
-    private int requestCode = 0x01;
     private String emCode;
     private String baseUrl;
     private PullToRefreshListView listView;
@@ -69,7 +65,6 @@ public class SubscriptionActivity extends BaseActivity {
             R.drawable.list_07, R.drawable.list_08, R.drawable.list_09,
             R.drawable.list_10, R.drawable.list_11, R.drawable.list_12,
             R.drawable.list_13, R.drawable.list_14, R.drawable.list_15
-
     };
     private int[] srcsBig = {
             R.drawable.uu_dy_image1, R.drawable.uu_dy_image2, R.drawable.uu_dy_image3, R.drawable.uu_dy_image4, R.drawable.uu_dy_image5, R.drawable.uu_dy_image6, R.drawable.uu_dy_image7
@@ -84,7 +79,6 @@ public class SubscriptionActivity extends BaseActivity {
             switch (msg.what) {
                 case LOAD_NET:
                     String message = msg.getData().getString("result");
-                    Log.e("subscribeMsg", message);
                     if (message != null && JSON.parseObject(message).containsKey("data")) {
                         String str = JSON.parseObject(message).getJSONArray("data").toJSONString();
                         SubscriptionMessages = JSON.parseArray(str, SubscriptionMessage.class);
@@ -93,14 +87,6 @@ public class SubscriptionActivity extends BaseActivity {
                         ToastUtil.showToast(ct, message == null ? "" : message);
                     }
                     break;
-                case RESULT_OK:
-                    if (adapter == null) {
-                        adapter = new SubscriptionAdapter();
-                        listView.getRefreshableView().setAdapter(adapter);
-                    } else {
-                        notifyAdapter();
-                    }
-                    break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     ToastUtil.showToast(ct, "系统内部错误");
                     break;
@@ -111,7 +97,6 @@ public class SubscriptionActivity extends BaseActivity {
         }
     };
 
-    private PopupWindow mSubscribeWindow;
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
@@ -122,43 +107,6 @@ public class SubscriptionActivity extends BaseActivity {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
-            /*case R.id.subscribe_add:
-                WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
-
-                View view = View.inflate(SubscriptionActivity.this, R.layout.popupwindow_subscribe_menu, null);
-                View parentView = View.inflate(SubscriptionActivity.this, R.layout.activity_subscription, null);
-                Button mySubscribeBtn = (Button) view.findViewById(R.id.subscribe_menu_my);
-                Button addSubscribeBtn = (Button) view.findViewById(R.id.subscribe_menu_add);
-
-                mySubscribeBtn.setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        Toast.makeText(SubscriptionActivity.this, "我的订阅", Toast.LENGTH_SHORT).show();
-                        closeListPopupWindow();
-                    }
-                });
-
-                addSubscribeBtn.setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        Toast.makeText(SubscriptionActivity.this, "新增订阅", Toast.LENGTH_SHORT).show();
-                        closeListPopupWindow();
-                    }
-                });
-
-                mSubscribeWindow = new PopupWindow(view, LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT,true);
-                mSubscribeWindow.showAsDropDown(getWindow().findViewById(item.getItemId()),windowManager.getDefaultDisplay().getWidth(),0);
-                DisplayUtil.backgroundAlpha(SubscriptionActivity.this, 0.5f);
-
-                mSubscribeWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
-                    @Override
-                    public void onDismiss() {
-                        closeListPopupWindow();
-                    }
-                });
-
-                break;*/
-
             case R.id.subscribe_manage:
                 Intent intent = new Intent();
                 intent.setClass(this, SubcribeManageActivity.class);
@@ -177,16 +125,6 @@ public class SubscriptionActivity extends BaseActivity {
         finish();
     }
 
-    private void closeListPopupWindow() {
-        if (mSubscribeWindow != null) {
-            mSubscribeWindow.dismiss();
-            mSubscribeWindow = null;
-            DisplayUtil.backgroundAlpha(SubscriptionActivity.this, 1f);
-
-        }
-
-    }
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -210,6 +148,7 @@ public class SubscriptionActivity extends BaseActivity {
                 calendar.set(Calendar.MINUTE, 0);
                 calendar.set(Calendar.SECOND, 0);
                 newlong = calendar.getTimeInMillis();
+                oldTime=newlong;
                 loadNetData(newlong);//获取当天的网络数据
             }
 
@@ -223,11 +162,17 @@ public class SubscriptionActivity extends BaseActivity {
                     newlong = oldTime - daylong;
                 }
                 oldTime = newlong;
-                SubscriptionMessages = SubscriptionDao.getInstance().findByDate(newlong, daylong + newlong, emCode);//获取数据库
-                if (SubscriptionMessages == null || SubscriptionMessages.size() <= 0) {//数据库中没有数据
+                SubscriptionMessages = SubscriptionDao.getInstance().findByDate(newlong, (daylong + newlong), emCode);//获取数据库
+                if (ListUtils.isEmpty(SubscriptionMessages)) {//数据库中没有数据
                     loadNetData(newlong);
                 } else {//数据库中有数据
                     loadMore();
+                    listView.postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            listView.onRefreshComplete();
+                        }
+                    }, 500);
                 }
             }
         });
@@ -249,77 +194,80 @@ public class SubscriptionActivity extends BaseActivity {
         } else {//当天数据库没有数据
             loadNetData(newlong);
         }
-
     }
 
     private void refresh() {
-        ThreadPool.getThreadPool().addTask(new Runnable() {
-            @Override
-            public void run() {
-                SortSubsrciprion sortSubsrciprion = null;
-                for (int i = 0; i < SubscriptionMessages.size(); i++) {
-                    sortSubsrciprion = new SortSubsrciprion();
-                    sortSubsrciprion.tiem = Long.parseLong(SubscriptionMessages.get(i).getCREATEDATE_());
-                    sortSubsrciprion.time = TimeUtils.s_long_2_str(sortSubsrciprion.tiem);
-                    sortSubsrciprion.beans = new ArrayList<>();
-                    sortSubsrciprion.beans.add(SubscriptionMessages.get(i));
-                    if (sortSubsrciprions.size() > 0) {
-                        for (int j = 0; j < sortSubsrciprions.size(); j++) {
-                            if (sortSubsrciprion.time.equals(sortSubsrciprions.get(j).time)) {//如果相同
-                                sortSubsrciprions.get(j).beans.add(SubscriptionMessages.get(i));
-                                break;
-                            } else if (j == (sortSubsrciprions.size() - 1)) {//如果到最后一个都不相同
-                                sortSubsrciprions.add(sortSubsrciprion);
-                                break;
-                            }
-                        }
-                    } else {
+        SortSubsrciprion sortSubsrciprion = null;
+        for (int i = 0; i < SubscriptionMessages.size(); i++) {
+            sortSubsrciprion = new SortSubsrciprion();
+            sortSubsrciprion.tiem = Long.parseLong(SubscriptionMessages.get(i).getCREATEDATE_());
+            sortSubsrciprion.time = TimeUtils.s_long_2_str(sortSubsrciprion.tiem);
+            sortSubsrciprion.beans = new ArrayList<>();
+            sortSubsrciprion.beans.add(SubscriptionMessages.get(i));
+            if (sortSubsrciprions.size() > 0) {
+                for (int j = 0; j < sortSubsrciprions.size(); j++) {
+                    if (sortSubsrciprion.time.equals(sortSubsrciprions.get(j).time)) {//如果相同
+                        sortSubsrciprions.get(j).beans.add(SubscriptionMessages.get(i));
+                        break;
+                    } else if (j == (sortSubsrciprions.size() - 1)) {//如果到最后一个都不相同
                         sortSubsrciprions.add(sortSubsrciprion);
+                        break;
                     }
                 }
-                handler.sendEmptyMessage(RESULT_OK);
+            } else {
+                sortSubsrciprions.add(sortSubsrciprion);
             }
-        });
+        }
+        doVistOk();
+    }
 
+    private void doVistOk() {
+        if (adapter == null) {
+            adapter = new SubscriptionAdapter();
+            adapter.setSortSubsrciprions(sortSubsrciprions);
+            listView.getRefreshableView().setAdapter(adapter);
+        } else {
+            notifyAdapter();
+        }
     }
 
     private void loadMore() {
-        ThreadPool.getThreadPool().addTask(new Runnable() {
-            @Override
-            public void run() {
-                if (sortSubsrciprions == null)
-                    sortSubsrciprions = new ArrayList<>();
-                ArrayList<SortSubsrciprion> chche = new ArrayList<>();
-                SortSubsrciprion sortSubsrciprion = null;
-                for (int i = 0; i < SubscriptionMessages.size(); i++) {
-                    sortSubsrciprion = new SortSubsrciprion();
-                    sortSubsrciprion.tiem = Long.parseLong(SubscriptionMessages.get(i).getCREATEDATE_());
-                    sortSubsrciprion.time = TimeUtils.s_long_2_str(sortSubsrciprion.tiem);
-                    sortSubsrciprion.beans = new ArrayList<>();
-                    sortSubsrciprion.beans.add(SubscriptionMessages.get(i));
-                    if (chche.size() > 0) {
-                        for (int j = 0; j < chche.size(); j++) {
-                            if (sortSubsrciprion.time.equals(chche.get(j).time)) {//如果相同
-                                chche.get(j).beans.add(SubscriptionMessages.get(i));
-                                break;
-                            } else if (j == (chche.size() - 1)) {//如果到最后一个都不相同
-                                chche.add(sortSubsrciprion);
-                                break;
-                            }
-                        }
-                    } else {
+        if (sortSubsrciprions == null)
+            sortSubsrciprions = new ArrayList<>();
+        ArrayList<SortSubsrciprion> chche = new ArrayList<>();
+        SortSubsrciprion sortSubsrciprion = null;
+        for (int i = 0; i < SubscriptionMessages.size(); i++) {
+            sortSubsrciprion = new SortSubsrciprion();
+            sortSubsrciprion.tiem = Long.parseLong(SubscriptionMessages.get(i).getCREATEDATE_());
+            sortSubsrciprion.time = TimeUtils.s_long_2_str(sortSubsrciprion.tiem);
+            sortSubsrciprion.beans = new ArrayList<>();
+            sortSubsrciprion.beans.add(SubscriptionMessages.get(i));
+            if (chche.size() > 0) {
+                for (int j = 0; j < chche.size(); j++) {
+                    if (sortSubsrciprion.time.equals(chche.get(j).time)) {//如果相同
+                        chche.get(j).beans.add(SubscriptionMessages.get(i));
+                        break;
+                    } else if (j == (chche.size() - 1)) {//如果到最后一个都不相同
                         chche.add(sortSubsrciprion);
+                        break;
                     }
                 }
-                sortSubsrciprions.addAll(chche);
-                handler.sendEmptyMessage(RESULT_OK);
+            } else {
+                chche.add(sortSubsrciprion);
             }
-        });
+        }
+        sortSubsrciprions.addAll(chche);
+        doVistOk();
     }
 
     private void notifyAdapter() {
         if (adapter != null)
-            adapter.notifyDataSetChanged();
+            adapter.setSortSubsrciprions(sortSubsrciprions);
+        else {
+            adapter = new SubscriptionAdapter();
+            adapter.setSortSubsrciprions(sortSubsrciprions);
+            listView.setAdapter(adapter);
+        }
     }
 
     private void setData() {//网络获取数据时候
@@ -342,7 +290,7 @@ public class SubscriptionActivity extends BaseActivity {
     }
 
     private void clearDataToDB(long newlong, long date) {
-        long i = SubscriptionDao.getInstance().deleteMessage(newlong, date, emCode);
+        SubscriptionDao.getInstance().deleteMessage(newlong, date, emCode);
     }
 
     private void saveDataToDB(List<SubscriptionMessage> subscriptionMessages) {
@@ -366,6 +314,7 @@ public class SubscriptionActivity extends BaseActivity {
                 }).create().show();
     }
 
+    //获取数据
     public void loadNetData(long date) {
         //获取网络数据
         String url = baseUrl + "common/desktop/subs/getSubs.action";
@@ -380,11 +329,22 @@ public class SubscriptionActivity extends BaseActivity {
 
     //外层list
     class SubscriptionAdapter extends BaseAdapter {
+        List<SortSubsrciprion> sortSubsrciprions;
+
+        public List<SortSubsrciprion> getSortSubsrciprions() {
+            return sortSubsrciprions;
+        }
+
+        public void setSortSubsrciprions(List<SortSubsrciprion> sortSubsrciprions) {
+            this.sortSubsrciprions = sortSubsrciprions;
+            notifyDataSetChanged();
+        }
+
         private ListAdapter listAdapter = null;
 
         @Override
         public int getCount() {
-            return sortSubsrciprions.size();
+            return ListUtils.isEmpty(sortSubsrciprions) ? 0 : sortSubsrciprions.size();
         }
 
         @Override

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/ImageUtil.java

@@ -214,6 +214,7 @@ public class ImageUtil {
     /**
      * 压缩已存在的图片对象,并添加水印,并返回压缩后的图片文件(压缩质量,压缩尺寸函数)
      *
+     * @author RaoMeng
      * @param :图片对象
      * @param quality:1-100;100表示不质量压缩
      * @param reqsW:压缩宽度
@@ -221,7 +222,7 @@ public class ImageUtil {
      * @param time:                    照片拍摄时间
      * @param address:照片拍摄地点
      * @param alpha:水印透明度
-     * @return
+     * @return 添加水印的图片文件
      */
     public final static File compressWaterBitmapToFile(String filePath, int quality, int reqsW, int reqsH, String nickName, String time, String address, int alpha) {
         Bitmap bitmap = compressBitmapWithFilePath(filePath, reqsW, reqsH);

+ 0 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/MacAndIDUtil.java

@@ -25,10 +25,8 @@ public class MacAndIDUtil {
                 mac = getMacFromWifiInfo(ct);
             boolean isOk = legitimateMac(mac);//判断mac地址是否合法
             if (isOk) {
-                Log.i("gongpengming", "合法的");
                 CommonUtil.setSharedPreferences(ct, "macaddress", mac);
             } else {
-                Log.i("gongpengming", "不合法的");
                 tryOpenWifi(ct);
                 mac = "";
             }

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

@@ -102,7 +102,7 @@
                     style="@style/form_relative_right_text"
                     android:layout_marginLeft="20dp"
                     android:gravity="top"
-                    android:hint="点击分享按钮可将工作心得分享到工作圈(非必填)"
+                    android:hint="请输入工作心得(非必填)"
                     android:minHeight="120dp"
                     android:layout_marginTop="1dp"
                     android:padding="5dp" />

+ 4 - 0
WeiChat/src/main/res/layout/activity_client.xml

@@ -485,6 +485,7 @@
 
             <LinearLayout
                 android:id="@+id/ll_data_one"
+                android:visibility="gone"
                 style="@style/LinearLayout_horizontal"
                 android:padding="8dp">
 
@@ -515,6 +516,7 @@
 
             <LinearLayout
                 android:id="@+id/ll_data_two"
+                android:visibility="gone"
                 style="@style/LinearLayout_horizontal"
                 android:padding="8dp">
 
@@ -545,6 +547,7 @@
 
             <LinearLayout
                 android:id="@+id/ll_data_three"
+                android:visibility="gone"
                 style="@style/LinearLayout_horizontal"
                 android:padding="8dp">
 
@@ -889,6 +892,7 @@
 
             <LinearLayout
                 android:id="@+id/ll_customer_lost"
+                android:visibility="gone"
                 style="@style/LinearLayout_vertical">
 
                 <TextView

+ 3 - 2
WeiChat/src/main/res/layout/activity_oa_alarma.xml

@@ -10,6 +10,7 @@
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height"
         android:layout_margin="2dp"
+        android:visibility="gone"
         android:background="@drawable/oa_signin_tv_bg"
         android:padding="8dp">
 
@@ -61,7 +62,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerVertical="true"
-            android:text="上班时间提醒"
+            android:text="上班打卡提醒"
             android:textSize="@dimen/text_main" />
 
         <!--<ImageView-->
@@ -96,7 +97,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerVertical="true"
-            android:text="下班时间提醒"
+            android:text="下班打卡提醒"
             android:textSize="@dimen/text_main" />
 
         <!--<ImageView-->

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

@@ -73,7 +73,7 @@
         android:layout_alignTop="@id/header_img"
         android:layout_below="@id/time_tv"
         android:layout_marginRight="35dp"
-        android:layout_marginTop="5dp"
+        android:layout_marginTop="10dp"
         android:src="@drawable/phone" />
 
 

+ 81 - 0
WeiChat/src/main/res/layout/item_pop_employee.xml

@@ -0,0 +1,81 @@
+<?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="wrap_content"
+    android:paddingBottom="10dp">
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:background="@color/item_line" />
+
+    <TextView
+        android:id="@+id/tag_tv"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="10dp"
+        android:gravity="bottom"
+        android:text="A"
+        android:visibility="gone" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:layout_below="@id/tag_tv"
+        android:background="@color/item_line" />
+
+    <ImageView
+        android:id="@+id/header_img"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        android:layout_below="@id/tag_tv"
+        android:layout_marginLeft="10dp"
+        android:layout_marginTop="10dp" />
+
+    <TextView
+        android:id="@+id/name_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignTop="@id/header_img"
+        android:layout_marginLeft="10dp"
+        android:layout_marginTop="3dp"
+        android:layout_toRightOf="@id/header_img"
+        android:text="aaa"
+        android:textColor="@color/text_main"
+        android:textSize="@dimen/text_main" />
+
+    <TextView
+        android:id="@+id/sub_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignLeft="@id/name_tv"
+        android:layout_below="@id/name_tv"
+        android:layout_marginTop="2dp"
+        android:text="aaa"
+        android:textColor="@color/text_hine"
+        android:textSize="@dimen/text_hine" />
+
+    <TextView
+        android:id="@+id/time_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_alignTop="@id/header_img"
+        android:layout_marginRight="20dp"
+        android:visibility="gone" />
+
+    <ImageView
+        android:id="@+id/phone_img"
+        android:layout_width="20dp"
+        android:layout_centerInParent="true"
+        android:layout_height="20dp"
+        android:layout_alignParentRight="true"
+        android:layout_alignRight="@id/time_tv"
+        android:layout_alignTop="@id/header_img"
+        android:layout_below="@id/time_tv"
+        android:layout_marginRight="35dp"
+        android:layout_marginTop="10dp"
+        android:src="@drawable/phone" />
+
+
+</RelativeLayout>

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

@@ -59,7 +59,7 @@
                 android:layout_toLeftOf="@+id/schedule_time_tv"
                 android:ellipsize="end"
                 android:singleLine="true"
-                android:text="待审批流"
+                android:text="待审批流"
                 android:textColor="@color/text_main"
                 android:textSize="16sp" />
 
@@ -311,7 +311,7 @@
                 android:layout_toLeftOf="@+id/time_tv"
                 android:ellipsize="end"
                 android:singleLine="true"
-                android:text="订阅"
+                android:text="我的订阅"
                 android:textColor="@color/text_main"
                 android:textSize="16sp" />
 

+ 1 - 1
pullToRefershLibraryMy/src/main/java/com/handmark/pulltorefresh/library/PullToRefreshBase.java

@@ -54,7 +54,7 @@ public abstract class PullToRefreshBase<T extends View> extends LinearLayout imp
 
 	static final String LOG_TAG = "PullToRefresh";
 
-	static final float FRICTION = 4.0f;
+	static final float FRICTION = 5.0f;
 
 	public static final int SMOOTH_SCROLL_DURATION_MS = 200;
 	public static final int SMOOTH_SCROLL_LONG_DURATION_MS = 325;