소스 검색

资源修改备份

Bitliker 9 년 전
부모
커밋
f9ac9dacfc
27개의 변경된 파일1190개의 추가작업 그리고 153개의 파일을 삭제
  1. 6 3
      WeiChat/src/main/AndroidManifest.xml
  2. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/message/SortSubsrciprion.java
  3. 6 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/SubscriptionDao.java
  4. 9 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/utils/OnDatePickedListener.java
  5. 5 11
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/DatePicker.java
  6. 3 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/MonthView.java
  7. 223 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/OADatePicker.java
  8. 27 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java
  9. 167 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AlarmaActivity.java
  10. 18 10
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  11. 1 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SigninActivity.java
  12. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/VisitActivity.java
  13. 68 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/alarmreceiver.java
  14. 4 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java
  15. 6 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/HttpClient.java
  16. 58 56
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/HttpUtil.java
  17. 6 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java
  18. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/SubscriptionActivity.java
  19. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/TimeUtils.java
  20. 478 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CalendarView.java
  21. BIN
      WeiChat/src/main/res/drawable-xhdpi/oa_next.png
  22. 1 1
      WeiChat/src/main/res/layout/activity_oa.xml
  23. 5 5
      WeiChat/src/main/res/layout/activity_oa__alarma.xml
  24. 17 9
      WeiChat/src/main/res/layout/activity_visit.xml
  25. 14 14
      WeiChat/src/main/res/layout/bigimage_subscription.xml
  26. 53 0
      WeiChat/src/main/res/layout/datepicker_title.xml
  27. 2 1
      WeiChat/src/main/res/layout/oa_mylistview_item.xml

+ 6 - 3
WeiChat/src/main/AndroidManifest.xml

@@ -304,6 +304,8 @@
                 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
             </intent-filter>
         </receiver>
+        <!--oA模块提醒功能本地推送-->
+        <receiver android:name=".ui.erp.activity.oa.AlarmReceiver" />
         <!-- Push服务接收客户端发送的各种请求 -->
         <receiver
             android:name="com.baidu.android.pushservice.RegistrationReceiver"
@@ -402,8 +404,6 @@
         <activity android:name=".ui.circle.PhoneSelectActivity" />
         <activity android:name=".ui.erp.activity.crm.ClientActivity" />
         <activity android:name=".ui.erp.activity.oa.SigninActivity" />
-        <activity android:name=".ui.erp.activity.oa.OA_AlarmaActivity" />
-        <activity android:name=".ui.erp.activity.oa.MeetingActivity" />
         <activity android:name=".ui.erp.activity.oa.AddMeetingActivity" />
         <activity
             android:name=".ui.erp.activity.oa.OAActivity"
@@ -459,7 +459,10 @@
             android:label="定位信息" />
         <activity
             android:name=".ui.erp.activity.oa.AlarmaActivity"
-            android:label="提醒" />
+            android:label="签到提醒" />
+        <activity
+            android:name=".ui.erp.activity.oa.MeetingActivity"
+            android:label="会议助手" />
     </application>
 
 </manifest>

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/message/SortSubsrciprion.java

@@ -6,8 +6,9 @@ import java.util.ArrayList;
  * Created by gongpm on 2016/6/14.
  */
 public class SortSubsrciprion {
-    public int num_id;
+//    public int num_id;
     public ArrayList<SubscriptionMessage> beans;
     public long tiem;
+    public String time;
 
 }

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

