Forráskód Böngészése

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

Arison 9 éve
szülő
commit
a4ba054e71
43 módosított fájl, 589 hozzáadás és 172 törlés
  1. 1 1
      WeiChat/build.gradle
  2. 9 2
      WeiChat/src/main/AndroidManifest.xml
  3. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java
  4. 4 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/Signin.java
  5. 0 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java
  6. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/TaskAddActivity.java
  7. 25 9
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddMeetingActivity.java
  8. 79 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AlarmReceiver.java
  9. 6 9
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MeetDetailsActivity.java
  10. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MeetingActivity.java
  11. 13 10
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  12. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/UserSelectActivity.java
  13. 46 32
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SigninAdapter.java
  14. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java
  15. 25 26
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java
  16. 7 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java
  17. 55 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/LoginERPUilt.java
  18. 56 10
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/ViewUtil.java
  19. 49 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/CalendarPopup.java
  20. 5 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CalendarView.java
  21. BIN
      WeiChat/src/main/res/drawable-hdpi/end_meeting.png
  22. BIN
      WeiChat/src/main/res/drawable-hdpi/end_meeting_pass.png
  23. BIN
      WeiChat/src/main/res/drawable-hdpi/ic_metting_people.png
  24. BIN
      WeiChat/src/main/res/drawable-hdpi/signin.png
  25. BIN
      WeiChat/src/main/res/drawable-xhdpi/end_meeting.png
  26. BIN
      WeiChat/src/main/res/drawable-xhdpi/end_meeting_pass.png
  27. BIN
      WeiChat/src/main/res/drawable-xhdpi/signin.png
  28. BIN
      WeiChat/src/main/res/drawable-xxhdpi/end_meeting.png
  29. BIN
      WeiChat/src/main/res/drawable-xxhdpi/end_meeting_pass.png
  30. BIN
      WeiChat/src/main/res/drawable-xxhdpi/ic_metting_people.png
  31. BIN
      WeiChat/src/main/res/drawable-xxhdpi/signin.png
  32. 5 0
      WeiChat/src/main/res/drawable/endmeeting.xml
  33. 19 8
      WeiChat/src/main/res/layout/activity_add_meeting.xml
  34. 14 7
      WeiChat/src/main/res/layout/activity_meet_details.xml
  35. 10 2
      WeiChat/src/main/res/layout/activity_oa.xml
  36. 71 0
      WeiChat/src/main/res/layout/calender_popup.xml
  37. 3 3
      WeiChat/src/main/res/layout/fragment_outoffice.xml
  38. 3 3
      WeiChat/src/main/res/layout/fragment_signin.xml
  39. 4 0
      WeiChat/src/main/res/layout/item_signin_list.xml
  40. 16 12
      WeiChat/src/main/res/layout/view_empty.xml
  41. 27 3
      WeiChat/src/main/res/values-v14/styles.xml
  42. 7 5
      WeiChat/src/main/res/values/colors.xml
  43. 10 1
      WeiChat/src/main/res/values/gpm_values.xml

+ 1 - 1
WeiChat/build.gradle

