瀏覽代碼

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

SpringBoots 9 年之前
父節點
當前提交
6ee93fc0be
共有 33 個文件被更改,包括 517 次插入189 次删除
  1. 0 12
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/message/SortSubsrciprion.java
  2. 47 19
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/message/SubscriptionMessage.java
  3. 3 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/DatabaseManager.java
  4. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  5. 25 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/SelectCalendarActivity.java
  6. 77 46
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MsgsSecondCommonActivity.java
  7. 11 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  8. 4 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkActivity.java
  9. 11 12
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkDailyAddActivity.java
  10. 4 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/MessageAdapter.java
  11. 9 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBManager.java
  12. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/AttendanceFragment.java
  13. 6 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorksFragment.java
  14. 148 17
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MessagePresenter.java
  15. 2 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/WorkPresenter.java
  16. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IMessageView.java
  17. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/tree/TreeHelper.java
  18. 115 19
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/OfficeAddressSettingsActivity.java
  19. 29 23
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SignSeniorSettingActivity.java
  20. 二進制
      WeiChat/src/main/res/drawable-hdpi/gongzuotixing.png
  21. 二進制
      WeiChat/src/main/res/drawable-hdpi/putongzhihui.png
  22. 二進制
      WeiChat/src/main/res/drawable-hdpi/zhihuixiaoxi.png
  23. 二進制
      WeiChat/src/main/res/drawable-xhdpi/gongzuotixing.png
  24. 二進制
      WeiChat/src/main/res/drawable-xhdpi/putongzhihui.png
  25. 二進制
      WeiChat/src/main/res/drawable-xhdpi/setting.png
  26. 二進制
      WeiChat/src/main/res/drawable-xhdpi/zhihuixiaoxi.png
  27. 二進制
      WeiChat/src/main/res/drawable-xxhdpi/gongzuotixing.png
  28. 二進制
      WeiChat/src/main/res/drawable-xxhdpi/putongzhihui.png
  29. 二進制
      WeiChat/src/main/res/drawable-xxhdpi/zhihuixiaoxi.png
  30. 1 1
      WeiChat/src/main/res/layout/activity_oamain.xml
  31. 1 0
      WeiChat/src/main/res/layout/fragment_me.xml
  32. 2 1
      WeiChat/src/main/res/layout/item_attendance.xml
  33. 16 0
      WeiChat/src/main/res/layout/msgs_long_click.xml

+ 0 - 12
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/message/SortSubsrciprion.java

@@ -1,12 +0,0 @@
-package com.xzjmyk.pm.activity.bean.message;
-
-import java.util.ArrayList;
-
-/**
- * Created by Bitliker on 2016/6/14.
- */
-public class SortSubsrciprion {
-    public ArrayList<SubscriptionMessage> beans;
-    public long tiem;
-    public String time;
-}

+ 47 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/message/SubscriptionMessage.java

@@ -1,11 +1,12 @@
 package com.xzjmyk.pm.activity.bean.message;
 
-import java.io.Serializable;
+import android.os.Parcel;
+import android.os.Parcelable;
 
 /**
  * Created by gongpm on 2016/6/3.
  */