@@ -117,7 +117,6 @@ public class SubscriptionDao {
             values.put("SONTITLE_", message.getSONTITLE_());
             values.put("SUMDATA_", message.getSUMDATA_());
             values.put("name", name);
-
             k += db.insert(titleName, nullColumn, values);
 
         } catch (SQLException e) {
@@ -131,21 +130,23 @@ public class SubscriptionDao {
 
     public long UpdateStatus(String id, boolean status) {
         long k = 0;
+        Log.i("gongpengming", "id=" + id + "###status=" + status);
         SQLiteDatabase db = sqliteHelper.getWritableDatabase();
         ContentValues values = new ContentValues();
         if (status)
-            values.put("status_", -1);
+            values.put("status_", -1+"");
         else
-            values.put("status_", 0);
+            values.put("status_", 0+"");
         String where = "id_=?";
         String[] whereArgs = {id};
         try {
             k = db.update(titleName, values, where, whereArgs);
         } catch (SQLException e) {
-
+            Log.i("gong", "出错了" + e == null ? "" : e.getMessage());
         } finally {
             db.close();
         }
+        Log.i("gongpengming", "k=" + k);
         return k;
     }
 
@@ -174,7 +175,6 @@ public class SubscriptionDao {
                 message.setSUMDATA_(values.getString(10));
                 messages.add(message);
             }
-
         } catch (SQLException e) {
             Log.i("gong", e.getMessage());
         } finally {
@@ -210,7 +210,6 @@ public class SubscriptionDao {
                 message.setRN(values.getInt(8));
                 message.setSONTITLE_(values.getString(9));
                 message.setSUMDATA_(values.getString(10));
-
                 messages.add(message);
             }
             values.close();
@@ -221,7 +220,7 @@ public class SubscriptionDao {
 
         }
         for (int i = 0; i < messages.size(); i++) {
-            Log.i("aaaaa", messages.get(i).getTITLE_());
+            Log.i("aaaaa", messages.get(i).getID_() + "");
         }
         return messages;
     }

+ 9 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/utils/OnDatePickedListener.java

@@ -0,0 +1,9 @@
+package com.xzjmyk.pm.activity.ui.calendar.utils;
+
+/**
+ * 日期单选监听器
+ * Created by gongpm on 2016/7/11.
+ */
+public interface OnDatePickedListener {
+    void onDatePicked(String date);
+}

+ 5 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/DatePicker.java

@@ -14,6 +14,7 @@ import com.xzjmyk.pm.activity.ui.calendar.bizs.languages.DPLManager;
 import com.xzjmyk.pm.activity.ui.calendar.bizs.themes.DPTManager;
 import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
 import com.xzjmyk.pm.activity.ui.calendar.utils.MeasureUtil;
+import com.xzjmyk.pm.activity.ui.calendar.utils.OnDatePickedListener;
 
 import java.util.List;
 
@@ -35,13 +36,6 @@ public class DatePicker extends LinearLayout {
 
     private OnDateSelectedListener onDateSelectedListener;// 日期多选后监听
 
-    /**
-     * 日期单选监听器
-     */
-    public interface OnDatePickedListener {
-        void onDatePicked(String date);
-    }
-
     /**
      * 日期多选监听器
      */
@@ -61,8 +55,8 @@ public class DatePicker extends LinearLayout {
         // 设置排列方向为竖向
         setOrientation(VERTICAL);
 
-        LayoutParams llParams =
-                new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
+        LinearLayout.LayoutParams llParams =
+                new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
 
         // 标题栏根布局
         RelativeLayout rlTitle = new RelativeLayout(context);
@@ -76,7 +70,7 @@ public class DatePicker extends LinearLayout {
         llWeek.setOrientation(HORIZONTAL);
         int llWeekPadding = MeasureUtil.dp2px(context, 5);
         llWeek.setPadding(0, llWeekPadding, 0, llWeekPadding);
-        LayoutParams lpWeek = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
+        LinearLayout.LayoutParams lpWeek = new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
         lpWeek.weight = 1;
 
         // 标题栏子元素布局参数
@@ -109,7 +103,7 @@ public class DatePicker extends LinearLayout {
         tvEnsure.setText(mLManager.titleEnsure());
         tvEnsure.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
         tvEnsure.setTextColor(mTManager.colorTitle());
-        tvEnsure.setOnClickListener(new OnClickListener() {
+        tvEnsure.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 if (null != onDateSelectedListener) {

+ 3 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/MonthView.java

@@ -27,6 +27,7 @@ import com.xzjmyk.pm.activity.ui.calendar.bizs.decors.DPDecor;
 import com.xzjmyk.pm.activity.ui.calendar.bizs.themes.DPTManager;
 import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
 import com.xzjmyk.pm.activity.ui.calendar.entities.DPInfo;
+import com.xzjmyk.pm.activity.ui.calendar.utils.OnDatePickedListener;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -60,7 +61,7 @@ public class MonthView extends View {
     private DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator();
     private AccelerateInterpolator accelerateInterpolator = new AccelerateInterpolator();
     private OnDateChangeListener onDateChangeListener;
-    private DatePicker.OnDatePickedListener onDatePickedListener;
+    private OnDatePickedListener onDatePickedListener;
     private ScaleAnimationListener scaleAnimationListener;
 
     private DPMode mDPMode = DPMode.MULTIPLE;
@@ -480,7 +481,7 @@ public class MonthView extends View {
         this.onDateChangeListener = onDateChangeListener;
     }
 
-    public void setOnDatePickedListener(DatePicker.OnDatePickedListener onDatePickedListener) {
+    public void setOnDatePickedListener(OnDatePickedListener onDatePickedListener) {
         this.onDatePickedListener = onDatePickedListener;
     }
 

+ 223 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/OADatePicker.java

@@ -0,0 +1,223 @@
+package com.xzjmyk.pm.activity.ui.calendar.views;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.calendar.bizs.decors.DPDecor;
+import com.xzjmyk.pm.activity.ui.calendar.bizs.languages.DPLManager;
+import com.xzjmyk.pm.activity.ui.calendar.bizs.themes.DPTManager;
+import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
+import com.xzjmyk.pm.activity.ui.calendar.utils.MeasureUtil;
+import com.xzjmyk.pm.activity.ui.calendar.utils.OnDatePickedListener;
+
+import java.util.List;
+
+import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
+
+/**
+ * Created by gongpm on 2016/7/11.
+ */
+public class OADatePicker extends LinearLayout implements View.OnClickListener {
+    private DPTManager mTManager;// 主题管理器
+    private DPLManager mLManager;// 语言管理器
+
+    private MonthView monthView;// 月视图
+
+    private int year = 2015, month = 7;
+    private OnDateSelectedListener onDateSelectedListener;// 日期多选后监听
+    private TextView year_tv;
+    private TextView month_tv;
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.back_img:
+                month--;
+                if (month <= 0) {
+                    month = 12;
+                    year--;
+                }
+                year_tv.setText(year + "年");
+                month_tv.setText(month + "月");
+                setDate(year, month);
+                break;
+            case R.id.next_img:
+                month++;
+                if (month >= 12) {
+                    month = 1;
+                    year++;
+                }
+                year_tv.setText(year + "年");
+                month_tv.setText(month + "月");
+                setDate(year, month);
+                break;
+            case R.id.content_ll:
+                break;
+        }
+    }
+
+
+    /**
+     * 日期多选监听器
+     */
+    public interface OnDateSelectedListener {
+        void onDateSelected(List<String> date);
+    }
+
+    public OADatePicker(Context context) {
+        this(context, null);
+    }
+
+    public OADatePicker(Context context, AttributeSet attrs) {
+
+
+        super(context, attrs);
+        mTManager = DPTManager.getInstance();
+        mLManager = DPLManager.getInstance();
+
+        // 设置排列方向为竖向
+        setOrientation(VERTICAL);
+
+        LayoutParams llParams =
+                new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
+
+        // 标题栏根布局
+        View view = LayoutInflater.from(context).inflate(R.layout.datepicker_title, null);
+        RelativeLayout rlTitle = (RelativeLayout) view.findViewById(R.id.root_view);
+        rlTitle.setBackgroundColor(mTManager.colorTitleBG());
+
+        initTitleView(view);
+
+
+        addView(rlTitle, llParams);
+
+        // 周视图根布局
+        LinearLayout llWeek = new LinearLayout(context);
+        llWeek.setBackgroundColor(mTManager.colorTitleBG());
+        llWeek.setOrientation(HORIZONTAL);
+        int llWeekPadding = MeasureUtil.dp2px(context, 5);
+        llWeek.setPadding(0, llWeekPadding, 0, llWeekPadding);
+        LayoutParams lpWeek = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
+        lpWeek.weight = 1;
+        // --------------------------------------------------------------------------------周视图
+        for (int i = 0; i < mLManager.titleWeek().length; i++) {
+            TextView tvWeek = new TextView(context);
+            tvWeek.setText(mLManager.titleWeek()[i]);
+            tvWeek.setGravity(Gravity.CENTER);
+            tvWeek.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
+            tvWeek.setTextColor(mTManager.colorTitle());
+            llWeek.addView(tvWeek, lpWeek);
+        }
+        addView(llWeek, llParams);
+
+        // ------------------------------------------------------------------------------------月视图
+        monthView = new MonthView(context);
+        monthView.setOnDateChangeListener(new MonthView.OnDateChangeListener() {
+            @Override
+            public void onMonthChange(int month) {
+                month_tv.setText(mLManager.titleMonth()[month - 1]);
+            }
+
+            @Override
+            public void onYearChange(int year) {
+                String tmp = String.valueOf(year);
+                if (tmp.startsWith("-")) {
+                    tmp = tmp.replace("-", mLManager.titleBC());
+                }
+                year_tv.setText(tmp);
+            }
+        });
+        addView(monthView, llParams);
+    }
+
+    private void initTitleView(View view) {
+        view.findViewById(R.id.back_img).setOnClickListener(this);
+        view.findViewById(R.id.next_img).setOnClickListener(this);
+        view.findViewById(R.id.content_ll).setOnClickListener(this);
+        year_tv = (TextView) view.findViewById(R.id.year_tv);
+        month_tv = (TextView) view.findViewById(R.id.month_tv);
+    }
+
+    /**
+     * 设置初始化年月日期
+     *
+     * @param year  ...
+     * @param month ...
+     */
+    public void setDate(int year, int month) {
+        if (month < 1) {
+            month = 1;
+        }
+        if (month > 12) {
+            month = 12;
+        }
+        this.year = year;
+        this.month = month;
+        monthView.setDate(year, month);
+    }
+
+    public void setDPDecor(DPDecor decor) {
+        monthView.setDPDecor(decor);
+    }
+
+    /**
+     * 设置日期选择模式
+     *
+     * @param mode ...
+     */
+    public void setMode(DPMode mode) {
+        if (mode != DPMode.MULTIPLE) {
+        }
+        monthView.setDPMode(mode);
+    }
+
+    public void setFestivalDisplay(boolean isFestivalDisplay) {
+        monthView.setFestivalDisplay(isFestivalDisplay);
+    }
+
+    public void setTodayDisplay(boolean isTodayDisplay) {
+        monthView.setTodayDisplay(isTodayDisplay);
+    }
+
+    public void setHolidayDisplay(boolean isHolidayDisplay) {
+        monthView.setHolidayDisplay(isHolidayDisplay);
+    }
+
+    public void setDeferredDisplay(boolean isDeferredDisplay) {
+        monthView.setDeferredDisplay(isDeferredDisplay);
+    }
+
+    /**
+     * 设置单选监听器
+     *
+     * @param onDatePickedListener ...
+     */
+    public void setOnDatePickedListener(OnDatePickedListener onDatePickedListener) {
+        if (monthView.getDPMode() != DPMode.SINGLE) {
+            throw new RuntimeException(
+                    "Current DPMode does not SINGLE! Please call setMode set DPMode to SINGLE!");
+        }
+        monthView.setOnDatePickedListener(onDatePickedListener);
+    }
+
+    /**
+     * 设置多选监听器
+     *
+     * @param onDateSelectedListener ...
+     */
+    public void setOnDateSelectedListener(OnDateSelectedListener onDateSelectedListener) {
+        if (monthView.getDPMode() != DPMode.MULTIPLE) {
+            throw new RuntimeException(
+                    "Current DPMode does not MULTIPLE! Please call setMode set DPMode to MULTIPLE!");
+        }
+        this.onDateSelectedListener = onDateSelectedListener;
+    }
+}

+ 27 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java

@@ -26,6 +26,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.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 import org.apache.http.cookie.Cookie;
 import org.json.JSONException;
@@ -35,6 +36,7 @@ import org.json.JSONObject;
  * Created by Administrator on 2016/4/5.
  */
 public class WebViewCommActivity extends BaseActivity {
+    public static final String TIME = "WebViewCommActivity_time";
     private PullToRefreshWebView webView;
     private ProgressBar pb;
     private ImageView back;
@@ -57,14 +59,12 @@ public class WebViewCommActivity extends BaseActivity {
                     if (success) {
                         if (!jsonObject.isNull("sessionId")) {
                             CommonUtil.setSharedPreferences(WebViewCommActivity.this, "sessionId", jsonObject.getString("sessionId"));
-
                         }
-//                        doNextLoadURL();  //不敢加   当第一次加载出现错误登录erp然后进行第二次登录操作后再次加载操作
+                        doNextLoadURL();  //不敢加  当第一次加载出现错误登录erp然后进行第二次登录操作后再次加载操作
                     }
                 } catch (JSONException e) {
                     e.printStackTrace();
                 }
-
             }
         }
     };
@@ -107,6 +107,11 @@ public class WebViewCommActivity extends BaseActivity {
         if (StringUtils.isEmpty(url)) {//为空时默认为b2b平台的
             url = "http://www.baidu.com";
         }
+        long oldtime = PreferenceUtils.getLong(this, TIME, System.currentTimeMillis());
+        if (((System.currentTimeMillis() - oldtime) / (1000 * 60)) > 20) {
+            if (isCookie)
+                login(this);
+        }
         webView.getRefreshableView().getSettings().setJavaScriptEnabled(true);
         webView.getRefreshableView().getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); //设置 缓存模式
         webView.getRefreshableView().getSettings().setDomStorageEnabled(true);
@@ -119,6 +124,17 @@ public class WebViewCommActivity extends BaseActivity {
         }
         webView.getRefreshableView().loadUrl(url);
         webView.getRefreshableView().setWebViewClient(new WebViewClient() {
+            @Override
+            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+                if (isCookie) {
+                    Log.i("gongpengming", "errorCode=" + errorCode + "###" + "=description=" + description + "####failingUrl=" + failingUrl);
+                    ViewUtil.ct = WebViewCommActivity.this;
+                    ViewUtil.LoginERPTask(WebViewCommActivity.this, hander, reCode);
+                }
+
+                super.onReceivedError(view, errorCode, description, failingUrl);
+            }
+
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
                 if (!url.equals("http://www.ubtob.com/signin#")) {
                     if (isCookie) {
@@ -141,7 +157,7 @@ public class WebViewCommActivity extends BaseActivity {
             }
 
         });
-        webView.getRefreshableView().setWebChromeClient(new WebChromeClient());
+
     }
 
 
@@ -169,9 +185,7 @@ public class WebViewCommActivity extends BaseActivity {
      */
     public void synCookies(Context context, String url) {
         if (MyApplication.cookieERP == null) {
-            ViewUtil.ct = this;
-            Log.i("gongpengming","酷酷酷酷酷酷");
-            ViewUtil.LoginERPTask(this, hander, reCode);
+            login(context);
             return;
         }
         CookieSyncManager.createInstance(context);
@@ -183,7 +197,6 @@ public class WebViewCommActivity extends BaseActivity {
                 + sessionCookie.getValue() + "; domain="
                 + sessionCookie.getDomain();
         cookieManager.setCookie(url, cookieStr);//cookies是在HttpClient中获得的cookie
-        Log.i("gongpengming",cookieStr);
         CookieSyncManager.getInstance().sync();
     }
 
@@ -195,6 +208,12 @@ public class WebViewCommActivity extends BaseActivity {
         webView.getRefreshableView().clearCache(true);
     }
 
+    private void login(Context context) {
+        ViewUtil.ct = this;
+        ViewUtil.LoginERPTask(this, hander, reCode);
+        PreferenceUtils.putLong(context, TIME, System.currentTimeMillis());
+
+    }
 
     @Override
     public void onBackPressed() {

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

@@ -1,25 +1,187 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.app.TimePickerDialog;
+import android.content.Intent;
 import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
 import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.TimePicker;
 
+import com.lidroid.xutils.ViewUtils;
+import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.view.SwitchView;
+import com.xzjmyk.pm.activity.util.CalendarUtils;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
+import com.xzjmyk.pm.activity.util.TimeUtils;
 
-public class AlarmaActivity extends BaseActivity implements View.OnClickListener {
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+//签到提醒
+public class AlarmaActivity extends BaseActivity {
+    @ViewInject(R.id.isalarma_sw)
+    private SwitchView isalarma_sw;
+    @ViewInject(R.id.image_alar)
+    private ImageView image_alar;//上班时间
+    @ViewInject(R.id.image_ualar)
+    private ImageView image_ualar;//下班时间
+    @ViewInject(R.id.tv_alar)
+    private TextView tv_alar;//上班时间
+    @ViewInject(R.id.tv_ualar)
+    private TextView tv_ualar;//下班时间
+
+
+    public static String ALARMASET = "ALARMASET";
+    public static String NAME = "NAME";
+    public static String ALARMA_ISCHECKED = "ALARMA_ISCHECKED";
+    private static SimpleDateFormat formatter;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_oa__alarma);
-        getSupportActionBar().setTitle("签到提醒");
+        ViewUtils.inject(this);
+        initView();
     }
 
-    @Override
-    public void onClick(View view) {
-        switch (view.getId()) {
+    private void initView() {
+        image_alar.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                TimePickerDialog dialog = new TimePickerDialog(AlarmaActivity.this, new TimePickerDialog.OnTimeSetListener() {
+                    @Override
+                    public void onTimeSet(TimePicker timePicker, int i, int i1) {
+                        tv_alar.setText(i + ":" + i1);
+                    }
+                }, 15, 11, true);
+            }
+        });
+        tv_alar.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+            }
+
+            @Override
+            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable editable) {
+                startTharth();
+            }
+        });
+        formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        isalarma_sw.setOnCheckedChangeListener(new SwitchView.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(View view, boolean isChecked) {
+                if (isChecked) {
+                    PreferenceUtils.putBoolean(AlarmaActivity.this, ALARMA_ISCHECKED, true);
+                    startTharth();
+
+                } else {
+                    PreferenceUtils.putBoolean(AlarmaActivity.this, ALARMA_ISCHECKED, false);
+                    unArmmanager();
+                }
+            }
+
+
+        });
+
+    }
+
+    private void startTharth() {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                unArmmanager();
+                initArmmanager(shangban);
+                initArmmanager(0x12);
+            }
+        }).start();
+    }
+
+    private int shangban = 0x11;
 