@@ -4,7 +4,7 @@ apply plugin: 'com.getkeepsafe.dexcount'
 android {
     signingConfigs {
         config {
-            storeFile file('C:/Users/Arison/Desktop/applicationsignname[20150409]')
+            storeFile file('D:/config/applicationsignname[20150409]')
             storePassword '13237658359'
             keyAlias 'jie-20150409'
             keyPassword '13237658359'

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

@@ -432,9 +432,13 @@
             android:launchMode="singleTask" />
         <activity
             android:name=".ui.erp.activity.oa.OutofficeActivity"
+            android:theme="@style/OAThemeOutOffice"
+            android:configChanges="orientation|keyboardHidden"
+            android:windowSoftInputMode="adjustUnspecified|stateHidden"
             android:label="外勤签到" />
         <activity
             android:name=".ui.erp.activity.oa.MeetDetailsActivity"
+            android:theme="@style/OAThemeMeet"
             android:label="会议详情" />
         <activity
             android:name=".ui.erp.activity.oa.OARegisterActivity"
@@ -465,8 +469,8 @@
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
         <activity
             android:name=".ui.erp.activity.crm.VisitReportPlanActivity"
-            android:configChanges="orientation|keyboardHidden"
             android:theme="@style/CrmThemeTask"
+            android:configChanges="orientation|keyboardHidden"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
         <activity
             android:name=".ui.erp.activity.crm.BusinessAddActivity"
@@ -501,16 +505,19 @@
             android:label="签到提醒" />
         <activity
             android:name=".ui.erp.activity.oa.MeetingActivity"
+            android:theme="@style/OAThemeMeet"
             android:label="会议管理" />
         <activity
             android:name=".ui.message.SubscripSetActivity"
             android:label="申请订阅" />
         <activity
             android:name=".ui.erp.activity.oa.OutofficeSetActivity"
+            android:theme="@style/OAThemeOutOffice"
             android:label="签到设置" />
         <activity android:name=".ui.erp.activity.oa.TestActivity" />
         <activity
             android:name=".ui.erp.activity.oa.OutSigninOKActivity"
+            android:theme="@style/OAThemeOutOffice"
             android:label="签到详情" />
         <activity
             android:name=".ui.erp.activity.crm.ContactManAddActivity"
@@ -518,7 +525,7 @@
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
         <activity
             android:name=".ui.erp.activity.oa.SaveMeetActivity"
-            android:label="保存会议纪要" />
+            android:label="会议纪要" />
         <activity
             android:name=".ui.erp.activity.oa.UserSelectActivity"
             android:label="选择人员" />

+ 5 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java

@@ -8,8 +8,10 @@ import com.baidu.location.BDLocation;
 import com.baidu.location.BDLocationListener;
 import com.baidu.location.LocationClient;
 import com.baidu.location.LocationClientOption;
+import com.baidu.location.LocationClientOption.LocationMode;
 import com.baidu.location.Poi;
 import com.xzjmyk.pm.activity.sp.LocationSp;
+import com.xzjmyk.pm.activity.util.StringUtils;
 
 import java.util.List;
 
@@ -21,7 +23,6 @@ public class BdLocationHelper {
     private String mAddress;
 
     private String name;
-    private List<Poi> pois;
     private String mProvinceName;// 省份
     private String mCityName;// 城市
     private String mDistrictName;// 街道
@@ -29,6 +30,7 @@ public class BdLocationHelper {
 
     private LocationClient mLocationClient = null;
     private int mFaildCount = 0;
+    private List<Poi> pois;
 
     BdLocationHelper(Context context) {
         mContext = context;
@@ -56,6 +58,8 @@ public class BdLocationHelper {
         option.setNeedDeviceDirect(false);
         mLocationClient.setLocOption(option);
         requestLocation();//重新定位
+
+
     }
 
 

+ 4 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/Signin.java

@@ -9,10 +9,10 @@ import android.os.Parcelable;
 public class Signin implements Parcelable {
 
     private String code;//员工编号
-    private String utime;//签到日期
-    private String dtime;//获取的上班时间,当有多次排班,用分号分别
-    private String usigmin;//签到上班时间,当有多次排班,用分号分别
-    private String dsigmin;//签到下班时间,当有多次排班,用分号分别
+    private String utime;//上班时间
+    private String dtime;//下班时间
+    private String usigmin;//上班开始时间
+    private String dsigmin;//下班开始时间
     public Signin() {
     }
 

+ 0 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.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.View;
 import android.webkit.CookieManager;
 import android.webkit.CookieSyncManager;
@@ -211,7 +210,6 @@ public class WebViewCommActivity extends BaseActivity {
         ViewUtil.ct = this;
         ViewUtil.LoginERPTask(this, hander, reCode);
         PreferenceUtils.putLong(context, TIME, System.currentTimeMillis());
-
     }
 
     @Override

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

@@ -87,11 +87,13 @@ public class TaskAddActivity extends BaseActivity implements View.OnClickListene
         tv_priority.setOnClickListener(this);
         tv_date.setOnClickListener(this);
         tv_date_start.setOnClickListener(this);
-        findViewById(R.id.tv_executive).setOnClickListener(this);
+        tv_executive.setOnClickListener(this);
         tv_date.setKeyListener(null);
         tv_date.setFocusable(false);
         tv_date_start.setKeyListener(null);
         tv_date_start.setFocusable(false);
+        tv_executive.setKeyListener(null);
+        tv_executive.setFocusable(false);
         tv_notice.setKeyListener(null);
         tv_notice.setFocusable(false);
         tv_priority.setKeyListener(null);

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

@@ -7,6 +7,8 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.TextView;
@@ -123,6 +125,26 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
         }
     };
 
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.save) {
+            CodeUtil.getInstance().getCode(ct, "Meetingroomapply", new CodeUtil.OnCodeLinstener() {
+                @Override
+                public void callBack(final String code) {
+                    ma_code = code;
+                    getIdByNet();
+                }
+            });
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.menu_visit_save, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -160,13 +182,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                 }
                 break;
             case R.id.bt_save:
-                CodeUtil.getInstance().getCode(ct, "Meetingroomapply", new CodeUtil.OnCodeLinstener() {
-                    @Override
-                    public void callBack(final String code) {
-                        ma_code = code;
-                        getIdByNet();
-                    }
-                });
+
                 break;
             case R.id.users_rl://选择参会人员
                 Intent intent = new Intent(ct, UserSelectActivity.class);
@@ -320,10 +336,10 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                 "\"resourcename\":\"" +//执行人
                 resourcename.toString() +
                 "\",\n" +
-                "\"enddate\":\"" +//结束时间
+                "\"startdate\":\"" +//结束时间
                 start_tv.getText().toString() +
                 "\",\n" +
-                "\"startdate\":\"" +//结束时间
+                "\"enddate\":\"" +//结束时间
                 end_tv.getText().toString() +
                 "\",\n" +
                 "\"tasklevel\":\"" +

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

@@ -7,16 +7,24 @@ import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.os.Handler;
+import android.os.Message;
 import android.support.v7.app.NotificationCompat;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.Signin;
 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.ViewUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 
 import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -25,13 +33,80 @@ import java.util.regex.Pattern;
  */
 public class AlarmReceiver extends BroadcastReceiver {
 
+    private Context ct;
+    private boolean isU;
+
+    private Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == 0x11) {
+                String message = msg.getData().getString("result");
+                if (JSON.parseObject(message).containsKey("listdata")) {
+                    JSONArray array = JSON.parseObject(message).getJSONArray("listdata");
+                    String[] time = new String[array.size()];
+                    for (int i = 0; i < array.size(); i++) {
+                        time[i] = array.getJSONObject(i).containsKey("cl_time") ? array.getJSONObject(i).getString("cl_time") : "--";
+                    }
+                    //判断是否已经签到过了
+                    ArrayList<Signin> signins = SigninDao.getInstance(ct).query();
+                    String str = TimeUtils.long2str(System.currentTimeMillis(), "HH:mm");
+                    //判断当前时间在哪个区间
+                    for (Signin e : signins) {
+                        if (str.compareTo(e.getUsigmin()) > 0 && str.compareTo(e.getDsigmin()) < 0) {
+                            //当前时间在这个打卡时间之内,判断是否已经打卡
+                            if (e.getUtime() == null || e.getDtime() == null) {
+                                //提醒
+                                sendNotification(ct, isU);
+                                return;
+                            }
+                            if (isU && time.length > 0 && time[0].compareTo(e.getUtime()) < 0) {
+                                //已经打卡到上班卡了
+
+                            } else if (!isU && time.length > 0 && time[time.length - 1].compareTo(e.getDtime()) > 0) {
+                                //已经打卡到下班卡了
+                            } else {
+                                //提醒
+                                sendNotification(ct, isU);
+                            }
+                            break;
+                        }
+                    }
+
+                }
+            }
+
+        }
+    };
+
     @Override
     public void onReceive(Context context, Intent intent) {
+        this.ct = context;
         if (intent.getAction().equals(AlarmaActivity.KEY_ALAR_ACTION)) {//上班签到提醒
-            sendNotification(context, false);//当前为上班   则下一次为下班
-        } else if (intent.getAction().equals(AlarmaActivity.KEY_UALAR_ACTION)) {//下班签到提醒
-            sendNotification(context, true);
+            isU = true;
+        } else {//下班签到提醒
+            isU = true;
         }
+        loadLog(context);
+    }
+
+
+    //获取打卡记录 date:yyyy-MM-dd
+    private void loadLog(Context ct) {
+        //获取网络数据
+        String code = CommonUtil.getSharedPreferences(ct, "erp_username");
+        String date = TimeUtils.s_long_2_str(System.currentTimeMillis());
+        String url = "mobile/common/list.action";
+        final Map<String, Object> param = new HashMap<>();
+        param.put("currentMaster", CommonUtil.getSharedPreferences(ct, "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("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x11, null, null, "get");
     }
 
     /**
@@ -55,7 +130,7 @@ public class AlarmReceiver extends BroadcastReceiver {
             stringExtra = context.getResources().getString(R.string.ualar_content);
         }
         builder.setContentText(stringExtra);
-        Intent intent = new Intent(context, AlarmaActivity.class);
+        Intent intent = new Intent(context, SigninActivity.class);
         PendingIntent pendingIntent = PendingIntent.getActivity(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
         builder.setContentIntent(pendingIntent);
         mNotificationManager.notify(1000, builder.build());

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

@@ -6,6 +6,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;
@@ -24,6 +25,7 @@ import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
+import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
 
@@ -63,7 +65,6 @@ public class MeetDetailsActivity extends BaseActivity implements View.OnClickLis
     private final int whatLoad = 0x11, SIGNNIN = 0x12, ENDMEET = 0x13;
     private int ma_id;
     private String ma_code;
-    private JSONObject object;
     private boolean isPlay = true;
     private Handler handler = new Handler() {
         @Override
@@ -72,7 +73,6 @@ public class MeetDetailsActivity extends BaseActivity implements View.OnClickLis
             String message = (String) msg.getData().get("result");
             switch (msg.what) {
                 case whatLoad:
-                    object = JSON.parseObject(message).getJSONObject("panelData");
 //                    updataUI();
                     break;
                 case ENDMEET:
@@ -169,7 +169,7 @@ public class MeetDetailsActivity extends BaseActivity implements View.OnClickLis
         findViewById(R.id.location_tag).setOnClickListener(this);
         findViewById(R.id.add_task_ll).setOnClickListener(this);
         if (entity == null) return;
-        if (entity.getMa_recorder() != null && !MyApplication.getInstance().mLoginUser.getNickName().equals(entity.getMa_recorder())) {
+        if (entity.getMa_recorder() != null && !MyApplication.getInstance().mLoginUser.getNickName().equals(entity.getMa_recorder()) || "已结束".equals(status_tv.getText().toString().trim())) {
             end_meet_tv.setVisibility(View.GONE);
         } else {
             end_meet_tv.setVisibility(View.VISIBLE);
@@ -178,18 +178,15 @@ public class MeetDetailsActivity extends BaseActivity implements View.OnClickLis
         addr_tv.setText(entity.getMa_mrname() == null ? "未填写" : entity.getMa_mrname());
         sub_tv.setText(entity.getMa_remark() == null ? "" : entity.getMa_remark());
         user_tv.setText(entity.getMa_recorder() == null ? "" : entity.getMa_recorder());
-        tag_tv.setText(entity.getMa_tag() == null ? "" : entity.getMa_tag());
+        Log.i("gongpengming", (StringUtils.isEmpty(entity.getMa_tag()) ? "未填写" : entity.getMa_tag()));
+        tag_tv.setText(StringUtils.isEmpty(entity.getMa_tag()) ? "未填写" : entity.getMa_tag());
         //设置会议状态
         String str = entity.getMa_stage();
-        if (str == null) {
+        if (StringUtils.isEmpty(str)) {
             if (TimeUtils.f_str_2_long(entity.getMa_starttime()) > System.currentTimeMillis())
                 str = "未开始";
             else
                 str = "进行中";
-        } else {
-            if ("已结束".equals(str)) {
-
-            }
         }
         status_tv.setText(str);
         //设置开始和结束时间的显示

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

@@ -267,12 +267,11 @@ public class MeetingActivity extends BaseActivity {
             } else {
                 viewholder = (ViewHolder) view.getTag();
             }
-            MeetEntity entity = entities.get(i);
-            bindData(viewholder, entity);
+            bindData(viewholder, i);
             return view;
         }
-
-        private void bindData(ViewHolder viewholder, MeetEntity entity) {
+        private void bindData(ViewHolder viewholder, int i) {
+            MeetEntity entity = entities.get(i);
             //当系统时间<开始时间 会议状态为未开始,
             // 当会议开始时间<系统时间会议状态为进行中,当会议发起人点击结束会议按钮,
             // 状态更新为已结束,否则即使超过会议结束时间状态也是进行中
@@ -283,7 +282,8 @@ public class MeetingActivity extends BaseActivity {
                 else
                     str = "进行中";
             }
-            viewholder.oa_meeting_status_tv.setText(str);
+            entities.get(i).setMa_stage(str);
+            viewholder.oa_meeting_status_tv.setText(entities.get(i).getMa_stage());
             long startLong = TimeUtils.f_str_2_long(entity.getMa_starttime());
             long endLong = TimeUtils.f_str_2_long(entity.getMa_endtime());
             viewholder.oa_meeting_start.setText(TimeUtils.long2str(endLong, "MM月dd日"));

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

@@ -97,6 +97,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
                     JSONObject jsonObject = JSON.parseObject(message);
                     if (jsonObject.isEmpty()) return;
                     loadSuccess(jsonObject);
+                    rootScrollView.smoothScrollTo(0, 20);
                     break;
             }
         }
@@ -152,7 +153,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
             adapter.setBeans(chche);
         }
         setTaskDay(tag == 1 ? meBeans : otherBeans);
-        rootScrollView.smoothScrollTo(0, 20);
+
     }
 
     private void setTaskDay(List<OABean> beans) {
@@ -218,7 +219,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.add_item) {
             showPopupWindow(getWindow().findViewById(R.id.add_item));
-//            popAdd();
         }
         return super.onOptionsItemSelected(item);
     }
@@ -412,12 +412,14 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
     private List<Map<String, Object>> getPopData() {
         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
         Map<String, Object> map = new HashMap<String, Object>();
-        map.put("item_name", "创建任务");
-        list.add(map);
-        map = new HashMap<>();
-        map.put("item_name", "创建日程");
-        list.add(map);
-        map = new HashMap<>();
+        if (getIntent() == null || getIntent().getIntExtra("type", 0) != 1) {
+            map.put("item_name", "创建任务");
+            list.add(map);
+            map = new HashMap<>();
+            map.put("item_name", "创建日程");
+            list.add(map);
+            map = new HashMap<>();
+        }
         map.put("item_name", "新增拜访计划");
         list.add(map);
         map = new HashMap<>();
@@ -428,7 +430,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
 
     //设置控件点击事件
     private void setListener() {
-
         findViewById(R.id.signin).setOnClickListener(this);
         findViewById(R.id.outoffice).setOnClickListener(this);
         findViewById(R.id.meeting).setOnClickListener(this);
@@ -498,6 +499,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
             ok_scale.setVisibility(View.GONE);
             my_log_tag.setBackgroundResource(R.color.darkorange);
             my_client_log_tag.setBackgroundDrawable(null);
+            rootScrollView.smoothScrollTo(0, 20);
             if (adapter != null && meBeans != null) {
                 adapter.setBeans(meBeans);
                 setTaskDay(meBeans);
@@ -512,7 +514,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
                 setTaskDay(otherBeans);
             }
         }
-        rootScrollView.smoothScrollTo(0, 20);
+
     }
 
     //列表适配器
@@ -548,6 +550,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
         public void setBeans(List<OABean> beans) {
             this.beans = getBeans(beans);
             notifyDataSetChanged();
+                rootScrollView.smoothScrollTo(0, 20);
         }
 
         @Override

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

@@ -111,6 +111,10 @@ public class UserSelectActivity extends BaseActivity {
 
     private void initView() {
         View view = LayoutInflater.from(this).inflate(R.layout.view_empty, null);
+        TextView tvMessage = (TextView) view.findViewById(R.id.textViewMessage);
+        if (!isNet) {
+            tvMessage.setText("当前数据库没有找到数据,请点击通讯录页面的企业架构刷新数据");
+        }
         listview.setEmptyView(view);
         adapter = new MeetSelectAdapter();
         listview.setAdapter(adapter);
@@ -227,7 +231,7 @@ public class UserSelectActivity extends BaseActivity {
                 "whichsys=?");
         manager.closeDB();
         for (int i = 0; i < emList.size(); i++) {//企业通讯人员
-//            if (emList.get(i).getEm_IMID() == 0) continue;
+
             entities.add(EnterChatAction(emList.get(i)));
         }
 

+ 46 - 32
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SigninAdapter.java

@@ -2,15 +2,17 @@ package com.xzjmyk.pm.activity.ui.erp.adapter;
 
 import android.content.Context;
 import android.support.v7.widget.RecyclerView;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.oa.Signin;
+import com.xzjmyk.pm.activity.db.dao.SigninDao;
 import com.xzjmyk.pm.activity.ui.erp.fragment.SigninFragment;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
-import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 
 import java.util.ArrayList;
@@ -34,9 +36,18 @@ public class SigninAdapter extends RecyclerView.Adapter<SigninAdapter.ViewHoler>
 
     public void setBeans(ArrayList<SigninFragment.Bean> beans) {
         this.beans = beans;
+        saveDB(beans);
         time = TimeUtils.long2str(System.currentTimeMillis(), "HH:mm");
     }
 
+    private void saveDB(ArrayList<SigninFragment.Bean> beans) {
+        ArrayList<Signin> signins = new ArrayList<>();
+        for (SigninFragment.Bean e : beans) {
+            signins.add(new Signin(e.getStartTime(), e.getEndTime(), e.getStartSignin(), e.getEndSignnin()));
+        }
+        SigninDao.getInstance(ct).updata(signins);
+    }
+
     @Override
     public ViewHoler onCreateViewHolder(ViewGroup parent, int viewType) {
         ViewHoler holer = new ViewHoler(LayoutInflater.from(ct).inflate(R.layout.item_signin_list, parent, false));
@@ -49,40 +60,22 @@ public class SigninAdapter extends RecyclerView.Adapter<SigninAdapter.ViewHoler>
         holder.time.setText(b.getStartTime() == null ? "" : b.getStartTime());
         holder.time2.setText(b.getEndTime() == null ? "" : b.getEndTime());
         //处理签到时间
-        String start = "", end = "";
-
+        String start = "",
+                end = "";
         if (!ListUtils.isEmpty(b.getSigninList()) && b.getSigninList().size() > 0) {
-            String starSignin = b.getSigninList().get(0) == null ? "" : b.getSigninList().get(0);//获取到显示在签到时间的时间
-            holder.signin.setText(starSignin);//填充时间
-
-            //判断正常打卡 1.打卡时间在允许打卡时间b.getStartSignin() 到上班时间范围内b.getStartTime()
-            if (!StringUtils.isEmpty(b.getStartTime()) && !StringUtils.isEmpty(b.getStartSignin()) && starSignin.compareTo(b.getStartTime()) < 0 && starSignin.compareTo(b.getStartSignin()) > 0) {
-                start = "-1";
-            }
-            //判断迟到  1.打卡时间在上班时间getStartTime和往后的90分钟内
-            else if (!StringUtils.isEmpty(b.getStartTime()) && starSignin.compareTo(getNext90(b.getStartTime(), true)) < 0 && starSignin.compareTo(b.getStartTime()) > 0) {
-                start = "迟到";
-            } else {
-                start = "缺勤";
-            }
+            holder.signin.setText(b.getSigninList().get(0));//填充时间
+            holder.signin2.setText(b.getSigninList().get(b.getSigninList().size() - 1));//填充时间
+            Log.i("gongpengming", b.getStartTime() + "     " + b.getStartSignin() + "    " + getNext90(b.getStartTime(), true) + "    " + b.getSigninList().get(0));
+            start = getTag(b.getStartTime(), b.getStartSignin(), getNext90(b.getStartTime(), true), b.getSigninList().get(0), true);
+            Log.i("gongpengming", b.getEndTime() + "     " + getNext90(b.getEndTime(), false) + "    " + b.getEndSignnin() + "    " + b.getSigninList().get(b.getSigninList().size() - 1));
+            end = getTag(b.getEndTime(), getNext90(b.getEndTime(), false), b.getEndSignnin(), b.getSigninList().get(b.getSigninList().size() - 1), false);
         } else {
-            start = "缺勤";
-        }
-        if (!ListUtils.isEmpty(b.getSigninList()) && b.getSigninList().size() > 1) {
-            String endSignin = b.getSigninList().get(b.getSigninList().size() - 1) == null ? "" : b.getSigninList().get(b.getSigninList().size() - 1);
-            holder.signin2.setText(endSignin);
-            if (!StringUtils.isEmpty(b.getEndTime()) && getNext90(b.getEndTime(), false).compareTo(endSignin) < 0 && endSignin.compareTo(b.getEndSignnin()) > 0) {
-                end = "早退";
-            } else if (!StringUtils.isEmpty(b.getEndTime()) && !StringUtils.isEmpty(b.getEndSignnin()) && endSignin.compareTo(b.getEndTime()) > 0 && endSignin.compareTo(b.getEndSignnin()) < 0) {
-                end = "-1";
-            } else {
-                end = "缺勤";
-            }
-        } else {
-            end = "缺勤";
+            start = end = "-1";
         }
+        Log.i("gongpengming", "start=" + start);
+        Log.i("gongpengming", "end=" + end);
         //处理标识
-        if ("-1".equals(start) || time.compareTo(b.getStartTime()) < 0) {//当前时间还没有到达上班时间,不能显示缺勤
+        if ("-1".equals(start)) {//当前时间还没有到达上班时间,不能显示缺勤
             holder.tag.setVisibility(View.GONE);
         } else {
             holder.tag.setText(start);
@@ -102,7 +95,28 @@ public class SigninAdapter extends RecyclerView.Adapter<SigninAdapter.ViewHoler>
     private String getNext90(String hhmm, boolean isU) {//通过给出的时分获取到对应90分钟的时分
         String chche = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + hhmm + ":00";
         long chchelong = isU ? long90 : (-long90);
-        return TimeUtils.long2str(TimeUtils.f_str_2_long(chche) + chchelong, "HHmm");
+        return TimeUtils.long2str(TimeUtils.f_str_2_long(chche) + chchelong, "HH:mm");
+    }
+
+    /**
+     * @param workTime    上班时间
+     * @param startSignin 允许签到开始时间
+     * @param endSignin   允许签到结束时间
+     * @param proit       签到时间
+     * @return
+     */
+    private String getTag(String workTime, String startSignin, String endSignin, String proit, boolean isU) {
+        String tag = "";
+        if (proit.compareTo(workTime) < 0 && proit.compareTo(startSignin) > 0 || (isU && time.compareTo(workTime) < 0)) { //判断正常签到 在startSignin到workTime之间
+            tag = isU ? "-1" : "早退";
+        } else if (proit.compareTo(workTime) > 0 && proit.compareTo(endSignin) < 0 || (!isU && time.compareTo(workTime) < 0)) { //判断迟到签到 在workTime到endSignin
+            tag = isU ? "迟到" : "-1";
+        } else if (isU && proit.compareTo(endSignin) > 0) {//当签到时间大于endSignin,为缺勤
+            tag = "缺勤";
+        } else if (!isU && (proit.compareTo(startSignin) < 0 || proit.compareTo(endSignin) > 0)) {
+            tag = "缺勤";
+        }
+        return tag;
     }
 
     @Override

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

@@ -4,6 +4,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.Html;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
@@ -78,7 +79,7 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
                 if (JSON.parseObject(message).containsKey("listdata")) {
                     json = JSON.parseObject(message).getJSONArray("listdata");
                     sigNum = json.size();
-                    num_tv.setText(sigNum + "");
+                    num_tv.setText(Html.fromHtml("<u>" + sigNum + "</u>"));
                 }
             }
 

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

@@ -323,6 +323,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
         return TimeUtils.long2str(TimeUtils.f_str_2_long(time), "HH:mm");
     }
 
+
     //处理数据,用户无排班时候
     public void setDataByNoDegree(JSONObject object) {
         ArrayList<Bean> beans = new ArrayList<>();
@@ -356,9 +357,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
 
     //处理数据,用户有排班时候
     public void setDataByDegree(JSONObject object) {
-        int num = object.getInteger("wd_degree");//获取排班数
         ArrayList<Bean> beans = new ArrayList<>();
-        Bean b = null;
         //获取打卡地点及距离
         if (object.containsKey("Class3"))
             bindClass(beans, object.getJSONObject("Class3"));
@@ -366,30 +365,30 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             bindClass(beans, object.getJSONObject("Class2"));
         if (object.containsKey("Class1"))
             bindClass(beans, object.getJSONObject("Class1"));
-        switch (num) {
-            case 3:
-                b = new Bean();//上班
-                b.startTime = object.containsKey("wd_ondutythree") ? object.getString("wd_ondutythree") : "08:30";
-                b.startSignin = object.containsKey("wd_onbeg3") ? object.getString("wd_onbeg3") : "07:00";
-                b.endTime = object.containsKey("wd_offdutythree") ? object.getString("wd_offdutythree") : "11:30";
-                b.endSignnin = object.containsKey("wd_offend3") ? object.getString("wd_offend3") : "12:00";
-                beans.add(0, b);
-            case 2:
-                b = new Bean();
-                b.startTime = object.containsKey("wd_ondutytwo") ? object.getString("wd_ondutytwo") : "--:--";
-                b.startSignin = object.containsKey("wd_onbeg2") ? object.getString("wd_onbeg2") : "07:00";
-                b.endTime = object.containsKey("wd_offdutytwo") ? object.getString("wd_offdutytwo") : "--:--";
-                b.endSignnin = object.containsKey("wd_offend2") ? object.getString("wd_offend2") : "07:00";
-                beans.add(0, b);
-            case 1:
-                b = new Bean();
-                b.startTime = object.containsKey("wd_ondutyone") ? object.getString("wd_ondutyone") : "--:--";
-                b.startSignin = object.containsKey("wd_onbeg1") ? object.getString("wd_onbeg1") : "07:00";
-                b.endTime = object.containsKey("wd_offdutyone") ? object.getString("wd_offdutyone") : "--:--";
-                b.endSignnin = object.containsKey("wd_offend1") ? object.getString("wd_offend1") : "07:00";
-                beans.add(0, b);
-                break;
-        }//添加上班签到时间完成
+//        switch (num) {
+//            case 3:
+//                b = new Bean();//上班
+//                b.startTime = object.containsKey("wd_ondutythree") ? object.getString("wd_ondutythree") : "08:30";
+//                b.startSignin = object.containsKey("wd_onbeg3") ? object.getString("wd_onbeg3") : "07:00";
+//                b.endTime = object.containsKey("wd_offdutythree") ? object.getString("wd_offdutythree") : "11:30";
+//                b.endSignnin = object.containsKey("wd_offend3") ? object.getString("wd_offend3") : "12:00";
+//                beans.add(0, b);
+//            case 2:
+//                b = new Bean();
+//                b.startTime = object.containsKey("wd_ondutytwo") ? object.getString("wd_ondutytwo") : "--:--";
+//                b.startSignin = object.containsKey("wd_onbeg2") ? object.getString("wd_onbeg2") : "07:00";
+//                b.endTime = object.containsKey("wd_offdutytwo") ? object.getString("wd_offdutytwo") : "--:--";
+//                b.endSignnin = object.containsKey("wd_offend2") ? object.getString("wd_offend2") : "07:00";
+//                beans.add(0, b);
+//            case 1:
+//                b = new Bean();
+//                b.startTime = object.containsKey("wd_ondutyone") ? object.getString("wd_ondutyone") : "--:--";
+//                b.startSignin = object.containsKey("wd_onbeg1") ? object.getString("wd_onbeg1") : "07:00";
+//                b.endTime = object.containsKey("wd_offdutyone") ? object.getString("wd_offdutyone") : "--:--";
+//                b.endSignnin = object.containsKey("wd_offend1") ? object.getString("wd_offend1") : "07:00";
+//                beans.add(0, b);
+//                break;
+//        }//添加上班签到时间完成
         setDataForAdapter(beans);
     }
 

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

@@ -205,7 +205,6 @@ public class ViewUtil {
                                       final int what, final Message message, final Bundle bundle,
                                       final String request) {
         new Thread(new Runnable() {
-
             @Override
             public void run() {
                 boolean isNetHas = true;
@@ -215,14 +214,12 @@ public class ViewUtil {
                     Log.i("result", "result:" + result);
                     if (result != null) {
                         if (bundle == null || message == null) {
-
                             Bundle bundle = new Bundle();
                             Message message = new Message();
                             bundle.putString("result", result);
                             message.setData(bundle);
                             message.what = what;
                             handler.sendMessage(message);
-
                         } else {
                             bundle.putString("result", result);
                             message.setData(bundle);
@@ -383,7 +380,7 @@ public class ViewUtil {
         if (ct == null) ct = MyApplication.getInstance();
         Map<String, Object> dataMap = FlexJsonUtil.fromJson(result);
         try {
-            Log.i("Arison", "ChangeStatusERP:" + dataMap.get("sessionId").toString() );
+            Log.i("Arison", "ChangeStatusERP:" + dataMap.get("sessionId").toString());
             CommonUtil.setSharedPreferences(ct, "sessionId",
                     dataMap.get("sessionId").toString());
             CommonUtil.setSharedPreferences(ct, "erp_username",
@@ -466,9 +463,9 @@ public class ViewUtil {
         for (int j = 0; j < erpEntities.size(); j++) {
             items[j] = erpEntities.get(j).getName();
         }
-        if (CommonUtil.isDialogShowing(loginERPDialog)){
+        if (CommonUtil.isDialogShowing(loginERPDialog)) {
             return;
-        }else {
+        } else {
             loginERPDialog = new MaterialDialog.Builder(ct)
                     .title("选择登录的UAS账套")
                     .items(items)
@@ -617,6 +614,7 @@ public class ViewUtil {
         return false;
     }
 
+
     /**
      * @author Administrator
      * @功能:封装网络请求 httpclient4.3
@@ -644,7 +642,7 @@ public class ViewUtil {
                         Log.i("result", "url:" + url);
                         Log.i("result", "parm:" + params.toString());
                         Log.i("result", "statusCode:" + result.getStatusCode());
-                        LogUtil.prinlnLongMsg("result",result.getResponseText());
+                        LogUtil.prinlnLongMsg("result", result.getResponseText());
                         Log.i("result", "http 响应-----------------------------------------");
                         if (result.getStatusCode() == 200) {
                             if (bundle == null || message == null) {
@@ -672,7 +670,6 @@ public class ViewUtil {
                             if (result.getStatusCode() == 404) {
                                 exception = "404系统错误";
                             }
-                            Log.i("Http", "非200响应:" + result.getResponseText());
                             Bundle bundle = new Bundle();
                             Message message = new Message();
                             bundle.putString("result", exception);
@@ -698,6 +695,8 @@ public class ViewUtil {
                 }
             }
         }).start();
+
+
     }
 
     public static HttpUtil.Response httpSendTask(

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

@@ -0,0 +1,55 @@
+package com.xzjmyk.pm.activity.ui.erp.util;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * Created by gongpengming on 2016/9/5.
+ */
+public class LoginERPUilt {
+    private static LoginERPUilt instance;
+    private LoginListener listener = null;
+    private Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == 0x11) {
+                if (listener == null) return;
+                listener.result(true);
+            }
+        }
+    };
+    private LoginERPUilt() {
+    }
+    public static LoginERPUilt getInstance() {
+        if (instance == null) {
+            synchronized (LoginERPUilt.class) {
+                instance = new LoginERPUilt();
+            }
+        }
+        return instance;
+    }
+
+
+    // 登录ERP gongpengming
+    public void LoginERPTask(Context ct, LoginListener listener) {
+        this.listener = listener;
+        String url = Constants.getAppBaseUrl(ct) + "mobile/login.action";
+        String master = CommonUtil.getSharedPreferences(ct, "erp_master");
+        String phone = CommonUtil.getSharedPreferences(ct, "user_phone");
+        String password = CommonUtil.getSharedPreferences(ct, "user_password");
+        Map<String, String> params = new HashMap<String, String>();
+        params.put("username", phone);
+        params.put("password", password);
+        params.put("master", master);
+        com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.startNetThread(url, params, handler, 0x11, null, null, "post");
+    }
+
+    public interface LoginListener {
+        void result(boolean isLogin);
+    }
+}

+ 56 - 10
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/ViewUtil.java

@@ -8,8 +8,10 @@ import android.util.Log;
 
 import com.afollestad.materialdialogs.MaterialDialog;
 import com.alibaba.fastjson.JSON;
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.ui.erp.net.HttpUtil;
 
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
@@ -18,6 +20,17 @@ import java.util.Map;
  */
 public class ViewUtil {
 
+    //TODO 待采用更好的方式处理 定义的属性太多了
+    private static boolean isNetByHandler = false;//判断是否是经过重登录后的请求
+    private static String url;
+    private static Context ct;
+    private static Handler h;
+    private static Map<String, Object> params;
+    private static LinkedHashMap<String, Object> headers;
+    private static int what;
+    private static Message message;
+    private static Bundle bundle;
+    private static String request;
     public static HttpUtil.Response httpSendTask(
             String url,
             Map<String, Object> params,
@@ -26,10 +39,10 @@ public class ViewUtil {
         HttpUtil.Response response = null;
         try {
             if (method.equals("get")) {
-                response = HttpUtil.sendGetRequest(url, params, headers,false);
+                response = HttpUtil.sendGetRequest(url, params, headers, false);
             }
             if (method.equals("post")) {
-                response = HttpUtil.sendGetRequest(url, params, headers,false);
+                response = HttpUtil.sendGetRequest(url, params, headers, false);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -37,10 +50,46 @@ public class ViewUtil {
         return response;
     }
 
+    private   Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == 500) {//重登陆
+                LoginERPTask();
+            } else if (msg.what == 0x11) {
+                //判断登陆成功
+                if (msg.getData() != null && com.xzjmyk.pm.activity.util.StringUtils.isEmpty(msg.getData().getString("result"))) {
+                    JsonValidator jva = new JsonValidator();
+                    String json = msg.getData().getString("result");
+                    if (jva.validate(json)) {
+                        if (JSON.parseObject(json).containsKey("success") && JSON.parseObject(json).getBoolean("success")) {
+                            isNetByHandler = true;
+                            httpSendRequest(ct, url, params, handler, headers, what, message, bundle, request);
+                        }
+                    }
+                }
+            }
+        }
+    };
+
+    // 登录ERP gongpengming
+    public void LoginERPTask() {
+        Context ct = MyApplication.getInstance();
+        String url = Constants.getAppBaseUrl(ct) + "mobile/login.action";
+        String master = CommonUtil.getSharedPreferences(ct, "erp_master");
+        String phone = CommonUtil.getSharedPreferences(ct, "user_phone");
+        String password = CommonUtil.getSharedPreferences(ct, "user_password");
+        Map<String, String> params = new HashMap<String, String>();
+        params.put("username", phone);
+        params.put("password", password);
+        params.put("master", master);
+        com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.startNetThread(url, params, handler, 0x11, null, null, "post");
+    }
+
     /**
      * @author Administrator
      * @功能:封装网络请求 httpclient4.3
      */
+    @Deprecated
     public static void httpSendRequest(
             final Context ct,
             final String url,
@@ -51,15 +100,14 @@ public class ViewUtil {
             final Message message,
             final Bundle bundle,
             final String request) {
-            new Thread(new Runnable() {
+        new Thread(new Runnable() {
             @Override
             public void run() {
                 boolean isNetHas = Constants.isNetworkConnected(ct);
                 if (isNetHas) {
-                    Log.i("result:","url="+url);
+                    Log.i("result:", "url=" + url);
                     HttpUtil.Response result = httpSendTask(url, params, headers, request);
                     if (result != null) {
-
                         prinltResponseInfo(result, url, params);
                         if (result.getStatusCode() == 200) {
                             if (bundle == null || message == null) {
@@ -83,11 +131,12 @@ public class ViewUtil {
                                 } else {
                                     exception = "500系统错误";
                                 }
+
                             }
                             if (result.getStatusCode() == 404) {
                                 exception = "404系统错误";
                             }
-                            Log.i("Http", "非200响应:" + result.getResponseText());
+
                             Bundle bundle = new Bundle();
                             Message message = new Message();
                             bundle.putString("result", exception);
@@ -118,13 +167,12 @@ public class ViewUtil {
     }
 
     private static void prinltResponseInfo(HttpUtil.Response result, String url, Map<String, Object> params) {
-
         Log.i("result", "http 请求-----------------------------------------");
         Log.i("result", "result:" + result);
         Log.i("result", "url:" + url);
         Log.i("result", "parm:" + params.toString());
         Log.i("result", "statusCode:" + result.getStatusCode());
-        LogUtil.prinlnLongMsg("result",result.getResponseText());
+        LogUtil.prinlnLongMsg("result", result.getResponseText());
         Log.i("result", "http 响应-----------------------------------------");
     }
 
@@ -147,6 +195,4 @@ public class ViewUtil {
     }
 
 
-
-
 }

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

@@ -0,0 +1,49 @@
+package com.xzjmyk.pm.activity.ui.erp.view;
+
+import android.content.Context;
+
+/**
+ * Created by gongpengming on 2016/9/5.
+ */
+public class CalendarPopup {
+
+    private CalendarPopup(Context ct) {
+
+    }
+
+    public class Builder {
+        Context ct;
+
+        public Builder(Context ct) {
+            this.ct = ct;
+        }
+
+        public CalendarPopup builder() {
+            return new CalendarPopup(ct);
+        }
+
+        /**
+         * 设置开始时间
+         *
+         * @param data yyyy-HH-mm
+         * @return
+         */
+        public Builder setStartData(String data) {
+
+            return this;
+        }
+
+        /**
+         * 设置日期停止时间时间
+         *
+         * @param data yyyy-HH-mm
+         * @return
+         */
+        public Builder setEndData(String data) {
+            return this;
+        }
+
+    }
+
+
+}

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

@@ -16,7 +16,7 @@ import java.util.Date;
  * 日历控件 功能:获得点选的日期区间
  * update by:Bitliker 2016/07/11
  */
-public class    CalendarView extends View implements View.OnTouchListener {
+public class CalendarView extends View implements View.OnTouchListener {
     private final static String TAG = "anCalendar";
     private Date selectedStartDate;
     private Date selectedEndDate;
@@ -207,7 +207,10 @@ public class    CalendarView extends View implements View.OnTouchListener {
     private void drawCellText(Canvas canvas, int index, String text, int color) {
         int x = getXByIndex(index);
         int y = getYByIndex(index);
-        surface.datePaint.setColor(color);
+        if (downDate != null && downIndex == index)
+            surface.datePaint.setColor(0xFFFFFF);
+        else
+            surface.datePaint.setColor(color);
         float cellY = surface.monthHeight + surface.weekHeight + (y - 1)
                 * surface.cellHeight + //当前日期框最上方
                 surface.cellHeight * 3 / 4f;

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


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


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


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


BIN
WeiChat/src/main/res/drawable-xhdpi/end_meeting.png


BIN
WeiChat/src/main/res/drawable-xhdpi/end_meeting_pass.png


BIN
WeiChat/src/main/res/drawable-xhdpi/signin.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/end_meeting.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/end_meeting_pass.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/ic_metting_people.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/signin.png


+ 5 - 0
WeiChat/src/main/res/drawable/endmeeting.xml

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

+ 19 - 8
WeiChat/src/main/res/layout/activity_add_meeting.xml

@@ -22,18 +22,20 @@
                 android:text="会议名称"
                 android:textColor="@color/text_main"
                 android:textSize="@dimen/text_main" />
+
             <TextView
                 style="@style/form_relative_left_text"
                 android:layout_marginLeft="5dp"
                 android:layout_toRightOf="@+id/name_tag"
                 android:text="*"
                 android:textColor="@color/red" />
+
             <EditText
                 android:id="@+id/name_et"
                 style="@style/add_meet_tv"
+                android:layout_marginLeft="20dp"
                 android:layout_toRightOf="@+id/name_tag"
                 android:hint="请输入"
-                android:layout_marginLeft="20dp"
                 android:inputType="text" />
         </RelativeLayout>
 
@@ -53,18 +55,20 @@
                 android:text="开始时间"
                 android:textColor="@color/text_main"
                 android:textSize="@dimen/text_main" />
+
             <TextView
                 style="@style/form_relative_left_text"
                 android:layout_marginLeft="5dp"
                 android:layout_toRightOf="@+id/start_tag"
                 android:text="*"
                 android:textColor="@color/red" />
+
             <TextView
                 android:id="@+id/start_tv"
                 style="@style/add_meet_tv"
+                android:layout_marginLeft="20dp"
                 android:layout_toRightOf="@id/start_tag"
                 android:drawableRight="@drawable/oa_next"
-                android:layout_marginLeft="20dp"
                 android:hint="请选择" />
         </RelativeLayout>
 
@@ -83,18 +87,20 @@
                 android:text="结束时间"
                 android:textColor="@color/text_main"
                 android:textSize="@dimen/text_main" />
+
             <TextView
                 style="@style/form_relative_left_text"
                 android:layout_marginLeft="5dp"
                 android:layout_toRightOf="@+id/end_tag"
                 android:text="*"
                 android:textColor="@color/red" />
+
             <TextView
                 android:id="@+id/end_tv"
                 style="@style/add_meet_tv"
+                android:layout_marginLeft="20dp"
                 android:layout_toRightOf="@id/end_tag"
                 android:drawableRight="@drawable/oa_next"
-                android:layout_marginLeft="20dp"
                 android:hint="请选择" />
         </RelativeLayout>
 
@@ -113,17 +119,19 @@
                 android:text="会议地点"
                 android:textColor="@color/text_main"
                 android:textSize="@dimen/text_main" />
+
             <TextView
                 style="@style/form_relative_left_text"
                 android:layout_marginLeft="5dp"
                 android:layout_toRightOf="@+id/location_tag"
                 android:text="*"
                 android:textColor="@color/red" />
+
             <EditText
                 android:id="@+id/location_et"
                 style="@style/add_meet_tv"
-                android:layout_toRightOf="@id/location_tag"
                 android:layout_marginLeft="20dp"
+                android:layout_toRightOf="@id/location_tag"
                 android:hint="请输入" />
         </RelativeLayout>
 
@@ -159,18 +167,20 @@
                 android:text="参会人员"
                 android:textColor="@color/text_main"
                 android:textSize="@dimen/text_main" />
+
             <TextView
                 style="@style/form_relative_left_text"
                 android:layout_marginLeft="5dp"
                 android:layout_toRightOf="@+id/users_tag"
                 android:text="*"
                 android:textColor="@color/red" />
+
             <TextView
                 android:id="@+id/users_tv"
                 style="@style/add_meet_tv"
+                android:layout_marginLeft="20dp"
                 android:layout_toRightOf="@+id/users_tag"
                 android:drawableRight="@drawable/oa_next"
-                android:layout_marginLeft="20dp"
                 android:hint="请选择" />
         </RelativeLayout>
 
@@ -222,9 +232,9 @@
             <TextView
                 android:id="@+id/tag_et"
                 style="@style/add_meet_tv"
+                android:layout_marginLeft="20dp"
                 android:layout_toRightOf="@+id/tag_tag"
                 android:drawableRight="@drawable/oa_next"
-                android:layout_marginLeft="20dp"
                 android:hint="请选择" />
         </RelativeLayout>
 
@@ -247,8 +257,8 @@
             <EditText
                 android:id="@+id/about_et"
                 style="@style/add_meet_tv"
-                android:layout_toRightOf="@id/about_tag"
                 android:layout_marginLeft="20dp"
+                android:layout_toRightOf="@id/about_tag"
                 android:hint="请输入" />
         </RelativeLayout>
 
@@ -280,6 +290,7 @@
             style="@style/from_button_base_bule"
             android:layout_marginBottom="30dp"
             android:layout_marginTop="20dp"
-            android:text="保  存" />
+            android:text="保  存"
+            android:visibility="gone" />
     </LinearLayout>
 </ScrollView>

+ 14 - 7
WeiChat/src/main/res/layout/activity_meet_details.xml

@@ -287,11 +287,18 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
-        android:layout_below="@+id/meet_about"
-        android:background="@color/white"
-        android:clickable="true"
-        android:gravity="center"
-        android:padding="20dp"
-        android:text="结束会议"
-        android:textColor="@color/text_main" />
+        android:background="@drawable/endmeeting"/>
+
+    <!--<TextView-->
+        <!--android:id="@+id/end_meet_tv"-->
+        <!--android:layout_width="match_parent"-->
+        <!--android:layout_height="wrap_content"-->
+        <!--android:layout_alignParentBottom="true"-->
+        <!--android:layout_below="@+id/meet_about"-->
+        <!--android:background="@color/white"-->
+        <!--android:clickable="true"-->
+        <!--android:gravity="center"-->
+        <!--android:padding="20dp"-->
+        <!--android:text="结束会议"-->
+        <!--android:textColor="@color/text_main" />-->
 </RelativeLayout>

+ 10 - 2
WeiChat/src/main/res/layout/activity_oa.xml

@@ -147,7 +147,7 @@
 
         <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="50dp"
+            android:layout_height="40dp"
             android:orientation="horizontal">
 
             <TextView
@@ -159,6 +159,12 @@
                 android:text="下属工作日历"
                 android:textSize="16dp" />
 
+            <View
+                android:layout_width="2px"
+                android:layout_height="match_parent"
+                android:layout_margin="5dp"
+                android:background="@color/default_shadow_color" />
+
             <TextView
                 android:id="@+id/my_log"
                 android:layout_width="0dp"
@@ -259,10 +265,12 @@
             android:layout_width="match_parent"
             android:layout_height="10dp"
             android:background="@color/white" />
+
         <com.xzjmyk.pm.activity.view.CalendarView
             android:id="@+id/oa_picker"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
+            android:layout_height="wrap_content" />
+
         <View
             android:layout_width="match_parent"
             android:layout_height="10dp"

+ 71 - 0
WeiChat/src/main/res/layout/calender_popup.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="200dp"
+    android:background="@color/white"
+    android:gravity="center_vertical"
+    android:orientation="horizontal"
+    android:padding="5dp">
+
+    <ListView
+        android:id="@+id/list_yeas"
+        style="@style/style_calender"
+        android:layout_weight="1" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+
+        android:text="年"
+        android:textSize="20dp" />
+
+    <ListView
+        android:id="@+id/list_month"
+        style="@style/style_calender"
+        android:layout_weight="1" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:text="月"
+        android:textSize="20dp" />
+
+    <ListView
+        android:id="@+id/list_day"
+        style="@style/style_calender"
+        android:layout_weight="1" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:text="日"
+        android:textSize="20dp" />
+
+    <ListView
+        android:id="@+id/list_hh"
+        style="@style/style_calender"
+        android:layout_weight="1" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:text="时"
+        android:textSize="20dp" />
+
+    <ListView
+        android:id="@+id/list_mm"
+        style="@style/style_calender"
+        android:layout_weight="1" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:text="分"
+        android:textSize="20dp" />
+
+
+</LinearLayout>

+ 3 - 3
WeiChat/src/main/res/layout/fragment_outoffice.xml

@@ -56,7 +56,7 @@
             android:layout_alignBottom="@+id/tv"
             android:layout_marginLeft="5dp"
             android:layout_toRightOf="@+id/tv"
-            android:text="0 "
+            android:text=" 0"
             android:textColor="@color/mainList2"
             android:textSize="25dp" />
 
@@ -138,8 +138,8 @@
             android:layout_alignLeft="@id/date_tv"
             android:layout_alignTop="@id/tag_img2"
             android:layout_below="@+id/date_tv"
-            android:textColor="@color/text_main"
             android:gravity="center_vertical"
+            android:textColor="@color/text_main"
             android:textSize="@dimen/text_main" />
 
         <TextView
@@ -180,7 +180,7 @@
         android:layout_centerHorizontal="true"
         android:layout_gravity="center"
         android:layout_marginTop="100dp"
-        android:background="@drawable/signin_btn"
+        android:background="@drawable/signin"
         android:textColor="@color/white"
         android:textSize="20sp" />
 </LinearLayout>

+ 3 - 3
WeiChat/src/main/res/layout/fragment_signin.xml

@@ -8,7 +8,7 @@
         android:id="@+id/top"
         android:layout_width="match_parent"
         android:layout_height="?attr/actionBarSize"
-        android:background="@color/antionbarcolor">
+        android:background="#7292f8">
 
         <ImageView
             android:id="@+id/back"
@@ -66,8 +66,8 @@
 
     <ImageView
         android:id="@+id/signin_btn"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_width="100dp"
+        android:layout_height="100dp"
         android:layout_above="@+id/oa_range_addr_rl"
         android:layout_centerHorizontal="true"
         android:layout_marginBottom="8dp"

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

@@ -68,6 +68,8 @@
         android:layout_marginLeft="10dp"
         android:layout_toRightOf="@+id/point"
         android:background="@drawable/oa_no_criterion"
+        android:paddingLeft="5dp"
+        android:paddingRight="5dp"
         android:textColor="@color/white"
         android:textSize="@dimen/text_hine" />
 
@@ -131,6 +133,8 @@
         android:layout_marginLeft="10dp"
         android:layout_toRightOf="@+id/point2"
         android:background="@drawable/oa_no_criterion"
+        android:paddingLeft="5dp"
+        android:paddingRight="5dp"
         android:textColor="@color/white"
         android:textSize="@dimen/text_hine" />
 </RelativeLayout>

+ 16 - 12
WeiChat/src/main/res/layout/view_empty.xml

@@ -4,9 +4,11 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
+
     <RelativeLayout
-        android:layout_width="match_parent" 
+        android:layout_width="match_parent"
         android:layout_height="match_parent">
+
         <TextView
             android:id="@+id/textViewMessage"
             android:layout_width="wrap_content"
@@ -17,17 +19,19 @@
             android:text="@string/empty_message"
             android:textAppearance="?android:attr/textAppearanceMedium"
             android:textColor="@color/gray_light" />
-       <Button
-        android:id="@+id/buttonEmpty"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="16dp"
-        android:layout_below="@+id/textViewMessage"
-        android:layout_centerHorizontal="true"
-        android:visibility="gone"
-        android:text="@string/empty_button" />
+
+        <Button
+            android:id="@+id/buttonEmpty"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/textViewMessage"
+            android:layout_centerHorizontal="true"
+            android:layout_marginTop="16dp"
+            android:text="@string/empty_button"
+            android:visibility="gone" />
     </RelativeLayout>
-    <TextView 
+
+    <TextView
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
+        android:layout_height="wrap_content" />
 </RelativeLayout>

+ 27 - 3
WeiChat/src/main/res/values-v14/styles.xml

@@ -4,7 +4,7 @@
     <style name="AppTheme" parent="AppBaseTheme">
         <!-- All customizations that are NOT specific to a particular API-level can go here. -->
     </style>
-    
+
     <style name="AppBaseThemeBule" parent="Theme.AppCompat.Light.DarkActionBar">
         <item name="android:buttonStyle">@android:style/Widget.Button</item>
         <item name="android:windowAnimationStyle">@style/IMAnimationStyle</item>
@@ -22,20 +22,32 @@
     <style name="CrmThemeBlue" parent="AppBaseThemeBule">
         <item name="actionBarStyle">@style/CRM_Ttile_Bule</item>
     </style>
+
     <style name="CrmThemeCustomer" parent="AppBaseThemeBule">
         <item name="actionBarStyle">@style/CRM_Ttile_Customer</item>
     </style>
+
     <style name="CrmThemeVisit" parent="AppBaseThemeBule">
         <item name="actionBarStyle">@style/CRM_Ttile_Visit</item>
     </style>
+
     <style name="CrmThemeRank" parent="AppBaseThemeBule">
         <item name="actionBarStyle">@style/CRM_Ttile_Rank</item>
     </style>
+
+    <style name="OAThemeOutOffice" parent="AppBaseThemeBule">
+        <item name="actionBarStyle">@style/OATheme_OutOffice</item>
+    </style>
+
+    <style name="OAThemeMeet" parent="AppBaseThemeBule">
+        <item name="actionBarStyle">@style/OATheme_Meet</item>
+    </style>
+
+
     <style name="CrmThemeTask" parent="AppBaseThemeBule">
         <item name="actionBarStyle">@style/CRM_Ttile_Task</item>
     </style>
-   
-   
+
     <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
         <item name="android:buttonStyle">@android:style/Widget.Button</item>
         <item name="android:windowAnimationStyle">@style/IMAnimationStyle</item>
@@ -74,6 +86,18 @@
         <item name="android:background">@color/titleRank</item>
         <item name="background">@color/titleRank</item>
     </style>
+
+    <style name="OATheme_OutOffice" parent="IMActionBar">
+        <item name="android:background">@color/oa_outoffice</item>
+        <item name="background">@color/oa_outoffice</item>
+    </style>
+
+    <style name="OATheme_Meet" parent="IMActionBar">
+        <item name="android:background">@color/meeting</item>
+        <item name="background">@color/meeting</item>
+    </style>
+
+
     <style name="IMActionBar" parent="Widget.AppCompat.ActionBar">
         <item name="android:actionBarSize">11dp</item>
         <item name="android:icon">@drawable/action_bar_divider</item>

+ 7 - 5
WeiChat/src/main/res/values/colors.xml

@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-   <color name="crm_title_task">#D0A233</color>
+    <color name="crm_title_task">#D0A233</color>
     <!--by gongpengming-->
+    <color name="oa_outoffice">#39cea7</color>
+    <color name="meeting">#d79147</color>
     <color name="subscrip_text">#60a0a0a0</color>
     <color name="item_color1">#30a0a0a0</color>
     <color name="pop_bg">#aeaeae</color>
@@ -226,10 +228,10 @@
     <color name="titleBlue">#3C97D7</color> <!-- 青蓝色 -->
     <color name="titleCustomer">#DF8339</color>
     <color name="titleVisit">#6FB660</color>
-     <color name="titleTask">#D0A233</color>
-     <color name="titleRank">#D0A233</color>
- 
-  
+    <color name="titleTask">#D0A233</color>
+    <color name="titleRank">#D0A233</color>
+
+
     <color name="mediumblue">#0000CD</color> <!-- 中兰色 -->
     <color name="darkblue">#00008B</color> <!-- 暗蓝色 -->
     <color name="navy">#000080</color> <!-- 海军色 -->

+ 10 - 1
WeiChat/src/main/res/values/gpm_values.xml

@@ -107,7 +107,16 @@
             <item name="android:textColor">@color/text_hine</item>  
             <item name="android:textStyle">italic</item>  
     </style>
-    <!--end Style-->
+
+    <style name="style_calender">  
+        <item name="android:layout_width">0dp</item>
+
+        <item name="android:layout_height">match_parent</item>
+        <item name="android:divider">@null</item>
+        <item name="android:dividerHeight">0dp</item>
+        <item name="android:scrollbars">none</item>
+        <item name="android:scrollbarSize">0dp</item>
+    </style><!--end Style-->
 
     <dimen name="drawable_padding">5dp</dimen>
 </resources>