-public class SubscriptionMessage implements Serializable{
+public class SubscriptionMessage implements Parcelable{
 
     private int ID_;
     private int NUM_ID_;        //订阅id
@@ -16,24 +17,51 @@ public class SubscriptionMessage implements Serializable{
     private int STATUS_;      //阅读状态
     private int EMP_ID_;
     private int RN;
-//    private String SONTITLE_;
-    private String SUMDATA_;
 
-//    public String getSONTITLE_() {
-//        return SONTITLE_;
-//    }
-//
-//    public void setSONTITLE_(String SONTITLE_) {
-//        this.SONTITLE_ = SONTITLE_;
-//    }
-
-    public String getSUMDATA_() {
-        return SUMDATA_;
-    }
-
-    public void setSUMDATA_(String SUMDATA_) {
-        this.SUMDATA_ = SUMDATA_;
-    }
+    public SubscriptionMessage(){}
+
+
+    protected SubscriptionMessage(Parcel in) {
+        ID_ = in.readInt();
+        NUM_ID_ = in.readInt();
+        INSTANCE_ID_ = in.readInt();
+        CREATEDATE_ = in.readString();
+        TITLE_ = in.readString();
+        SON_TITLE_ = in.readString();
+        STATUS_ = in.readInt();
+        EMP_ID_ = in.readInt();
+        RN = in.readInt();
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(ID_);
+        dest.writeInt(NUM_ID_);
+        dest.writeInt(INSTANCE_ID_);
+        dest.writeString(CREATEDATE_);
+        dest.writeString(TITLE_);
+        dest.writeString(SON_TITLE_);
+        dest.writeInt(STATUS_);
+        dest.writeInt(EMP_ID_);
+        dest.writeInt(RN);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    public static final Creator<SubscriptionMessage> CREATOR = new Creator<SubscriptionMessage>() {
+        @Override
+        public SubscriptionMessage createFromParcel(Parcel in) {
+            return new SubscriptionMessage(in);
+        }
+
+        @Override
+        public SubscriptionMessage[] newArray(int size) {
+            return new SubscriptionMessage[size];
+        }
+    };
 
     public int getID_() {
         return ID_;

+ 3 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/DatabaseManager.java

@@ -3,6 +3,8 @@ package com.xzjmyk.pm.activity.db;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 
+import com.xzjmyk.pm.activity.ui.erp.db.DBOpenHelper;
+
 import java.util.concurrent.atomic.AtomicInteger;
 
 public class DatabaseManager {
@@ -22,8 +24,7 @@ public class DatabaseManager {
 
     public static synchronized DatabaseManager getInstance() {
         if (instance == null) {
-            throw new IllegalStateException(DatabaseManager.class.getSimpleName() +
-                    " is not initialized, call initializeInstance(..) method first.");
+            initializeInstance(DBOpenHelper.getInstance());
         }
         return instance;
     }

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java

@@ -681,8 +681,8 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         main_tab_three_tv = (TextView) findViewById(R.id.main_tab_three_tv);
 
 //        //TODO 当前隐藏新功能提醒红点
-//        PreferenceUtils.putInt(MainActivity.NEW_FUNCTION_NOTICE, 1);
-//        PushManager.resumeWork(MyApplication.getInstance());
+        PreferenceUtils.putInt(MainActivity.NEW_FUNCTION_NOTICE, 1);
+        PushManager.resumeWork(MyApplication.getInstance());
 
         int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
         if (new_function_notice == 1) {

+ 25 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/SelectCalendarActivity.java

@@ -10,6 +10,7 @@ import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -240,11 +241,21 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                 v_date_start.setText(startDate.substring(0, startDate.length() - 3));
                 v_date_end.setText(endDate.substring(0, endDate.length() - 3));
                 currentSelectDate = startDate.substring(0, 10);
+                Log.v("startDate1",startDate);
+                Log.v("endDate1",endDate);
+                Log.v("v_date_start1",v_date_start.getText().toString());
+                Log.v("v_date_end1",v_date_end.getText().toString());
+                Log.d("currentSelectDate1",currentSelectDate);
             }else{
                 String currentDate = TimeUtils.long_to_yMdHm_str(System.currentTimeMillis());
-                v_date_start.setText(currentDate.substring(0,currentDate.length() - 3));
-                v_date_end.setText(currentDate.substring(0,currentDate.length() - 3));
-                currentSelectDate = currentDate.substring(0,10);
+                v_date_start.setText(currentDate.substring(0,currentDate.length() ));
+                v_date_end.setText(currentDate.substring(0,currentDate.length()));
+                currentSelectDate = currentDate.substring(0, 10);
+                Log.v("startDate2", currentDate);
+                Log.v("endDate2",currentDate);
+                Log.v("v_date_start2", v_date_start.getText().toString());
+                Log.v("v_date_end2", v_date_end.getText().toString());
+                Log.d("currentSelectDate2",currentSelectDate);
             }
         }
         initListener();
@@ -302,14 +313,16 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                         //切换到开始时间
                         swichDateButton(false);//要不要清楚日历状态?
                         startDate = false;
-                        if (!StringUtils.isEmpty(v_date_end.getText().toString())) {
-                            currentSelectDate = v_date_end.getText().toString().substring(0, 10);//清空
+                        if (!StringUtils.isEmpty(v_date_start.getText().toString())) {
+                            currentSelectDate = v_date_start.getText().toString().substring(0, 10);//清空
+                            Log.d("currentSelectDate3",currentSelectDate);
                         } else {
-                            currentSelectDate = null;//清空  
+                            currentSelectDate = null;//清空
                         }
                         v_date_end.setText(v_date_start.getText().toString());
                     } else {
                         //结束时间
+                        Log.d("currentSelectDate4",currentSelectDate);
                         v_date_end.setText(currentSelectDate + " " + modle.tv_text.getText().toString());
                     }
 
@@ -367,15 +380,20 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
         int day = c.get(Calendar.DAY_OF_MONTH);
         String m = "";
         String d = "";
-
         if (month < 10){
             m = "0" + month;
+        }else {
+            m = month+"";
         }
         if (day < 10){
             d = "0" + day;
+        }else {
+            d = day+"";
         }
         if (startDate){
             v_date_start.setText(yeas + "-" + m + "-" + d );
+            Log.d("Slide_date", yeas + "-" + month + "-" + day);
+            Log.d("Slide_date1",yeas+"-"+m+"-"+d);
         }else {
             v_date_end.setText(yeas + "-" + m + "-" + d );
         }

+ 77 - 46
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MsgsSecondCommonActivity.java

@@ -4,6 +4,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.support.v7.app.AlertDialog;
 import android.text.Html;
 import android.text.TextUtils;
 import android.util.Log;
@@ -78,6 +79,7 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
     private Boolean item_readed;
     private TextView msg_markread_tv;
     private int aftermarktime_news = 0;
+    private TextView msg_detail_tv;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -101,10 +103,10 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
                         JSONArray msgsArray = resultJsonObject.getJSONArray("listdata");
                         if (!ListUtils.isEmpty(msgsArray)) {
                             handleMsgsArray(msgsArray);
-                        }else {
+                        } else {
                             loadLocalData(msg_type);
                         }
-                    }catch (Exception e) {
+                    } catch (Exception e) {
                         e.printStackTrace();
                     }
                     break;
@@ -122,6 +124,7 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
 
     /**
      * 处理获取网络获取到的数据,先更新本地数据库,再加载本地数据库
+     *
      * @param msgsArray
      */
     private void handleMsgsArray(JSONArray msgsArray) {
@@ -168,7 +171,7 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
         em_code = intent.getStringExtra("emcode") == null ? CommonUtil.getSharedPreferences(ct, "erp_username") : intent.getStringExtra("emcode");
         mark_time = intent.getStringExtra("readTime");
 
-        Log.i("mark_time",mark_time + "");
+        Log.i("mark_time", mark_time + "");
         if (!StringUtils.isEmpty(msg_title)) {
             getSupportActionBar().setTitle(msg_title);
         }
@@ -176,7 +179,8 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
             loadNet();
         } else {
             loadLocalData(msg_type);  //无网下直接获取数据库显示老数据
-            ToastMessage("您已经进入没有网络的异次元");
+            ToastMessage(getResources().getString(R.string.networks_out));
+            progressDialog.dismiss();
         }
 
     }
@@ -196,14 +200,15 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
 
     /**
      * 加载本地数据
+     *
      * @param msg_type
      */
     private void loadLocalData(String msg_type) {
         msgModel = MessageDao.getInstance().queryByType(msg_type);
         if (!ListUtils.isEmpty(msgModel)) { //当数据库中有数据时,
-            if (!TextUtils.isEmpty(mark_time)){
-                doSecondMarkSave(msgModel,mark_time); // 当第一层 有标为已读标志时,进行第二次更新本地及新来消息否读状态
-            }else {
+            if (!TextUtils.isEmpty(mark_time)) {
+                doSecondMarkSave(msgModel, mark_time); // 当第一层 有标为已读标志时,进行第二次更新本地及新来消息否读状态
+            } else {
                 doDataShow(msgModel);   // 当第一层 没有标为已读标志时,直接显示第一次更新后的本地数据库
             }
         } else {
@@ -215,17 +220,18 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
 
     /**
      * 将本地最后要显示的数据加载到适配器中,以及更多消息显示逻辑、点击事件
+     *
      * @param msgModel
      */
     private void doDataShow(List<MessageModel> msgModel) {
         jump_position.clear();
         for (int i = 0; i < msgModel.size(); i++) {
-            if (!msgModel.get(i).isReaded()){
+            if (!msgModel.get(i).isReaded()) {
                 unread_nums++; // 统计未读消息条数
                 jump_position.add(i);
             }
-            if (i == msgModel.size() -1){
-                if (unread_nums > 10 && msgModel.size() >= unread_nums){
+            if (i == msgModel.size() - 1) {
+                if (unread_nums > 10 && msgModel.size() >= unread_nums) {
                     more_msg_tv.setVisibility(View.VISIBLE);
                     more_msg_tv.setText(unread_nums + "条新消息");
                     more_msg_tv.setOnClickListener(new View.OnClickListener() {
@@ -237,7 +243,7 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
                             ToastMessage(jump_position.get(0) + "");
                         }
                     });
-                }else {
+                } else {
                     more_msg_tv.setVisibility(View.GONE);
                 }
             }
@@ -245,12 +251,12 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
 
         msgAdapter.setMsgModel(msgModel);
         msgAdapter.notifyDataSetChanged();
-        myplv.getRefreshableView().setSelection(msgModel.size() -1);
+        myplv.getRefreshableView().setSelection(msgModel.size() - 1);
     }
 
     private void doSecondMarkSave(List<MessageModel> msgModel, String mark_time) {
         for (int i = 0; i < msgModel.size(); i++) {
-            if (mark_time.compareTo(msgModel.get(i).getTime()) >= 0){
+            if (mark_time.compareTo(msgModel.get(i).getTime()) >= 0) {
                 msgModel.get(i).setReaded(true);
             }
         }
@@ -262,9 +268,15 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
         myplv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
             @Override
             public void onPullDownToRefresh(PullToRefreshBase refreshView) { //TODO 下拉刷新
+                if (MyApplication.getInstance().isNetworkActive()) {
+                    loadNet();
+                } else {
+                    ToastMessage(getResources().getString(R.string.networks_out));
+                }
                 new Handler().postDelayed(new Runnable() {
                     @Override
                     public void run() {
+                        ToastMessage("刷新完毕");
                         myplv.onRefreshComplete();
                     }
                 }, 3000);
@@ -275,6 +287,7 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
                 new Handler().postDelayed(new Runnable() {
                     @Override
                     public void run() {
+                        ToastMessage("加载完成");
                         myplv.onRefreshComplete();
                     }
                 }, 3000);
@@ -321,18 +334,19 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
 
 
     private void doClickEvent(int mPosition, int msg_id) {
-        baseUrl = CommonUtil.getSharedPreferences(mContext, "erp_baseurl");
-        String url = baseUrl + "mobile/message/getDetail.action";
-        Intent intent_web = new Intent(mContext, WebViewCommActivity.class);
-        intent_web.putExtra("url", url);
-        intent_web.putExtra("id", msg_id);
-        intent_web.putExtra("title", msg_title);
-        startActivityForResult(intent_web, MSG_MARKED_READED);
-
-        msgModel.get(mPosition).setReaded(true);
-        MessageDao.getInstance().upStatus(msg_id, true); //点击保存本地为已读状态操作
-        msgAdapter.notifyDataSetChanged();
-
+        if ("note".equals(msg_type) || "meeting".equals(msg_type)) {
+            baseUrl = CommonUtil.getSharedPreferences(mContext, "erp_baseurl");
+            String url = baseUrl + "mobile/message/getDetail.action";
+            Intent intent_web = new Intent(mContext, WebViewCommActivity.class);
+            intent_web.putExtra("url", url);
+            intent_web.putExtra("id", msg_id);
+            intent_web.putExtra("title", msg_title);
+            startActivityForResult(intent_web, MSG_MARKED_READED);
+        } else {
+            msgModel.get(mPosition).setReaded(true);
+            MessageDao.getInstance().upStatus(msg_id, true);//点击保存本地为已读状态操作
+            msgAdapter.notifyDataSetChanged();
+        }
     }
 
     private void showPopupWindow() {
@@ -342,19 +356,22 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
         DisplayUtil.backgroundAlpha(this, 0.4f);
     }
 
+
     private void showMarkReadPW() {
         View viewContext = LayoutInflater.from(ct).inflate(R.layout.msgs_long_click, null);
         viewContext.findViewById(R.id.msg_delete_tv).setOnClickListener(this);
 
+        msg_detail_tv = (TextView) viewContext.findViewById(R.id.msg_detail_tv);
+        msg_detail_tv.setOnClickListener(this);
         msg_markread_tv = (TextView) viewContext.findViewById(R.id.msg_markread_tv);
         msg_markread_tv.setOnClickListener(this);
         msg_markread_tv.setText("");
-        if (msgModel.get(mPosition).isReaded()){
+        if (msgModel.get(mPosition).isReaded()) {
             msg_markread_tv.setText("标为未读");
-        }else {
+        } else {
             msg_markread_tv.setText("标为已读");
         }
-        Log.i("Mark_Status",(msgModel.get(mPosition).isReaded()) + "");
+        Log.i("Mark_Status", (msgModel.get(mPosition).isReaded()) + "");
         setWindow = new PopupWindow(viewContext,
                 LinearLayout.LayoutParams.MATCH_PARENT,
                 LinearLayout.LayoutParams.WRAP_CONTENT, true);
@@ -363,11 +380,9 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
         setWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
             @Override
             public void onDismiss() {
-                closePopupWindow();
+                    closePopupWindow();
             }
         });
-
-
     }
 
     private void closePopupWindow() {
@@ -378,20 +393,34 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
 
     @Override
     public void onClick(View v) {
+        closePopupWindow();
         switch (v.getId()) {
             case R.id.msg_delete_tv:
-                doDeleteMsg();     //TODO 删除操作
-                closePopupWindow();
+                doDeleteMsg();     // 删除操作
                 break;
             case R.id.msg_markread_tv:
-                if (item_readed){
+                if (item_readed) {
                     doMarkUnReadMsg();
-                }else {
-                    doMarkReadedMsg();   // TODO 标为已读
+                } else {
+                    doMarkReadedMsg();   //  标为已读
                 }
-                closePopupWindow();
+                break;
+            case R.id.msg_detail_tv:
+                new Handler().postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        new AlertDialog.Builder(mContext)
+                                .setTitle(msg_title)
+                                .setMessage(Html.fromHtml(msgModel.get(mPosition).getSubTitle()))
+                                .setPositiveButton("确定", null).show();
+
+                        doMarkReadedMsg();   //  标为已读
+                    }
+                }, 500);
+
                 break;
         }
+
     }
 
     private void doMarkUnReadMsg() {
@@ -400,12 +429,12 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
         msgAdapter.notifyDataSetChanged();
 
 //        MessageDao.getInstance().upStatusByType(msg_type,false);
-        MessageDao.getInstance().unReadForTwoFloor(msg_id,msg_type,false);
+        MessageDao.getInstance().unReadForTwoFloor(msg_id, msg_type, false);
     }
 
     private void doMarkReadedMsg() {
         msgModel.get(mPosition).setReaded(true);
-        MessageDao.getInstance().upStatus(msg_id,true); //标为已读保存本地
+        MessageDao.getInstance().upStatus(msg_id, true); //标为已读保存本地
         msgAdapter.notifyDataSetChanged();
     }
 
@@ -421,7 +450,8 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
         super.onActivityResult(requestCode, resultCode, data);
         try {
             if (requestCode == MSG_MARKED_READED && resultCode == 22 && data != null) {
-                MessageDao.getInstance().upStatus(msg_id, true);
+                msgModel.get(mPosition).setReaded(true);
+                MessageDao.getInstance().upStatus(msg_id, true);//点击保存本地为已读状态操作
                 msgAdapter.notifyDataSetChanged();
             }
 
@@ -438,6 +468,7 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
     //TODO 列表适配器
     public class NewMsgAdapter extends BaseAdapter {
         private List<MessageModel> msgModel;
+
         public void setMsgModel(List<MessageModel> msgModel) {
             this.msgModel = msgModel;
         }
@@ -479,7 +510,7 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
                     imageurl = R.drawable.home_image_03_u;
                     break;
                 case "common": // 普通知会
-                    imageurl = R.drawable.shenpizhihui;
+                    imageurl = R.drawable.putongzhihui;
                     break;
                 case "b2b": // b2b提醒
                     imageurl = R.drawable.b2btixing;
@@ -500,19 +531,19 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
                     imageurl = R.drawable.jihetixing;
                     break;
                 case "system": // 知会消息
-                    imageurl = R.drawable.shenpizhihui;
+                    imageurl = R.drawable.zhihuixiaoxi;
                     break;
                 case "task": // 任务提醒
                     imageurl = R.drawable.home_image_02_u;
                     break;
                 default:
-                    imageurl = R.drawable.shenpizhihui;
+                    imageurl = R.drawable.gongzuotixing;
             }
 
             viewHolder.msgs_img.setImageResource(imageurl);
             viewHolder.msgs_title_tv.setText(msgModel.get(position).getTitle());
-            if (!TextUtils.isEmpty(msgModel.get(position).getTime())){
-                viewHolder.msgs_time_tv.setText(TimeUtils.long2str(TimeUtils.f_str_2_long(msgModel.get(position).getTime()),"yyyy-MM-dd HH:mm"));
+            if (!TextUtils.isEmpty(msgModel.get(position).getTime())) {
+                viewHolder.msgs_time_tv.setText(TimeUtils.long2str(TimeUtils.f_str_2_long(msgModel.get(position).getTime()), "yyyy-MM-dd HH:mm"));
             }
             viewHolder.msgs_content_tv.setText(Html.fromHtml(msgModel.get(position).getSubTitle()));
             if (msgModel.get(position).isReaded()) {
@@ -520,7 +551,7 @@ public class MsgsSecondCommonActivity extends BaseActivity implements View.OnCli
             } else {
                 viewHolder.msgs_nums_tv.setVisibility(View.VISIBLE);
             }
-            if (position == msgModel.size() -1){
+            if (position == msgModel.size() - 1) {
                 progressDialog.dismiss(); //数据加载最后一个时才取消圆圈动画
             }
             return convertView;

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

@@ -245,7 +245,10 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
                                 error = "数据获取失败,请稍后重试";
                             if (System.currentTimeMillis() - lastTime > 8000) {
                                 lastTime = System.currentTimeMillis();
-                                Crouton.showToast(ct, error, R.color.load_warning);
+                                if(!StringUtils.isEmpty(workDailyAdd) && "WorkDailyAdd".equals(workDailyAdd)){
+                                }else {
+                                    Crouton.showToast(ct, error, R.color.load_warning);
+                                }
                             }
                         } catch (Exception e) {
 
@@ -262,6 +265,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
     private float moveY;
     private int adminStatus;//管理员状态 1.管理员  0.非管理员
     private boolean isB2b;
+    private String workDailyAdd;
 
     private Set<Integer> getDay(JSONArray array) {
         JSONObject object = null;
@@ -496,6 +500,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
     }
 
     private void initView() {
+        Intent intent = getIntent();
+        workDailyAdd = intent.getStringExtra("WorkDailyAdd");
         isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
         //设置为空显示列表
         emptyLayout = new EmptyLayout(ct, oa_listview);
@@ -976,9 +982,11 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
                 }
                 break;
             case R.id.oamain_special_attendance_tv://特殊考勤
-                startActivity(new Intent(activity, DataFormDetailActivity.class).putExtra("caller", "SpeAttendance"));
+                if (!(ApiUtils.getApiModel() instanceof ApiPlatform)) {
+                    startActivity(new Intent(activity, DataFormDetailActivity.class).putExtra("caller", "SpeAttendance"));
+                }
                 break;
-            case R.id.oamain_sign_statistical_tv:
+            case R.id.oamain_sign_statistical_tv: //考勤统计
                 startActivity(new Intent(activity, StatisticsActivity.class));
                 break;
         }

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

@@ -82,7 +82,6 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
     private long selectTime;
     private boolean isAdmin = false;
     private boolean isChangePoi = false;
-
     private BroadcastReceiver receiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -149,7 +148,7 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
         listview.setLayoutManager(new LinearLayoutManager(ct));
         listview.setAdapter(adapter);
         presenter.start(true);
-        date_tv.setText(TimeUtils.long2str(System.currentTimeMillis(), "yyyy年MM月dd日") +" "+
+        date_tv.setText(TimeUtils.long2str(System.currentTimeMillis(), "yyyy年MM月dd日") + " " +
                 TimeUtils.getWeek(System.currentTimeMillis()));
         findViewById(R.id.signin_btn).setOnClickListener(this);
         findViewById(R.id.unoffice_).setOnClickListener(this);
@@ -158,7 +157,9 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
 
     @Override
     public void showDistance(double distance) {
-        if (distance != 0)
+        if (distance == -1)
+            unoffice_mm.setText("");
+        else if (distance != 0)
             unoffice_mm.setText("约" + distance + "米");
         else unoffice_mm.setText("约0米");
     }

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

@@ -407,7 +407,6 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
         voice_summary.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-//                voice_summary.setImageResource(R.drawable.btn_yuyin_pressed);
                 voice_type = 1;
                 voice.GetWordFromVoice();
             }
@@ -416,7 +415,6 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
         voice_plan.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-//                voice_plan.setImageResource(R.drawable.btn_yuyin_pressed);
                 voice_type = 2;
                 voice.GetWordFromVoice();
             }
@@ -425,7 +423,6 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
         voice_experience.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-//                voice_experience.setImageResource(R.drawable.btn_yuyin_pressed);
                 voice_type = 3;
                 voice.GetWordFromVoice();
             }
@@ -434,7 +431,6 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
     @Override
     public void onResult(RecognizerResult recognizerResult, boolean b) {
         String text = JsonParser.parseIatResult(recognizerResult.getResultString());
-
         if (voice_type == 1){
             add_summary.setText(add_summary.getText().toString() + text);
         }else if (voice_type == 2){
@@ -445,9 +441,7 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
     }
 
     @Override
-    public void onError(SpeechError speechError) {
-
-    }
+    public void onError(SpeechError speechError) {}
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
         menu.clear();
@@ -502,7 +496,8 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
                                 }else if (!TextUtils.isEmpty(fromqzone) && "fromqzone".equals(fromqzone)){
 
                                 }else {
-                                    startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+                                    startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class)
+                                    .putExtra("WorkDailyAdd","WorkDailyAdd"));
                                 }
                                 finish();
                             }
@@ -510,7 +505,8 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
             } else if (!TextUtils.isEmpty(fromqzone) && "fromqzone".equals(fromqzone)){
                 finish();
             } else{
-                startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+                startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class)
+                        .putExtra("WorkDailyAdd","WorkDailyAdd"));
                 finish();
             }
         }
@@ -530,7 +526,8 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
                     .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                         @Override
                         public void onClick(DialogInterface dialog, int which) {
-                            startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+                            startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class)
+                                    .putExtra("WorkDailyAdd","WorkDailyAdd"));
                             if (!TextUtils.isEmpty(resubmit) && "unsub_tosub".equals(resubmit)){
                                 if (!platform){
                                     startActivity(new Intent(WorkDailyAddActivity.this,WorkDailyShowActivity.class));
@@ -538,13 +535,15 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
                                     startActivity(new Intent(WorkDailyAddActivity.this,PlatDailyShowActivity.class));
                                 }
                             }else {
-                                startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+                                startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class)
+                                        .putExtra("WorkDailyAdd","WorkDailyAdd"));
                             }
                             finish();
                         }
                     }).show();
         } else {
-            startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+            startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class)
+                    .putExtra("WorkDailyAdd","WorkDailyAdd"));
             finish();
         }
 

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