+    private void initArmmanager(int type) {
+        String content = "";
+        if (shangban == type) {
+            content = "快到上班时间了,注意打卡签到";
+        } else {
+            content = "下班时间已到,注意离开时候打卡签到";
         }
+        //操作:发送一个广播,广播接收后Toast提示定时操作完成
+        Intent intent = new Intent(AlarmaActivity.this, AlarmReceiver.class);
+        intent.setAction(ALARMASET);
+        intent.putExtra(NAME, content);
+        AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
+        //设定一个五秒后的时间
+        Calendar calendarS = Calendar.getInstance();
+        calendarS.setTimeInMillis(System.currentTimeMillis());
+        String alar = "";
+        if (shangban == type) {
+            alar = tv_alar.getText().toString().trim();
+        } else {
+            alar = tv_ualar.getText().toString().trim();
+        }
+        long sendTimeMilli = getTimeDiffer(alar);
+        calendarS.add(Calendar.SECOND, (int) (sendTimeMilli / 1000));
+        alarm.set(AlarmManager.RTC_WAKEUP, calendarS.getTimeInMillis(), getPendingIntent(intent));
+    }
+
+    private long getTimeDiffer(String str) {
+        String[] strTemp = str.split(":");
+        int hh = Integer.parseInt(strTemp[0].trim());
+        int mm = Integer.parseInt(strTemp[1].trim());//获取时、分
+        String t = CalendarUtils.getCurrentYear() + "-" + CalendarUtils.getCurrentMonth() + "-" + CalendarUtils.getCurrentDate() + " "
+                + hh + ":" + mm + ":" + "00";
+        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            Date d1 = df.parse(t);
+            Date d2 = df.parse(TimeUtils.f_long_2_str(System.currentTimeMillis()));
+            return d1.getTime() - d2.getTime();//这样得到的差值是微秒级别
+
+        } catch (Exception e) {
+        }
+        return -1;
+    }
+
+    //获取日期差,返回相差天数。
+    public static long getCompareDate(String startDate, String endDate) {
+        Date date1 = null;
+        try {
+            date1 = formatter.parse(startDate);
+            Date date2 = formatter.parse(endDate);
+            long l = date2.getTime() - date1.getTime();  //获取时间差
+            long d = l / (24 * 60 * 60 * 1000);
+            return d;
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return 0;
+    }
+//通过上面的方法获得两个日期的天数差,然后用计算秒不就简单了?
+
+
+    private void unArmmanager() {
+        Intent intent = new Intent(AlarmaActivity.this, AlarmReceiver.class);
+        intent.setAction(ALARMASET);
+        PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);
+        AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
+        alarm.cancel(pi);
+    }
+
+    private PendingIntent getPendingIntent(Intent intent) {
+        return PendingIntent.getBroadcast(AlarmaActivity.this, 0, intent, 0);
     }
 
     @Override
@@ -31,6 +193,5 @@ public class AlarmaActivity extends BaseActivity implements View.OnClickListener
     private void endOfActivity() {
         //TODO 退出时候操作
         finish();
-
     }
 }

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

@@ -4,6 +4,7 @@ import android.annotation.TargetApi;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
@@ -18,12 +19,12 @@ import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
-import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
-import com.xzjmyk.pm.activity.ui.calendar.views.DatePicker;
 import com.xzjmyk.pm.activity.ui.erp.activity.SaleSelectActivity;
-import com.xzjmyk.pm.activity.util.CalendarUtils;
+import com.xzjmyk.pm.activity.view.CalendarView;
 import com.xzjmyk.pm.activity.view.MyListView;
 