@@ -130,7 +130,7 @@ public class MessageAdapter extends BaseAdapter {
                     imageurl = R.drawable.home_image_03_u;
                     break;
                 case "common": // 普通知会
-                    imageurl = R.drawable.shenpizhihui;
+                    imageurl = R.drawable.putongzhihui;
                     break;
                 case "b2b": // b2b提醒
                     imageurl = R.drawable.b2btixing;
@@ -151,11 +151,13 @@ public class MessageAdapter extends BaseAdapter {
                     imageurl = R.drawable.jihetixing;
                     break;
                 case "system": // 知会消息
-                    imageurl = R.drawable.shenpizhihui;
+                    imageurl = R.drawable.zhihuixiaoxi;
                     break;
                 case "task": // 任务提醒
                     imageurl = R.drawable.home_image_02_u;
                     break;
+                default:
+                    imageurl = R.drawable.gongzuotixing;
             }holder.avatar_img.setImageResource(imageurl);
         }
     }

+ 9 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBManager.java

@@ -9,6 +9,7 @@ import android.util.Log;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.bean.PersonalSubscriptionBean;
 import com.xzjmyk.pm.activity.bean.SubscriptionNumber;
+import com.xzjmyk.pm.activity.db.DatabaseManager;
 import com.xzjmyk.pm.activity.ui.erp.entity.B2BMsg;
 import com.xzjmyk.pm.activity.ui.erp.entity.EmployeesEntity;
 import com.xzjmyk.pm.activity.ui.erp.entity.Hrorgs;
@@ -26,7 +27,6 @@ import java.util.Map;
  * @注释:数据库管理类
  */
 public class DBManager {
-    private DBOpenHelper helper;
 
     public SQLiteDatabase getDb() {
         return db;
@@ -38,10 +38,12 @@ public class DBManager {
 
     private SQLiteDatabase db;
 
-
+    public DBManager() {
+        db = DatabaseManager.getInstance().openDatabase();
+    }
+    @Deprecated
     public DBManager(Context ct) {
-        helper = DBOpenHelper.getInstance();
-        db = helper.getWritableDatabase();
+        this();
     }
 
     public void saveB2bMsg(B2BMsg entity) {
@@ -481,7 +483,7 @@ public class DBManager {
         Cursor cursor = null;
         try {
             if (!db.isOpen())
-                db = helper.getWritableDatabase();
+                db = DatabaseManager.getInstance().openDatabase();
             cursor = db.query(table, null, selection, selectionArgs, groupBy, having, orderBy);
             while (cursor.moveToNext()) {
                 EmployeesEntity model = new EmployeesEntity();
@@ -524,7 +526,7 @@ public class DBManager {
         try {
             String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
             if (!db.isOpen())
-                db = helper.getWritableDatabase();
+                db = DatabaseManager.getInstance().openDatabase();
             String sql = "SELECT * FROM EMPLOYEES WHERE WHICHSYS=\'" + master + "\' AND EM_DEFAULTORID IN(" + defaulid + ") ";
             Cursor cursor = db.rawQuery(sql, null);
             count = cursor.getCount();
@@ -798,6 +800,6 @@ public class DBManager {
      * close database
      */
     public void closeDB() {
-        db.close();
+        DatabaseManager.getInstance().closeDatabase();
     }
 }

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

@@ -186,7 +186,7 @@ public class AttendanceFragment extends EasyFragment implements HttpHandler.OnRe
      */
     private void handlerWorkData(JSONObject object, Bundle bundle) throws Exception {
         boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
-        ArrayList<WorkModel> models = WorkHandlerUtil.handlerWorkData(object,isB2b);
+        ArrayList<WorkModel> models = WorkHandlerUtil.handlerWorkData(object, isB2b);
         if (ListUtils.isEmpty(models)) {
             setDate2Adapter(null);
         }
@@ -350,7 +350,7 @@ public class AttendanceFragment extends EasyFragment implements HttpHandler.OnRe
         private String getLastTime(String signin, String time, boolean isWork) {
             long lastTime = TimeUtils.f_str_2_long(TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + signin + ":00");
             long thisTime = TimeUtils.f_str_2_long(TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time + ":00");
-            float distance = (lastTime - thisTime) / 1000;//秒
+            float distance = Math.abs((lastTime - thisTime) / 1000);//秒
             int h = (int) (distance / 3600);
             int m = (int) (distance % 3600) / 60;
             return (isWork ? "迟到" : "早退") + h + "小时" + m + "分钟";

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

@@ -71,12 +71,12 @@ public class WorksFragment extends XutilsFragment implements View.OnClickListene
         my_client_rl.setOnClickListener(this);
         goods_find.setOnClickListener(this);
         show_new_function_ll.setOnClickListener(this);
-
         int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
-        if(new_function_notice == 1){
+        if (new_function_notice == 1) {
+            show_new_function_ll.setVisibility(View.INVISIBLE);
+        } else {
+            //TODO 发布版本先隐藏
             show_new_function_ll.setVisibility(View.INVISIBLE);
-        }else {
-            show_new_function_ll.setVisibility(View.VISIBLE);
         }
     }
 
@@ -86,9 +86,9 @@ public class WorksFragment extends XutilsFragment implements View.OnClickListene
         //判断是否启用功能模块
         //  isStartNewApp(Constants.HTTP_SUCCESS_INIT);
         int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
-        if(new_function_notice == 1){
+        if (new_function_notice == 1) {
             show_new_function_ll.setVisibility(View.INVISIBLE);
-        }else {
+        } else {
             show_new_function_ll.setVisibility(View.VISIBLE);
         }
     }

+ 148 - 17
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MessagePresenter.java

@@ -14,12 +14,14 @@ import com.alibaba.fastjson.JSONObject;
 import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.bean.Friend;
+import com.xzjmyk.pm.activity.bean.message.SubMessage;
 import com.xzjmyk.pm.activity.bean.message.SubscriptionMessage;
 import com.xzjmyk.pm.activity.bean.message.XmppMessage;
 import com.xzjmyk.pm.activity.broadcast.MsgBroadcast;
 import com.xzjmyk.pm.activity.db.dao.ChatMessageDao;
 import com.xzjmyk.pm.activity.db.dao.FriendDao;
 import com.xzjmyk.pm.activity.db.dao.MessageDao;
+import com.xzjmyk.pm.activity.db.dao.SubsDao;
 import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
 import com.xzjmyk.pm.activity.sortlist.PingYinUtil;
 import com.xzjmyk.pm.activity.ui.MainActivity;
@@ -32,6 +34,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.auto.HttpHandler;
 import com.xzjmyk.pm.activity.ui.message.ChatActivity;
 import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
 import com.xzjmyk.pm.activity.ui.message.NewFriendActivity;
+import com.xzjmyk.pm.activity.ui.tool.ThreadUtil;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
 import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
@@ -48,21 +51,20 @@ import java.util.Map;
  */
 
 public class MessagePresenter implements HttpHandler.OnResultListener {
-    private static final int LOAD_TASK = 0x14;
+    private final int LOAD_TASK = 0x14;
+    private final int LOAD_EMNEWS_DETAILS = 0x15;
     private final int LOAD_EMNEWS = 0x11;
     private final int LOAD_SUBS = 0x12;
     private final int LOAD_PROCESS = 0x13;
 
-    private final String SUB_READ_TIME = CommonUtil.getMaster() + "SUB_READ_TIME";//订阅好点击阅读时间
-    private final String SUB_LOAD_TIME = CommonUtil.getMaster() + "SUB_LOAD_TIME";//订阅好下拉时间时间
+    private String SUB_READ_TIME;//订阅好点击阅读时间
 
     private List<BaseSortModel<Friend>> mFriendList;
 
     private Comparator<BaseSortModel<Friend>> erpComparator;
     private IMessageView iMessageView;
     private MainActivity ct;
-    private String subReadTime;
-    private String subLoadTime;
+    private String subReadTime;//订阅号点击时间
 
     private String filter;//搜索数据
     private int emnewsNum, subsNum, processNum, taskNum;//红点消息分类数量
@@ -89,8 +91,6 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         if (iMessageView == null)
             new NullPointerException("IMessageView 不能为空");
         this.iMessageView = iMessageView;
-        subReadTime = PreferenceUtils.getString(SUB_READ_TIME);
-        subLoadTime = PreferenceUtils.getString(SUB_LOAD_TIME);
         if (RECEIVER_LIST != null && RECEIVER_LIST.length > 0) {
             IntentFilter dateFilter = new IntentFilter();
             for (String f : RECEIVER_LIST)
@@ -100,14 +100,34 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
     }
 
     public void loadData() {
+        SUB_READ_TIME = CommonUtil.getMaster() + "SUB_READ_TIME";//订阅好点击阅读时间
+        subReadTime = PreferenceUtils.getString(SUB_READ_TIME);
         loadERPNews();//获取消息
         loadTaskData();//获取任务接口
+        loadProcessToDo();//获取审批流接口
+//        loadSubMessage(); //TODO 发布版本先隐藏
+        loadSubData();
+    }
 
-        if (StringUtils.isEmpty(subLoadTime) || subLoadTime.compareTo(TimeUtils.s_long_2_str(System.currentTimeMillis())) < 0) {
-            loadSubData();//获取订阅号接口
-            PreferenceUtils.putString(SUB_LOAD_TIME, TimeUtils.s_long_2_str(System.currentTimeMillis()));
+    //下拉订阅号数据
+    private void loadSubMessage() {
+        //先判断数据库中是否有数据
+        List<SubMessage> messages = SubsDao.getInstance().queryByDate(TimeUtils.s_long_2_str(System.currentTimeMillis()));
+        if (ListUtils.isEmpty(messages)) {//如果没有数据,就去下载数据
+            loadSubData();
+        } else {//如果有数据,就判断是否显示红点
+            if (StringUtils.isEmpty(subReadTime) || subReadTime.compareTo(TimeUtils.s_long_2_str(System.currentTimeMillis())) < 0) {
+                //不是今天点击的就,显示订阅数量
+                int num = 0;
+                for (SubMessage e : messages) {
+                    if (e.getStatus() == 0)
+                        num += 1;
+                }
+                subsNum = num;
+                updateForUnReader();
+                iMessageView.updateHeaderView(2, num, num > 0 ? messages.get(0).getTitle() : "");
+            }
         }
-        loadProcessToDo();//获取审批流接口
     }
 
 
@@ -160,6 +180,22 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         HttpHandler.getInstance().loadERPByNet(LOAD_PROCESS, "common/desktop/process/toDo.action", param, null, this, "get");
     }
 
+    /**
+     * 获取消息详细信息接口
+     *
+     * @param type     消息类型
+     * @param isReaded 是否是阅读全部,如果不是就是删除全部
+     */
+    private void loadEmNewsDetails(String type, boolean isReaded) {
+        Map<String, Object> param = new HashMap<>();
+        param.put("emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+        param.put("type", type);
+        Bundle bundle = new Bundle();
+        bundle.putString("type", type);
+        bundle.putBoolean("isReaded", isReaded);
+        HttpHandler.getInstance().loadERPByNet(LOAD_EMNEWS_DETAILS, "mobile/queryEmNewsDetails.action", param, bundle, this, "get");
+
+    }
 
     @Override
     public void result(int what, boolean isJSON, String message, Bundle bundle) {
@@ -185,6 +221,15 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
             case LOAD_TASK://获取任务接口
                 handlerTask(object);
                 break;
+            case LOAD_EMNEWS_DETAILS:
+                String type = bundle.getString("type");
+                boolean isReaded = bundle.getBoolean("isReaded");
+                JSONArray msgsArray = object.getJSONArray("listdata");
+                if (!ListUtils.isEmpty(msgsArray)) {
+                    handleMsgsArray(type, msgsArray);
+                }
+                handlerEndOfReadOrDelete(type, isReaded);
+                break;
         }
     }
 
@@ -193,6 +238,40 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
     public void error(int what, int statuCode, String message, Bundle bundle) {
     }
 
+
+    /**
+     * 处理获取网络获取到的数据,先更新本地数据库,再加载本地数据库
+     *
+     * @param msgsArray
+     */
+    private void handleMsgsArray(String type, JSONArray msgsArray) {
+        JSONObject object = null;
+        final List<MessageModel> models = new ArrayList<>();
+        MessageModel model = null;
+        for (int i = 0; i < msgsArray.size(); i++) {
+            try {
+                object = msgsArray.getJSONObject(i);
+                model = new MessageModel();
+                model.setId(object.getInteger("id"));
+                model.setTitle(object.getString("title"));
+                model.setSubTitle(object.getString("subTitle"));
+                model.setTime(object.getString("createTime"));
+                model.setHierarchy(1);
+                model.setType(type);
+                model.setCount(1);
+                models.add(model);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        ThreadUtil.getInstance().addTask(new Runnable() {
+            @Override
+            public void run() {
+                MessageDao.getInstance().createOrinstart(models);
+            }
+        });
+    }
+
     /**
      * 处理任务相关数据
      *
@@ -235,7 +314,7 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         updateForUnReader();
     }
 
-    private void handlerSub(JSONObject object) {
+    private void handlerSub(final JSONObject object) {
         if (!StringUtils.isEmpty(subReadTime) && subReadTime.compareTo(TimeUtils.s_long_2_str(System.currentTimeMillis())) >= 0)
             return;
         List<SubscriptionMessage> messages = null;
@@ -247,12 +326,53 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
                     num += 1;
             }
         }
+        //TODO 发布版本先隐藏
+//        ThreadUtil.getInstance().addTask(new Runnable() {
+//            @Override
+//            public void run() {
+//                try {
+//                    saveSubs2Db(object);
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                }
+//            }
+//        });
         subsNum = num;
         updateForUnReader();
-        //TODO 判断订阅有没有新消息没读
         iMessageView.updateHeaderView(2, num, num > 0 ? messages.get(0).getTITLE_() : "");
     }
 
+    private void saveSubs2Db(JSONObject o) throws Exception {
+        JSONArray array = o.getJSONArray("data");
+        if (ListUtils.isEmpty(array)) return;
+        SubMessage message = null;
+        JSONObject object = null;
+        List<SubMessage> chche = new ArrayList<>();
+        message = new SubMessage();
+        message.setDate(TimeUtils.s_long_2_str(System.currentTimeMillis()));
+        message.setRead(true);
+        message.setStatus(0);
+        chche.add(message);
+        for (int i = 0; i < array.size(); i++) {
+            object = array.getJSONObject(i);
+            message = new SubMessage();
+            message.setCreateTime(object.getLong("CREATEDATE_"));
+            int status = object.getInteger("STATUS_");
+            message.setStatus(i == 0 ? 1 : 2);
+            message.setTitle(object.getString("TITLE_"));
+            message.setSubTitle(object.getString("SUMDATA_"));
+            message.setRead(status == 0 ? false : true);
+            message.setId(object.getInteger("ID_"));
+            message.setNumId(object.getInteger("NUM_ID_"));
+            message.setInstanceId(object.getInteger("INSTANCE_ID_"));
+            if (message.getCreateTime() == 0) continue;
+            message.setDate(TimeUtils.s_long_2_str(message.getCreateTime()));
+            chche.add(message);
+        }
+        if (ListUtils.isEmpty(chche)) return;
+        SubsDao.getInstance().createOrUpdata(chche);
+    }
+
     /**
      * 处理消息红点消息
      *
@@ -450,8 +570,9 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         if (ListUtils.isEmpty(mFriendList) || mFriendList.size() < position) return;
         Friend friend = mFriendList.get(position).getBean();
         if (friend.getType() == XmppMessage.TYPE_ERP) {
-            MessageDao.getInstance().deleteBytype(friend.getDescription());
-            loadData();
+            loadEmNewsDetails(friend.getDescription(), false);
+//            MessageDao.getInstance().deleteBytype(friend.getDescription());
+//            loadData();
         } else {
             deleteByIm(friend, position);
         }
@@ -466,8 +587,9 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         if (ListUtils.isEmpty(mFriendList) || mFriendList.size() < position) return;
         Friend friend = mFriendList.get(position).getBean();
         if (friend.getType() == XmppMessage.TYPE_ERP) {
-            MessageDao.getInstance().upStatusByType(friend.getDescription(), true);
-            loadData();
+            loadEmNewsDetails(friend.getDescription(), true);
+//            MessageDao.getInstance().upStatusByType(friend.getDescription(), true);
+//            loadData();
         } else {
             if (friend.getUnReadNum() > 0) {
                 MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
@@ -477,6 +599,15 @@ public class MessagePresenter implements HttpHandler.OnResultListener {
         }
     }
 
+    private void handlerEndOfReadOrDelete(String type, boolean isReaded) {
+        if (isReaded) {
+            MessageDao.getInstance().upStatusByType(type, true);
+        } else {
+            MessageDao.getInstance().deleteBytype(type);
+        }
+        loadData();
+    }
+
     /**
      * 计算搜索显示新的内容
      *

+ 2 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/WorkPresenter.java

@@ -48,7 +48,6 @@ import static com.xzjmyk.pm.activity.util.BaiduMapUtil.getInstence;
  * 班次的管理器,先不处理数据库数据
  * Created by Bitliker on 2016/12/12.
  */
-
 public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresenter {
     private final int WORK_LOG = 0x12;
     private final int WORK_DATA = 0x11;
@@ -218,7 +217,7 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
     //获取与公司距离
     private double getDistance() {
         try {
-            if (ListUtils.isEmpty(locationList)) return 0;
+            if (ListUtils.isEmpty(locationList)) return -1;
             for (WorkLocationModel b : locationList) {
                 String dis = getInstence().getDistance(
                         new LatLng(b.getLocation().longitude, b.getLocation().latitude)
@@ -231,7 +230,7 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
             }
             return distance;
         } catch (Exception e) {
-            return 0;
+            return -1;
         }
     }
 

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IMessageView.java

@@ -9,7 +9,7 @@ import java.util.List;
  * Created by Bitliker on 2017/3/1.
  */
 
-public interface IMessageView {
+public interface IMessageView  {
 
     void showModel(List<BaseSortModel<Friend>> models);
 

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/tree/TreeHelper.java

@@ -152,7 +152,7 @@ public class TreeHelper {
          */
         setChildrenNodeChecked(node, isChecked);
         /** 父节点处理 */
-        setParentNodeChecked(node);
+//        setParentNodeChecked(node);
 
     }
 

+ 115 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/OfficeAddressSettingsActivity.java

@@ -1,18 +1,27 @@
 package com.xzjmyk.pm.activity.ui.me;
 
+import android.app.Activity;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.support.v7.app.AlertDialog;
+import android.text.Editable;
+import android.text.Selection;
 import android.text.TextUtils;
+import android.util.DisplayMetrics;
 import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowManager;
 import android.widget.BaseAdapter;
 import android.widget.Button;
+import android.widget.EditText;
 import android.widget.ImageView;
+import android.widget.PopupWindow;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.Toast;
@@ -33,6 +42,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.Constants;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.util.DisplayUtil;
 import com.xzjmyk.pm.activity.view.MyListView;
 import com.xzjmyk.pm.activity.wxapi.ApiConfig;
 import com.xzjmyk.pm.activity.wxapi.ApiPlatform;
@@ -204,6 +214,7 @@ public class OfficeAddressSettingsActivity extends BaseActivity {
 
     private Boolean platform;
     private List<PlatSignAddressBean.DataBean> mPlatSignData;
+    private TextView title_tv;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -247,23 +258,30 @@ public class OfficeAddressSettingsActivity extends BaseActivity {
 
     private void initData() {
         //初次进来获取考勤地址设置接口请求
-        if (!platform) {
-            String url = Constants.getAppBaseUrl(getApplicationContext()) + "/mobile/getcomaddressset.action";
-            Map<String, Object> param = new HashMap<>();
-            LinkedHashMap headers = new LinkedHashMap();
-            headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
-            ViewUtil.httpSendRequest(getApplicationContext(), url, param, handler, headers, GET_SIGN_DDRESSS, null, null, "post");
-        } else {
-            //  平台办公地址获取
-            String url = ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().sign_get_office_url;
-            Map<String, Object> param = new HashMap<>();
-            param.put("enuu", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu"));
-            param.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "b2b_uu"));
-            LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
-            headers.put("Cookie", "JSESSIONID=" + ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getCookie());
-            ViewUtil.httpSendRequest(this, url, param, handler, headers, GET_PLAT_SIGN_ADDRESS, null, null, "get");
+        if (!MyApplication.getInstance().isNetworkActive()){
+            ToastMessage("当前网络不可用,请稍后重试!");
+            progressDialog.dismiss();
+            return;
+        }else {
+            if (!platform) {
+                String url = Constants.getAppBaseUrl(getApplicationContext()) + "/mobile/getcomaddressset.action";
+                Map<String, Object> param = new HashMap<>();
+                LinkedHashMap headers = new LinkedHashMap();
+                headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
+                ViewUtil.httpSendRequest(getApplicationContext(), url, param, handler, headers, GET_SIGN_DDRESSS, null, null, "post");
+            } else {
+                //  平台办公地址获取
+                String url = ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().sign_get_office_url;
+                Map<String, Object> param = new HashMap<>();
+                param.put("enuu", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu"));
+                param.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "b2b_uu"));
+                LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+                headers.put("Cookie", "JSESSIONID=" + ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getCookie());
+                ViewUtil.httpSendRequest(this, url, param, handler, headers, GET_PLAT_SIGN_ADDRESS, null, null, "get");
+            }
         }
 
+
     }
 
     private void doShowPlatSignAddress(String result) {
@@ -326,6 +344,7 @@ public class OfficeAddressSettingsActivity extends BaseActivity {
         } catch (Exception e) {
             e.printStackTrace();
         }
+        progressDialog.dismiss();
     }
 
     private void doShowSignAddress(String get_sign_address_result) {
@@ -386,6 +405,7 @@ public class OfficeAddressSettingsActivity extends BaseActivity {
         } catch (JSONException e) {
             e.printStackTrace();
         }
+        progressDialog.dismiss();
     }
 
     private void clickEvent() {
@@ -558,16 +578,92 @@ public class OfficeAddressSettingsActivity extends BaseActivity {
             if (poi == null) return;
             // 将每次点击地址返回的值add到自定义列表中,
             address_lv.setVisibility(View.VISIBLE);
-            address_names.add(poi.name);
             address_location.add(poi.address);
             address_latitud.add(String.valueOf(poi.location.latitude));
             address_longitude.add(String.valueOf(poi.location.longitude));
             LogUtil.prinlnLongMsg("getpoi", JSON.toJSONString(poi));
+
+            doEditShortName(poi); //编辑地址简称
         }
-        myadapter.setAddress_names(address_names);
-        myadapter.notifyDataSetChanged();
     }
-
+    private PopupWindow popupWindow = null;
+    private void doEditShortName(final PoiInfo poi) {
+        // 一个自定义的布局,作为显示的内容
+        View contentView = LayoutInflater.from(ct).inflate(
+                R.layout.item_select_aim_pop, null);
+
+        // 设置按钮的点击事件
+        final EditText company_et = (EditText) contentView.findViewById(R.id.company_et);
+        TextView address_tv = (TextView) contentView.findViewById(R.id.address_tv);
+        title_tv = (TextView) contentView.findViewById(R.id.title_tv);
+        title_tv.setText("完善办公地址名称");
+        company_et.setText(poi.name);
+        address_tv.setText("详细地址: " + poi.address);
+        Editable etext = company_et.getText();
+        Selection.setSelection(etext, etext.length());
+        DisplayMetrics dm = getResources().getDisplayMetrics();
+        int w_screen = dm.widthPixels;
+        int h_screen = dm.heightPixels;
+        w_screen = DisplayUtil.dip2px(this, 300);
+        h_screen = DisplayUtil.dip2px(this, 185);
+        contentView.findViewById(R.id.goto_tv).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                address_names.add(poi.name);
+                myadapter.setAddress_names(address_names);
+                myadapter.notifyDataSetChanged();
+                popupWindow.dismiss();
+            }
+        });
+        contentView.findViewById(R.id.sure_tv).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                String com = company_et.getText().toString();
+                if (!StringUtils.isEmpty(com)) {
+                    address_names.add(com);
+                }else {
+                    address_names.add(poi.name);
+                }
+                myadapter.setAddress_names(address_names);
+                myadapter.notifyDataSetChanged();
+                popupWindow.dismiss();
+            }
+        });
+        popupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
+        popupWindow.setTouchable(true);
+        popupWindow.setOutsideTouchable(false);
+        // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
+//        popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_main));
+        // 设置好参数之后再show
+        popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
+        setbg(0.4f);
+    }
+    private void setbg(float alpha) {
+        setBackgroundAlpha(this, alpha);
+        if (popupWindow == null) return;
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                setBackgroundAlpha(OfficeAddressSettingsActivity.this, 1f);
+            }
+        });
+    }
+    /**
+     * 设置页面的透明度
+     * 兼容华为手机(在个别华为手机上 设置透明度会不成功)
+     *
+     * @param bgAlpha 透明度   1表示不透明
+     */
+    public void setBackgroundAlpha(Activity activity, float bgAlpha) {
+        WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
+        lp.alpha = bgAlpha;
+        if (bgAlpha == 1) {
+            activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//不移除该Flag的话,在有视频的页面上的视频会出现黑屏的bug
+        } else {
+            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//此行代码主要是解决在华为手机上半透明效果无效的bug
+        }
+        activity.getWindow().setAttributes(lp);
+    }
     //地点显示列表适配器
     public class OfficeAddressAdapter extends BaseAdapter {
         private OfficeAddressBean mOfficeAddressBean;

+ 29 - 23
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SignSeniorSettingActivity.java

@@ -119,9 +119,11 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
                         if (JSON.parseObject(auto_sign_result).getBoolean("success")){
                             if (auto_sign == 1) {
                                 ToastMessage("已设置自动打卡");
+                                auto_sign_sw.setChecked(true);
                                 AutoMemoryUtil.autosign = true;
-                            }else {
+                            } else {
                                 ToastMessage("您已关闭自动打卡,系统无法将帮您自动打卡");
+                                auto_sign_sw.setChecked(false);
                                 AutoMemoryUtil.autosign = false;
 
                             }
@@ -144,7 +146,7 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
                         if (!StringUtils.isEmpty(msg.getData().getString("result"))){
                             String result = msg.getData().getString("result");
                             LogUtil.prinlnLongMsg("save_plat_senior_time",result);
-                           Toast.makeText(getApplicationContext(),"平台考勤时间设置成功",Toast.LENGTH_LONG).show();
+                            Toast.makeText(getApplicationContext(),"平台考勤时间设置成功",Toast.LENGTH_LONG).show();
                         }
                         progressDialog.dismiss();
                         save_btn.setEnabled(true);
@@ -240,25 +242,31 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
         serious_late_time_tv.setText(default_serious_late_time);
         leave_early_tv.setText(default_leave_early_time);
         absenteeism_time_tv.setText(default_absenteeism_time);
-
-        //获取考勤高级设置时间请求
-        if (!platform){
-            String url_getconfigs = Constants.getAppBaseUrl(getApplicationContext()) + "/mobile/getconfigs.action";
-            Map<String, Object> param = new HashMap<>();
-            param.put("code", 1);
-            LinkedHashMap headers = new LinkedHashMap();
-            headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
-            ViewUtil.httpSendRequest(getApplicationContext(), url_getconfigs, param, handler, headers, GET_SENIOR_CONFIGS_TIME, null, null, "post");
-        }else {
-            String url = ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().get_plat_senior_setting_url;
-            Map<String,Object> param = new HashMap<>();
-            param.put("enuu", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu"));
-            param.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "b2b_uu"));
-            LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
-            headers.put("Cookie", "JSESSIONID=" + ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getCookie());
-            ViewUtil.httpSendRequest(this, url, param, handler, headers, GET_PLAT_SENIOR_SETTING, null, null, "get");
+        if (!MyApplication.getInstance().isNetworkActive()){
+            ToastMessage("当前网络不可用,请稍后重试!");
+            progressDialog.dismiss();
+            return;
+        }else{
+            //获取考勤高级设置时间请求
+            if (!platform){
+                String url_getconfigs = Constants.getAppBaseUrl(getApplicationContext()) + "/mobile/getconfigs.action";
+                Map<String, Object> param = new HashMap<>();
+                param.put("code", 1);
+                LinkedHashMap headers = new LinkedHashMap();
+                headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
+                ViewUtil.httpSendRequest(getApplicationContext(), url_getconfigs, param, handler, headers, GET_SENIOR_CONFIGS_TIME, null, null, "post");
+            }else {
+                String url = ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().get_plat_senior_setting_url;
+                Map<String,Object> param = new HashMap<>();
+                param.put("enuu", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu"));
+                param.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "b2b_uu"));
+                LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+                headers.put("Cookie", "JSESSIONID=" + ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getCookie());
+                ViewUtil.httpSendRequest(this, url, param, handler, headers, GET_PLAT_SENIOR_SETTING, null, null, "get");
+            }
         }
 
+
     }
 
     //每次进入高级设置界面时请求url后返回要显示的设置时间
@@ -368,22 +376,20 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
                         @Override
                         public void onClick(DialogInterface dialog, int which) {
                             if (!platform){
+                                auto_sign = 0;
                                 doAutoSignSetting();
                             }else {
                                 ToastMessage("您已关闭自动打卡,系统无法将帮您自动打卡");
                             }
-                            auto_sign = 0;
-                            auto_sign_sw.setChecked(false);
                         }
                     }).show();
         } else if (auto_sign == 0) {
             if (!platform){
+                auto_sign = 1;
                 doAutoSignSetting();
             }else {
                 ToastMessage("已设置自动打卡");
             }
-            auto_sign = 1;
-            auto_sign_sw.setChecked(true);
         }
     }
 

二進制
WeiChat/src/main/res/drawable-hdpi/gongzuotixing.png


二進制
WeiChat/src/main/res/drawable-hdpi/putongzhihui.png


二進制
WeiChat/src/main/res/drawable-hdpi/zhihuixiaoxi.png


二進制
WeiChat/src/main/res/drawable-xhdpi/gongzuotixing.png


二進制
WeiChat/src/main/res/drawable-xhdpi/putongzhihui.png


二進制
WeiChat/src/main/res/drawable-xhdpi/setting.png


二進制
WeiChat/src/main/res/drawable-xhdpi/zhihuixiaoxi.png


二進制
WeiChat/src/main/res/drawable-xxhdpi/gongzuotixing.png


二進制
WeiChat/src/main/res/drawable-xxhdpi/putongzhihui.png


二進制
WeiChat/src/main/res/drawable-xxhdpi/zhihuixiaoxi.png


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

@@ -396,7 +396,7 @@
                         android:orientation="vertical"
                         android:layout_marginTop="2dp"
                         android:paddingLeft="5dp"
-                        android:visibility="visible"
+                        android:visibility="invisible"
                         >
                         <FrameLayout
                             android:id="@+id/notice_head_area"

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

@@ -485,6 +485,7 @@
             android:id="@+id/test_rl"
             style="@style/IMTbleLine_UP_Me"
             android:layout_marginTop="7dp"
+            android:visibility="gone"
             android:background="@drawable/selector_me_menu_item_bg"
            >
 

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

@@ -63,8 +63,9 @@
             android:id="@+id/off_tag_tv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_alignLeft="@id/work_tag_tv"
             android:layout_alignTop="@id/off_tv"
+            android:layout_marginLeft="10dp"
+            android:layout_toRightOf="@id/off_tv"
             android:text="09:20" />
     </RelativeLayout>
 </LinearLayout>

+ 16 - 0
WeiChat/src/main/res/layout/msgs_long_click.xml

@@ -39,6 +39,22 @@
             android:textColor="@color/black"
             android:textSize="15sp"
             android:visibility="visible" />
+        <View
+            android:layout_width="200dp"
+            android:layout_height="1dp"
+            android:background="@color/gray_light"
+            android:visibility="visible" />
+
+        <TextView
+            android:id="@+id/msg_detail_tv"
+            android:layout_width="150dp"
+            android:layout_height="45dp"
+            android:background="@drawable/selector_me_menu_item_bg"
+            android:gravity="center"
+            android:text="查看消息"
+            android:textColor="@color/black"
+            android:textSize="15sp"
+            android:visibility="visible" />
     </LinearLayout>