+import java.util.Date;
+
 public class OAActivity extends BaseActivity implements View.OnClickListener {
     private OAActivity activity = this;
     private MyListView listview;
@@ -31,7 +32,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
     private String[] stateItems = {"状态", "确认中", "进行中", "已完成"};
     private String[] typeItems = {"类型", "任务", "日程", "拜访"};
     private String[] show_typeItems = {"展示方式", "日程", "列表"};
-    private DatePicker picker;
+    private CalendarView picker;
     private PopupMenu poAddMenu;
     private ScrollView rootScrollView;
 
@@ -49,7 +50,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
     }
 
     private void initView() {
-
         findViewById(R.id.ll_signin).setOnClickListener(this);
         findViewById(R.id.oa_img_add).setOnClickListener(this);
         findViewById(R.id.ll_outside).setOnClickListener(this);
@@ -66,15 +66,23 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
         state = (Spinner) findViewById(R.id.state);
         type = (Spinner) findViewById(R.id.type);
         show_type = (Spinner) findViewById(R.id.show_type);
-        picker = (DatePicker) findViewById(R.id.oa_picker);
+        picker = (CalendarView) findViewById(R.id.oa_picker);
         listview = (MyListView) findViewById(R.id.oa_listview);
         rootScrollView = (ScrollView) findViewById(R.id.oa_rootview);
-        picker.setDate(CalendarUtils.getCurrentYear(), CalendarUtils.getCurrentMonth());
-        picker.setMode(DPMode.SINGLE);
+        rootScrollView.requestDisallowInterceptTouchEvent(false);
+        picker.setCalendarData(new Date());
+        picker.setSelectMore(false);
+        picker.setOnItemClickListener(new CalendarView.OnItemClickListener() {
+            @Override
+            public void OnItemClick(Date selectedStartDate, Date selectedEndDate, Date downDate) {
+                Log.i("gongpengming",selectedStartDate.toString());
+                Log.i("gongpengming",selectedEndDate.toString());
+                Log.i("gongpengming",downDate.toString());
+            }
+        });
         bindAdapterForSpinner();
         listview.setAdapter(new MyListViewAdapter());
-//        rootScrollView.fullScroll(ScrollView.FOCUS_UP);
-
+        rootScrollView.smoothScrollTo(0,20);
     }
 
     private void bindAdapterForSpinner() {

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

@@ -16,7 +16,7 @@ public class SigninActivity extends BaseActivity {
     private FragmentManager manager;
     private SigninFragment signinFragment;
     private SigninSetFragment setFragment;
-    private RadioButton play_rb, setting_rb;
+    private RadioButton   setting_rb;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -29,7 +29,6 @@ public class SigninActivity extends BaseActivity {
         manager = getSupportFragmentManager();
         signinFragment = new SigninFragment();
         manager.beginTransaction().add(R.id.content_fl, signinFragment).commit();
-        play_rb = (RadioButton) findViewById(R.id.play_rb);
         setting_rb = (RadioButton) findViewById(R.id.setting_rb);
         setting_rb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
             @Override

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

@@ -9,6 +9,7 @@ import android.view.View;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 
+//拜访页面
 public class VisitActivity extends BaseActivity {
 
     @Override

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

@@ -0,0 +1,68 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.oa;
+
+import android.app.AlarmManager;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.support.v7.app.NotificationCompat;
+import android.widget.Toast;
+
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
+
+public class AlarmReceiver extends BroadcastReceiver {
+
+    private boolean isAlarma;
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+
+        if (intent.getAction().equals(AlarmaActivity.ALARMASET)) {
+            isAlarma = PreferenceUtils.getBoolean(context, AlarmaActivity.ALARMA_ISCHECKED, true);
+            Toast.makeText(context, "short alarm", Toast.LENGTH_LONG).show();
+            String nameStr = intent.getStringExtra(AlarmaActivity.NAME);
+            showNotification(context, nameStr == null ? "" : nameStr);
+        } else {
+            Toast.makeText(context, "repeating alarm", Toast.LENGTH_LONG).show();
+        }
+    }
+
+    private void showNotification(Context context, String stringExtra) {
+        NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+        String title = "签到提醒";
+        String content = stringExtra;
+        //1.实例化一个通知,指定图标、概要、时间
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+        //2.指定通知的标题、内容和intent
+        Intent intent = new Intent(context, AlarmaActivity.class);
+        PendingIntent pi = PendingIntent.getActivity(context, 0, intent, 0);
+        builder.addAction(R.drawable.uuu, title, pi);
+        builder.setSmallIcon(R.drawable.uuu);
+        builder.setContentInfo(content);
+        //3.指定声音
+        Notification notification = builder.build();
+        notification.defaults = Notification.DEFAULT_SOUND;
+        //4.发送通知
+        nm.notify(1, notification);
+        if (isAlarma) {
+            initArmmanager(context);
+        }
+    }
+
+    private final long daylong = 24 * 60 * 60 * 1000;//一天的毫秒数
+
+    //设置明天同意时间发送广播
+    private void initArmmanager(Context context) {
+        //操作:发送一个广播,广播接收后Toast提示定时操作完成
+        Intent intent = new Intent(context, AlarmReceiver.class);
+        intent.setAction(AlarmaActivity.ALARMASET);
+        AlarmManager alarm = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
+        //设定一个五秒后的时间
+        long time = System.currentTimeMillis() + daylong;//明天的这个时候
+        PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
+        alarm.set(AlarmManager.RTC_WAKEUP, time, pIntent);
+    }
+}

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

@@ -13,6 +13,7 @@ import android.view.ViewGroup;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
+import com.xzjmyk.pm.activity.ui.calendar.utils.OnDatePickedListener;
 import com.xzjmyk.pm.activity.ui.calendar.views.DatePicker;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.AlarmaActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SigninActivity;
@@ -41,6 +42,8 @@ public class SigninFragment extends EasyFragment {
     @Override
     protected void onCreateView(Bundle savedInstanceState, boolean createView) {
         setHasOptionsMenu(true);
+        long time = System.currentTimeMillis();
+        ct.getSupportActionBar().setTitle(TimeUtils.day_long_2_str(time) + "  " + TimeUtils.getWeek(time));
     }
 
     private void showDateDalog() {
@@ -53,7 +56,7 @@ public class SigninFragment extends EasyFragment {
         picker.setDate(CalendarUtils.getCurrentYear(), CalendarUtils.getCurrentMonth());
         picker.setMode(DPMode.SINGLE);
 
-        picker.setOnDatePickedListener(new DatePicker.OnDatePickedListener() {
+        picker.setOnDatePickedListener(new OnDatePickedListener() {
             @Override
             public void onDatePicked(String date) {
                 ct.getSupportActionBar().setTitle(TimeUtils.day_long_2_str(TimeUtils.s_str_2_long(date)) + "   " + TimeUtils.getWeek(date));

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

@@ -9,7 +9,9 @@ import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
 import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity;
 import com.xzjmyk.pm.activity.ui.erp.hmac.HmacUtils;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
@@ -345,11 +347,11 @@ public class HttpClient {
                         .getDomain())) {
                     // 保存erp平台的cookie
                     Log.i("Jession_cookie", "erp cookie:" + cookieStore.getCookies().get(i).getValue());
-                    MyApplication.cookieERP = cookieStore.getCookies()
-                            .get(i);
+                    PreferenceUtils.putLong(MyApplication.getInstance(), WebViewCommActivity.TIME, System.currentTimeMillis());
+                    MyApplication.cookieERP = cookieStore.getCookies().get(i);
                 } else {
-                    MyApplication.cookieERP = cookieStore.getCookies()
-                            .get(i);
+                    MyApplication.cookieERP = cookieStore.getCookies().get(i);
+                    PreferenceUtils.putLong(MyApplication.getInstance(), WebViewCommActivity.TIME, System.currentTimeMillis());
                 }
             }
 

+ 58 - 56
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/HttpUtil.java

@@ -2,7 +2,6 @@ package com.xzjmyk.pm.activity.ui.erp.net;
 
 import android.util.Log;
 
-import com.lidroid.xutils.util.LogUtils;
 import com.xzjmyk.pm.activity.ui.erp.hmac.HmacUtils;
 
 import org.apache.http.HttpResponse;
@@ -47,7 +46,7 @@ import java.util.Set;
 public class HttpUtil {
     /**
      * @author LiuJie
-     * @功能:Get 参数,请求头
+     * @功能:Get 参数, 请求头
      */
     public static Response sendGetRequest(
             String url,
@@ -78,23 +77,23 @@ public class HttpUtil {
             } else
                 buf.deleteCharAt(buf.length() - 1);
             HttpGet httpGet = new HttpGet(buf.toString());
-            if (headers!=null) {
-                for(String key:headers.keySet()){
-                    System.out.println("add header:"+key+" value:"+headers.get(key).toString());
+            if (headers != null) {
+                for (String key : headers.keySet()) {
+                    System.out.println("add header:" + key + " value:" + headers.get(key).toString());
                     httpGet.setHeader(key, headers.get(key).toString());
                 }
             }
-            httpClient.getParams().setParameter(
-                    CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8");
+            httpClient.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8");
             response = httpClient.execute(httpGet);
             return Response.getResponse(response);
         } finally {
 
         }
     }
+
     /**
      * @author LiuJie
-     * @功能:post请求  添加请求头参数
+     * @功能:post请求 添加请求头参数
      */
     public static Response sendPostRequest(
             String url,
@@ -105,7 +104,7 @@ public class HttpUtil {
         HttpResponse response = null;
         if (sign) {
             url += (url.indexOf("?") == -1 ? "?" : "&") + "_timestamp="
-                    +Long.valueOf("1441180144");
+                    + Long.valueOf("1441180144");
             url += "&_signature=" + HmacUtils.encode(url);
         }
         System.out.println(url);
@@ -120,9 +119,9 @@ public class HttpUtil {
                 }
             }
             httpPost.setEntity(new UrlEncodedFormEntity(nvps));
-            if (headers!=null) {
-                for(String key:headers.keySet()){
-                    System.out.println("add header:"+key+" value:"+headers.get(key).toString());
+            if (headers != null) {
+                for (String key : headers.keySet()) {
+                    System.out.println("add header:" + key + " value:" + headers.get(key).toString());
                     httpPost.setHeader(key, headers.get(key).toString());
                 }
             }
@@ -131,6 +130,7 @@ public class HttpUtil {
         } finally {
         }
     }
+
     /**
      * @author LiuJie
      * @功能: post  json参数
@@ -144,19 +144,19 @@ public class HttpUtil {
         HttpResponse response = null;
         if (sign) {
             url += (url.indexOf("?") == -1 ? "?" : "&") + "_timestamp="
-                    +Long.valueOf("1441180144");
+                    + Long.valueOf("1441180144");
             url += "&_signature=" + HmacUtils.encode(url);
         }
         HttpPost httpPost = new HttpPost(url);
         try {
-            if (headers!=null) {
-                for(String key:headers.keySet()){
-                    System.out.println("add header:"+key+" value:"+headers.get(key).toString());
+            if (headers != null) {
+                for (String key : headers.keySet()) {
+                    System.out.println("add header:" + key + " value:" + headers.get(key).toString());
                     httpPost.setHeader(key, headers.get(key).toString());
                 }
             }
-            if (bodyString!=null) {
-                httpPost.setEntity(new StringEntity(bodyString,"UTF-8"));
+            if (bodyString != null) {
+                httpPost.setEntity(new StringEntity(bodyString, "UTF-8"));
             }
             response = httpClient.execute(httpPost);
             return Response.getResponse(response);
@@ -168,16 +168,20 @@ public class HttpUtil {
     public static class Response {
         public int statusCode;
         public String responseText;
-        public  static CookieStore cookieStore;
+        public static CookieStore cookieStore;
+
         public int getStatusCode() {
             return statusCode;
         }
+
         public void setStatusCode(int statusCode) {
             this.statusCode = statusCode;
         }
+
         public String getResponseText() {
             return responseText;
         }
+
         public void setResponseText(String responseText) {
             this.responseText = responseText;
         }
@@ -185,6 +189,7 @@ public class HttpUtil {
         public CookieStore getCookieStore() {
             return cookieStore;
         }
+
         public void setCookieStore(CookieStore cookieStore) {
             Response.cookieStore = cookieStore;
         }
@@ -205,9 +210,9 @@ public class HttpUtil {
                 throws IllegalStateException, IOException, Exception {
 //            if (sResponse == null) {
 //                synchronized (Response.class) {// 1
-                    if (response != null) {// 2
-                        return  new Response(response);// 3
-                    }
+            if (response != null) {// 2
+                return new Response(response);// 3
+            }
 //                }
 //            }
 //            return sResponse;
@@ -216,28 +221,27 @@ public class HttpUtil {
     }
 
 
-
     /**
      * @author Administrator
      * @功能:待封装
      */
-    public static  String read2String(InputStream inStream) throws Exception {
+    public static String read2String(InputStream inStream) throws Exception {
         ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
-        byte[] buffer = new byte[1024*1024];
+        byte[] buffer = new byte[1024 * 1024];
         int len = 0;
         try {
             while ((len = inStream.read(buffer)) != -1) {
                 outSteam.write(buffer, 0, len);
             }
-        } catch(OutOfMemoryError e){
-            Log.i("result","内存溢出异常");
+        } catch (OutOfMemoryError e) {
+            Log.i("result", "内存溢出异常");
             e.printStackTrace();
-            return  null;
-        }catch (Exception e) {
-            Log.i("result","其它异常");
+            return null;
+        } catch (Exception e) {
+            Log.i("result", "其它异常");
             e.printStackTrace();
-            return  null;
-        }finally {
+            return null;
+        } finally {
             outSteam.close();
             inStream.close();
         }
@@ -249,57 +253,55 @@ public class HttpUtil {
      * @author Administrator
      * @功能:HttpUrlConnection download
      */
-    public static String download(String httpurl,String path){
-        System.out.println("start:"+new SimpleDateFormat("MM-dd:HH:mm:ss:SS").format(new Date()));
+    public static String download(String httpurl, String path) {
+        System.out.println("start:" + new SimpleDateFormat("MM-dd:HH:mm:ss:SS").format(new Date()));
         try {
             URL url = new URL(httpurl);
-            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
+            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
             connection.setRequestMethod("GET");
-            connection.setRequestProperty("Charset","UTF-8");
-            connection.setReadTimeout(50*1000);
-            connection.setConnectTimeout(50*1000);
+            connection.setRequestProperty("Charset", "UTF-8");
+            connection.setReadTimeout(50 * 1000);
+            connection.setConnectTimeout(50 * 1000);
             connection.connect();
             int file_leng = connection.getContentLength();
-            System.out.println("file length---->"+file_leng);
-            InputStream  bin=connection.getInputStream();
+            System.out.println("file length---->" + file_leng);
+            InputStream bin = connection.getInputStream();
 
             File file = new File(path);
-            if(!file.getParentFile().exists()){
+            if (!file.getParentFile().exists()) {
                 file.getParentFile().mkdirs();
             }
-            OutputStream out=new FileOutputStream(file);
-            int size=0;
-            int len=0;
+            OutputStream out = new FileOutputStream(file);
+            int size = 0;
+            int len = 0;
             byte[] buf = new byte[1024];
-            while((size=bin.read(buf))!=-1){
-                len+=size;
-                out.write(buf,0,size);
-				/* android 中为了更新进度条
+            while ((size = bin.read(buf)) != -1) {
+                len += size;
+                out.write(buf, 0, size);
+                /* android 中为了更新进度条
 				Message msg = handler.obtainMessage();
 				msg.arg1=len*100/file_leng;
 				handler.sendMessage(msg);
 				*/
                 //Thread.sleep(1000);
-                System.out.println("下载了: "+len*100/file_leng+"%\n");
+                System.out.println("下载了: " + len * 100 / file_leng + "%\n");
             }
             bin.close();
             out.close();
 
-            System.out.println("end:"+new SimpleDateFormat("MM-dd:HH:mm:ss:SS").format(new Date()));
+            System.out.println("end:" + new SimpleDateFormat("MM-dd:HH:mm:ss:SS").format(new Date()));
             return path;
         } catch (MalformedURLException e) {
             e.printStackTrace();
         } catch (ProtocolException e) {
             e.printStackTrace();
-        } catch(SocketException e){
+        } catch (SocketException e) {
             e.printStackTrace();
-        }
-        catch(SocketTimeoutException e){
+        } catch (SocketTimeoutException e) {
             System.out.println("下载超时");
-        }
-        catch (IOException e) {
+        } catch (IOException e) {
             e.printStackTrace();
-        } catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
         return null;

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

@@ -622,7 +622,6 @@ public class ViewUtil {
                 return true;
             }
         }
-
         return false;
     }
 
@@ -806,12 +805,12 @@ public class ViewUtil {
         String master = CommonUtil.getSharedPreferences(ct, "erp_master");
         String phone = CommonUtil.getSharedPreferences(ct, "user_phone");
         String password = CommonUtil.getSharedPreferences(ct, "user_password");
-        Map<String, Object> params = new HashMap<String, Object>();
+        Map<String, String> params = new HashMap<String, String>();
         params.put("username", phone);
         params.put("password", password);
         params.put("master", master);
-        httpSendRequest(ct, url, params, handler, null, what, null, null, "post");
-        //startNetThread(url, params, handler, what, null, null, "post");
+//        httpSendRequest(ct, url, params, handler, null, what, null, null, "post");
+        startNetThread(url, params, handler, what, null, null, "post");
     }
 
     // 登录ERP
@@ -819,12 +818,13 @@ public class ViewUtil {
                                     String password) {
         mdProcessDialog.setContent("正在验证ERP...");
         url = url + "mobile/login.action";
-        Map<String, Object> params = new HashMap<String, Object>();
+        Map<String, String> params = new HashMap<String, String>();
         params.put("username", username);
         params.put("password", password);
         params.put("master", master);
+//        httpSendRequest(ct, url, params, handler, null, Constants.SUCCESS_ERP, null, null, "post");
+        startNetThread(url, params, handler, Constants.SUCCESS_ERP, null, null, "post");
 
-        httpSendRequest(ct, url, params, handler, null, Constants.SUCCESS_ERP, null, null, "post");
     }
 
 

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

@@ -172,13 +172,13 @@ public class SubscriptionActivity extends BaseActivity {
                 SortSubsrciprion sortSubsrciprion = null;
                 for (int i = 0; i < SubscriptionMessages.size(); i++) {
                     sortSubsrciprion = new SortSubsrciprion();
-                    sortSubsrciprion.num_id = SubscriptionMessages.get(i).getNUM_ID_();
                     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.num_id == sortSubsrciprions.get(j).num_id) {//如果相同
+                            if (sortSubsrciprion.time.equals(sortSubsrciprions.get(j).time)) {//如果相同
                                 sortSubsrciprions.get(j).beans.add(SubscriptionMessages.get(i));
                                 break;
                             } else if (j == (sortSubsrciprions.size() - 1)) {//如果到最后一个都不相同
@@ -206,13 +206,13 @@ public class SubscriptionActivity extends BaseActivity {
                 SortSubsrciprion sortSubsrciprion = null;
                 for (int i = 0; i < SubscriptionMessages.size(); i++) {
                     sortSubsrciprion = new SortSubsrciprion();
-                    sortSubsrciprion.num_id = SubscriptionMessages.get(i).getNUM_ID_();
                     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.num_id == chche.get(j).num_id) {//如果相同
+                            if (sortSubsrciprion.time.equals(chche.get(j).time)) {//如果相同
                                 chche.get(j).beans.add(SubscriptionMessages.get(i));
                                 break;
                             } else if (j == (chche.size() - 1)) {//如果到最后一个都不相同
@@ -325,7 +325,7 @@ public class SubscriptionActivity extends BaseActivity {
             } else {
                 viewholder = (Viewholder) contextView.getTag();
             }
-            viewholder.tvTime.setText(TimeUtils.s_long_2_str(sortSubsrciprions.get(position).tiem));
+            viewholder.tvTime.setText(sortSubsrciprions.get(position).time);
             listAdapter = new ListAdapter(sortSubsrciprions.get(position).beans, position);
             viewholder.listview.setAdapter(listAdapter);
             return contextView;

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

@@ -25,6 +25,8 @@ public class TimeUtils {
     public static final SimpleDateFormat ym_format = new SimpleDateFormat("yyyyMM");
 
 
+
+    //获取指定时间在星期几
     public static String getWeek(String date) { //yyyy-MM-dd
         Calendar c = Calendar.getInstance();
         c.setTimeInMillis(TimeUtils.s_str_2_long(date));
@@ -56,7 +58,9 @@ public class TimeUtils {
 
         }
         return src;
-    }   public static String getWeek(long date) { //yyyy-MM-dd
+    }
+
+    public static String getWeek(long date) { //yyyy-MM-dd
         Calendar c = Calendar.getInstance();
         c.setTimeInMillis(date);
         String src = "";

+ 478 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CalendarView.java

@@ -0,0 +1,478 @@
+package com.xzjmyk.pm.activity.view;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.Typeface;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * 日历控件 功能:获得点选的日期区间
+ * update by:gongpengming 2016/07/11
+ */
+public class CalendarView extends View implements View.OnTouchListener {
+    private final static String TAG = "anCalendar";
+    private Date selectedStartDate;
+    private Date selectedEndDate;
+    private Date curDate; // 当前日历显示的月
+    private Date today; // 今天的日期文字显示红色
+    private Date downDate; // 手指按下状态时临时日期
+    private Date showFirstDate, showLastDate; // 日历显示的第一个日期和最后一个日期
+    private int downIndex; // 按下的格子索引
+    private Calendar calendar;
+    private Surface surface;
+    private int[] date = new int[42]; // 日历显示数字
+    private int curStartIndex, curEndIndex; // 当前显示的日历起始的索引
+    private boolean completed = false; // 为false表示只选择了开始日期,true表示结束日期也选择了
+    private boolean isSelectMore = false;
+    //给控件设置监听事件
+    private OnItemClickListener onItemClickListener;
+
+    public CalendarView(Context context) {
+        super(context);
+        init();
+    }
+
+    public CalendarView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    private void init() {
+        //获取当前日期对象
+        curDate = selectedStartDate = selectedEndDate = today = new Date();
+        calendar = Calendar.getInstance();
+        calendar.setTime(curDate);
+        surface = new Surface();
+        surface.density = getResources().getDisplayMetrics().density;
+        setBackgroundColor(surface.bgColor);
+        setOnTouchListener(this);
+    }
+
+    //计算视图大小
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        surface.width = getResources().getDisplayMetrics().widthPixels;
+        surface.height =  (getResources().getDisplayMetrics().heightPixels * 2 / 5);
+        widthMeasureSpec = MeasureSpec.makeMeasureSpec(surface.width, MeasureSpec.EXACTLY);
+        heightMeasureSpec = MeasureSpec.makeMeasureSpec(surface.height, MeasureSpec.EXACTLY);
+        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right,
+                            int bottom) {
+        if (changed) {
+            surface.init();
+        }
+        super.onLayout(changed, left, top, right, bottom);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        Log.d(TAG, "onDraw");
+        // 画框
+        canvas.drawPath(surface.boxPath, surface.borderPaint);
+        float weekTextY = surface.monthHeight + surface.weekHeight * 3 / 4f;
+        for (int i = 0; i < surface.weekText.length; i++) {
+            float weekTextX = i
+                    * surface.cellWidth
+                    + (surface.cellWidth - surface.weekPaint
+                    .measureText(surface.weekText[i])) / 2f;
+            canvas.drawText(surface.weekText[i], weekTextX, weekTextY,
+                    surface.weekPaint);
+        }
+
+        // 计算日期
+        calculateDate();
+        // 按下状态,选择状态背景色
+        drawDownOrSelectedBg(canvas);
+        // write date number
+        // today index
+        int todayIndex = -1;
+        calendar.setTime(curDate);
+        String curYearAndMonth = calendar.get(Calendar.YEAR) + ""
+                + calendar.get(Calendar.MONTH);
+        calendar.setTime(today);
+        String todayYearAndMonth = calendar.get(Calendar.YEAR) + ""
+                + calendar.get(Calendar.MONTH);
+        if (curYearAndMonth.equals(todayYearAndMonth)) {
+            int todayNumber = calendar.get(Calendar.DAY_OF_MONTH);
+            todayIndex = curStartIndex + todayNumber - 1;
+        }
+        for (int i = 0; i < 42; i++) {
+            int color = surface.textColor;
+            if (isLastMonth(i)) {
+                color = surface.borderColor;
+            } else if (isNextMonth(i)) {
+                color = surface.borderColor;
+            }
+            if (todayIndex != -1 && i == todayIndex) {
+                color = surface.todayNumberColor;
+            }
+            drawCellText(canvas, i, date[i] + "", color);
+        }
+        super.onDraw(canvas);
+    }
+
+    private void calculateDate() {
+        calendar.setTime(curDate);
+        calendar.set(Calendar.DAY_OF_MONTH, 1);
+        int dayInWeek = calendar.get(Calendar.DAY_OF_WEEK);
+        Log.d(TAG, "day in week:" + dayInWeek);
+        int monthStart = dayInWeek;
+        if (monthStart == 1) {
+            monthStart = 8;
+        }
+        monthStart -= 1;  //以日为开头-1,以星期一为开头-2
+        curStartIndex = monthStart;
+        date[monthStart] = 1;
+        // last month
+        if (monthStart > 0) {
+            calendar.set(Calendar.DAY_OF_MONTH, 0);
+            int dayInmonth = calendar.get(Calendar.DAY_OF_MONTH);
+            for (int i = monthStart - 1; i >= 0; i--) {
+                date[i] = dayInmonth;
+                dayInmonth--;
+            }
+            calendar.set(Calendar.DAY_OF_MONTH, date[0]);
+        }
+        showFirstDate = calendar.getTime();
+        // this month
+        calendar.setTime(curDate);
+        calendar.add(Calendar.MONTH, 1);
+        calendar.set(Calendar.DAY_OF_MONTH, 0);
+        // calendar.get(Calendar.DAY_OF_MONTH));
+        int monthDay = calendar.get(Calendar.DAY_OF_MONTH);
+        for (int i = 1; i < monthDay; i++) {
+            date[monthStart + i] = i + 1;
+        }
+        curEndIndex = monthStart + monthDay;
+        // next month
+        for (int i = monthStart + monthDay; i < 42; i++) {
+            date[i] = i - (monthStart + monthDay) + 1;
+        }
+        if (curEndIndex < 42) {
+            // 显示了下一月的
+            calendar.add(Calendar.DAY_OF_MONTH, 1);
+        }
+        calendar.set(Calendar.DAY_OF_MONTH, date[41]);
+        showLastDate = calendar.getTime();
+    }
+
+    /**
+     * @param canvas
+     * @param index
+     * @param text
+     */
+    private void drawCellText(Canvas canvas, int index, String text, int color) {
+        int x = getXByIndex(index);
+        int y = getYByIndex(index);
+        surface.datePaint.setColor(color);
+        float cellY = surface.monthHeight + surface.weekHeight + (y - 1)
+                * surface.cellHeight + surface.cellHeight * 3 / 4f;
+        float cellX = (surface.cellWidth * (x - 1))
+                + (surface.cellWidth - surface.datePaint.measureText(text))
+                / 2f;
+        canvas.drawText(text, cellX, cellY, surface.datePaint);
+    }
+
+    /**
+     * @param canvas
+     * @param index
+     * @param color
+     */
+    private void drawCellBg(Canvas canvas, int index, int color) {
+        int x = getXByIndex(index);
+        int y = getYByIndex(index);
+        surface.cellBgPaint.setColor(color);
+        float left = surface.cellWidth * (x - 1) + surface.borderWidth;
+        float top = surface.monthHeight + surface.weekHeight + (y - 1)
+                * surface.cellHeight + surface.borderWidth;
+        canvas.drawRect(left, top, left + surface.cellWidth
+                - surface.borderWidth, top + surface.cellHeight
+                - surface.borderWidth, surface.cellBgPaint);
+    }
+
+    private void drawDownOrSelectedBg(Canvas canvas) {
+        // down and not up
+        if (downDate != null) {
+            drawCellBg(canvas, downIndex, surface.cellDownColor);
+        }
+        // selected bg color
+        if (!selectedEndDate.before(showFirstDate)
+                && !selectedStartDate.after(showLastDate)) {
+            int[] section = new int[]{-1, -1};
+            calendar.setTime(curDate);
+            calendar.add(Calendar.MONTH, -1);
+            findSelectedIndex(0, curStartIndex, calendar, section);
+            if (section[1] == -1) {
+                calendar.setTime(curDate);
+                findSelectedIndex(curStartIndex, curEndIndex, calendar, section);
+            }
+            if (section[1] == -1) {
+                calendar.setTime(curDate);
+                calendar.add(Calendar.MONTH, 1);
+                findSelectedIndex(curEndIndex, 42, calendar, section);
+            }
+            if (section[0] == -1) {
+                section[0] = 0;
+            }
+            if (section[1] == -1) {
+                section[1] = 41;
+            }
+            for (int i = section[0]; i <= section[1]; i++) {
+                drawCellBg(canvas, i, surface.cellSelectedColor);
+            }
+        }
+    }
+
+    private void findSelectedIndex(int startIndex, int endIndex,
+                                   Calendar calendar, int[] section) {
+        for (int i = startIndex; i < endIndex; i++) {
+            calendar.set(Calendar.DAY_OF_MONTH, date[i]);
+            Date temp = calendar.getTime();
+            // Log.d(TAG, "temp:" + temp.toLocaleString());
+            if (temp.compareTo(selectedStartDate) == 0) {
+                section[0] = i;
+            }
+            if (temp.compareTo(selectedEndDate) == 0) {
+                section[1] = i;
+                return;
+            }
+        }
+    }
+
+    public Date getSelectedStartDate() {
+        return selectedStartDate;
+    }
+
+    public Date getSelectedEndDate() {
+        return selectedEndDate;
+    }
+
+    private boolean isLastMonth(int i) {
+        if (i < curStartIndex) {
+            return true;
+        }
+        return false;
+    }
+
+    private boolean isNextMonth(int i) {
+        if (i >= curEndIndex) {
+            return true;
+        }
+        return false;
+    }
+
+    private int getXByIndex(int i) {
+        return i % 7 + 1; // 1 2 3 4 5 6 7
+    }
+
+    private int getYByIndex(int i) {
+        return i / 7 + 1; // 1 2 3 4 5 6
+    }
+
+    // 获得当前应该显示的年月
+    public String getYearAndmonth() {
+        calendar.setTime(curDate);
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH) + 1;
+        return year + "-" + month;
+    }
+
+    //上一月
+    public String clickLeftMonth() {
+        calendar.setTime(curDate);
+        calendar.add(Calendar.MONTH, -1);
+        curDate = calendar.getTime();
+        invalidate();
+        return getYearAndmonth();
+    }
+
+    //下一月
+    public String clickRightMonth() {
+        calendar.setTime(curDate);
+        calendar.add(Calendar.MONTH, 1);
+        curDate = calendar.getTime();
+        invalidate();
+        return getYearAndmonth();
+    }
+
+    //设置日历时间
+    public void setCalendarData(Date date) {
+        calendar.setTime(date);
+        invalidate();
+    }
+
+    //获取日历时间
+    public void getCalendatData() {
+        calendar.getTime();
+    }
+
+    //设置是否多选
+    public boolean isSelectMore() {
+        return isSelectMore;
+    }
+
+    public void setSelectMore(boolean isSelectMore) {
+        this.isSelectMore = isSelectMore;
+    }
+
+    private void setSelectedDateByCoor(float x, float y) {
+        // cell click down
+        if (y > surface.monthHeight + surface.weekHeight) {
+            int m = (int) (Math.floor(x / surface.cellWidth) + 1);
+            int n = (int) (Math
+                    .floor((y - (surface.monthHeight + surface.weekHeight))
+                            / Float.valueOf(surface.cellHeight)) + 1);
+            downIndex = (n - 1) * 7 + m - 1;
+            Log.d(TAG, "downIndex:" + downIndex);
+            calendar.setTime(curDate);
+            if (isLastMonth(downIndex)) {
+                calendar.add(Calendar.MONTH, -1);
+            } else if (isNextMonth(downIndex)) {
+                calendar.add(Calendar.MONTH, 1);
+            }
+            calendar.set(Calendar.DAY_OF_MONTH, date[downIndex]);
+            downDate = calendar.getTime();
+        }
+        invalidate();
+    }
+
+    @Override
+    public boolean onTouch(View v, MotionEvent event) {
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                setSelectedDateByCoor(event.getX(), event.getY());
+                break;
+            case MotionEvent.ACTION_UP:
+                if (downDate != null) {
+                    if (isSelectMore) {
+                        if (!completed) {
+                            if (downDate.before(selectedStartDate)) {
+                                selectedEndDate = selectedStartDate;
+                                selectedStartDate = downDate;
+                            } else {
+                                selectedEndDate = downDate;
+                            }
+                            completed = true;
+                            //响应监听事件
+                            onItemClickListener.OnItemClick(selectedStartDate, selectedEndDate, downDate);
+                        } else {
+                            selectedStartDate = selectedEndDate = downDate;
+                            completed = false;
+                        }
+                    } else {
+                        selectedStartDate = selectedEndDate = downDate;
+                        //响应监听事件
+                        onItemClickListener.OnItemClick(selectedStartDate, selectedEndDate, downDate);
+                    }
+                    invalidate();
+                }
+
+                break;
+        }
+        return true;
+    }
+
+    //给控件设置监听事件
+    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
+        this.onItemClickListener = onItemClickListener;
+    }
+
+    //监听接口
+    public interface OnItemClickListener {
+        void OnItemClick(Date selectedStartDate, Date selectedEndDate, Date downDate);
+    }
+
+    /**
+     * 1. 布局尺寸 2. 文字颜色,大小 3. 当前日期的颜色,选择的日期颜色
+     */
+    private class Surface {
+        public float density;
+        public int width; // 整个控件的宽度
+        public int height; // 整个控件的高度
+        public float monthHeight; // 显示月的高度
+        public float weekHeight; // 显示星期的高度
+        public float cellWidth; // 日期方框宽度
+        public float cellHeight; // 日期方框高度
+        public float borderWidth;
+        public int bgColor = Color.parseColor("#FFFFFF");
+        private int textColor = Color.BLACK;
+        private int btnColor = Color.parseColor("#666666");
+        private int borderColor = Color.parseColor("#CCCCCC");
+        public int todayNumberColor = Color.RED;
+        public int cellDownColor = Color.parseColor("#CCFFFF");
+        public int cellSelectedColor = Color.parseColor("#99CCFF");
+        public Paint borderPaint;
+        public Paint monthPaint;
+        public Paint weekPaint;
+        public Paint datePaint;
+        public Paint monthChangeBtnPaint;
+        public Paint cellBgPaint;
+        public Path boxPath; // 边框路径
+        public String[] weekText = {"日", "一", "二", "三", "四", "五", "六"};
+
+        public void init() {
+            float temp = height / 7f;
+            monthHeight = 0;//(float) ((temp + temp * 0.3f) * 0.6);
+            weekHeight = (float) ((temp + temp * 0.3f) * 0.7);
+            cellHeight = (height - monthHeight - weekHeight) / 6f;
+            cellWidth = width / 7f;
+            borderPaint = new Paint();
+            borderPaint.setColor(borderColor);
+            borderPaint.setStyle(Paint.Style.STROKE);
+            borderWidth = (float) (0.5 * density);
+            borderWidth = borderWidth < 1 ? 1 : borderWidth;
+            borderPaint.setStrokeWidth(borderWidth);
+            monthPaint = new Paint();
+            monthPaint.setColor(textColor);
+            monthPaint.setAntiAlias(true);
+            float textSize = cellHeight * 0.4f;
+            monthPaint.setTextSize(textSize);
+            monthPaint.setTypeface(Typeface.DEFAULT_BOLD);
+            weekPaint = new Paint();
+            weekPaint.setColor(textColor);
+            weekPaint.setAntiAlias(true);
+            float weekTextSize = weekHeight * 0.6f;
+            weekPaint.setTextSize(weekTextSize);
+            weekPaint.setTypeface(Typeface.DEFAULT_BOLD);
+            datePaint = new Paint();
+            datePaint.setColor(textColor);
+            datePaint.setAntiAlias(true);
+            float cellTextSize = cellHeight * 0.5f;
+            datePaint.setTextSize(cellTextSize);
+            datePaint.setTypeface(Typeface.DEFAULT_BOLD);
+            boxPath = new Path();
+            boxPath.rLineTo(width, 0);
+            boxPath.moveTo(0, monthHeight + weekHeight);
+            boxPath.rLineTo(width, 0);
+            for (int i = 1; i < 6; i++) {
+                boxPath.moveTo(0, monthHeight + weekHeight + i * cellHeight);
+                boxPath.rLineTo(width, 0);
+                boxPath.moveTo(i * cellWidth, monthHeight);
+                boxPath.rLineTo(0, height - monthHeight);
+            }
+            boxPath.moveTo(6 * cellWidth, monthHeight);
+            boxPath.rLineTo(0, height - monthHeight);
+            monthChangeBtnPaint = new Paint();
+            monthChangeBtnPaint.setAntiAlias(true);
+            monthChangeBtnPaint.setStyle(Paint.Style.FILL_AND_STROKE);
+            monthChangeBtnPaint.setColor(btnColor);
+            cellBgPaint = new Paint();
+            cellBgPaint.setAntiAlias(true);
+            cellBgPaint.setStyle(Paint.Style.FILL);
+            cellBgPaint.setColor(cellSelectedColor);
+        }
+    }
+}

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


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

@@ -392,7 +392,7 @@
             android:layout_height="1px"
             android:background="@color/item_line" />
 
-        <com.xzjmyk.pm.activity.ui.calendar.views.DatePicker
+        <com.xzjmyk.pm.activity.view.CalendarView
             android:id="@+id/oa_picker"
             android:layout_width="match_parent"
             android:layout_height="wrap_content" />

+ 5 - 5
WeiChat/src/main/res/layout/activity_oa__alarma.xml

@@ -6,9 +6,6 @@
     android:orientation="vertical"
     tools:context=".ui.erp.activity.oa.AlarmaActivity">
 
-
-
-
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height"
@@ -24,7 +21,7 @@
             android:textSize="@dimen/text_main" />
 
         <com.xzjmyk.pm.activity.ui.erp.view.SwitchView
-            android:id="@+id/cb_task_reply"
+            android:id="@+id/isalarma_sw"
             android:layout_width="50dp"
             android:layout_height="35dp"
             android:layout_alignParentRight="true"
@@ -47,6 +44,7 @@
 
         <ImageView
             android:id="@+id/image_alar"
+            android:clickable="true"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_alignParentRight="true"
@@ -55,12 +53,13 @@
             android:src="@drawable/alar" />
 
         <TextView
+            android:id="@+id/tv_alar"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerVertical="true"
             android:layout_marginRight="15dp"
             android:layout_toLeftOf="@+id/image_alar"
-            android:text="08 : 20"
+            android:text="08:20"
             android:textSize="@dimen/text_main" />
     </RelativeLayout>
 
@@ -88,6 +87,7 @@
             android:src="@drawable/alar" />
 
         <TextView
+            android:id="@+id/tv_ualar"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerVertical="true"

+ 17 - 9
WeiChat/src/main/res/layout/activity_visit.xml

@@ -10,9 +10,7 @@
         android:layout_height="match_parent"
         android:orientation="vertical">
 
-        <RelativeLayout
-            style="@style/IMTbleLine_UP"
-            android:layout_marginTop="10dp">
+        <RelativeLayout style="@style/IMTbleLine_UP">
 
             <TextView
                 style="@style/add_signin_tv_main"
@@ -23,12 +21,22 @@
             <TextView
                 style="@style/add_signin_tv_hine"
                 android:layout_alignParentRight="true"
+                android:drawableRight="@drawable/oa_next"
                 android:text="默认系统时间" />
         </RelativeLayout>
 
-        <RelativeLayout
-            style="@style/IMTbleLine_UP"
-            android:layout_marginTop="10dp">
+        <View
+            android:layout_width="1px"
+            android:layout_height="match_parent"
+            android:background="@color/item_line" />
+
+        <View
+            android:layout_width="1px"
+            android:layout_height="match_parent"
+            android:layout_marginTop="10dp"
+            android:background="@color/item_line" />
+
+        <RelativeLayout style="@style/IMTbleLine_UP">
 
             <TextView
                 style="@style/add_signin_tv_main"
@@ -40,7 +48,7 @@
                 android:id="@+id/location_tv"
                 style="@style/add_signin_tv_hine"
                 android:layout_alignParentRight="true"
-                android:drawableRight="@drawable/set_list_next"
+                android:drawableRight="@drawable/oa_next"
                 android:text="广东深圳市南山XXXX" />
         </RelativeLayout>
 
@@ -65,7 +73,7 @@
             <TextView
                 style="@style/add_signin_tv_hine"
                 android:layout_alignParentRight="true"
-                android:drawableRight="@drawable/set_list_next"
+                android:drawableRight="@drawable/oa_next"
                 android:text="广东深圳市南山XXXX" />
         </RelativeLayout>
 
@@ -82,7 +90,7 @@
             <TextView
                 style="@style/add_signin_tv_hine"
                 android:layout_alignParentRight="true"
-                android:drawableRight="@drawable/set_list_next"
+                android:drawableRight="@drawable/oa_next"
                 android:text="广东深圳市南山XXXX" />
         </RelativeLayout>
 

+ 14 - 14
WeiChat/src/main/res/layout/bigimage_subscription.xml

@@ -2,14 +2,14 @@
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginTop="10dp">
+    android:padding="10dp">
 
     <RelativeLayout
         android:id="@+id/small_ll"
         android:layout_width="match_parent"
         android:layout_height="100dp"
-        android:visibility="gone"
-        android:orientation="horizontal">
+        android:orientation="horizontal"
+        android:visibility="gone">
 
         <TextView
             android:id="@+id/small_tv"
@@ -19,8 +19,7 @@
             android:layout_marginTop="8dp"
             android:maxLines="3"
             android:padding="8dp"
-
-            android:textSize="18sp" />
+            android:textSize="@dimen/text_main" />
 
         <TextView
             android:id="@+id/sub_title_tv"
@@ -32,8 +31,8 @@
             android:layout_toLeftOf="@+id/small_img"
             android:ellipsize="end"
             android:lines="1"
-            android:padding="8dp"
-            android:textSize="14sp" />
+            android:padding="4dp"
+            android:textSize="@dimen/text_min" />
 
         <TextView
             android:id="@+id/isre_tv"
@@ -53,7 +52,7 @@
             android:layout_alignParentRight="true"
             android:layout_centerVertical="true"
             android:layout_marginRight="5dp"
-            android:background="@color/background"
+            android:background="@color/hintColor"
             android:scaleType="fitXY"
             android:src="@drawable/list_01" />
     </RelativeLayout>
@@ -62,8 +61,8 @@
         android:id="@+id/big_rl"
         android:layout_width="match_parent"
         android:layout_height="130dp"
-        android:padding="5dp"
-        android:visibility="gone">
+
+        >
 
         <ImageView
             android:id="@+id/big_img"
@@ -79,18 +78,19 @@
             android:background="@color/subscrip_text"
             android:gravity="center_horizontal"
             android:textColor="@color/white"
-            android:textSize="18sp" />
+            android:textSize="@dimen/text_main" />
 
         <TextView
             android:id="@+id/big_sub_title_tv"
-            android:layout_width="wrap_content"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
             android:layout_marginBottom="5dp"
             android:layout_marginLeft="10dp"
             android:ellipsize="end"
+            android:background="@color/subscrip_text"
             android:textColor="@color/white"
-            android:textSize="14sp" />
+            android:textSize="@dimen/text_min" />
 
         <TextView
             android:id="@+id/big_isre_tv"
@@ -99,6 +99,6 @@
             android:layout_alignParentRight="true"
             android:layout_below="@+id/big_tv"
             android:layout_marginRight="5dp"
-            android:textSize="14sp" />
+            android:textSize="@dimen/text_hine" />
     </RelativeLayout>
 </FrameLayout>

+ 53 - 0
WeiChat/src/main/res/layout/datepicker_title.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/root_view"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/red"
+    android:padding="5dp">
+
+    <LinearLayout
+        android:id="@+id/content_ll"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/year_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="2016年  "
+            android:textColor="@color/white"
+            android:textSize="@dimen/text_main" />
+
+        <TextView
+            android:id="@+id/month_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="  7月"
+            android:textColor="@color/white"
+            android:textSize="@dimen/text_main" />
+    </LinearLayout>
+
+    <ImageView
+        android:clickable="true"
+        android:id="@+id/back_img"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:layout_marginRight="30dp"
+        android:layout_toLeftOf="@+id/content_ll"
+        android:src="@drawable/cyberplayer_retreat_media" />
+
+    <ImageView
+        android:clickable="true"
+        android:id="@+id/next_img"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:layout_marginLeft="30dp"
+        android:layout_toRightOf="@+id/content_ll"
+        android:src="@drawable/cyberplayer_next_play" />
+</RelativeLayout>

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

@@ -2,9 +2,10 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:descendantFocusability="blocksDescendants"
     android:padding="10dp">
 
-    <TextView
+     <TextView
         android:id="@+id/item_name_tv"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"