Przeglądaj źródła

修改前提交,首页添加星号显示有任务

Bitliker 9 lat temu
rodzic
commit
8d9e45e1e7

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

@@ -82,11 +82,7 @@
         <activity
             android:name=".ui.SplashActivity"
             android:theme="@style/SplashTheme">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
 
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
         </activity>
         <!-- 登录模块 -->
         <activity android:name=".ui.account.LoginActivity" />
@@ -143,7 +139,12 @@
             android:label="@string/app_name"
             android:launchMode="singleTask"
             android:screenOrientation="portrait"
-            android:windowSoftInputMode="stateUnspecified|adjustNothing" />
+            android:windowSoftInputMode="stateUnspecified|adjustNothing" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
         <!-- 消息模块 -->
         <activity android:name=".ui.message.ChatActivity" />
         <activity android:name=".ui.message.NewFriendActivity" />
@@ -448,7 +449,8 @@
         <activity android:name=".ui.erp.activity.oa.AddNextSigninActivity" />
         <activity android:name=".ui.erp.activity.oa.SigninTimeSetActivity" />
         <activity android:name=".ui.erp.activity.oa.SuperSetActivity" />
-        <activity android:name=".ui.erp.activity.oa.AddLogActivity" />
+        <activity android:name=".ui.erp.activity.oa.AddLogActivity"
+            android:label="新增日志"/>
         <activity android:name=".ui.circle.view.SelectLocationActivity" />
         <activity
             android:name=".ui.erp.activity.oa.SigninTimeSetActivity"

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

@@ -154,9 +154,10 @@ public class WorkLogAdapter extends BaseAdapter {
                 praiseOrCancle(i, isPraise);
             }
         });
-
         if (comments == null || comments.size() <= 0) {
             holder.comment_tag.setVisibility(View.GONE);
+        } else {
+            holder.comment_tag.setVisibility(View.VISIBLE);
         }
         holder.command_tv.setText(comments.size() + "");
         mAdapter = new CommentAdapter(comments);

+ 4 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BusinessCircleActivity.java

@@ -668,9 +668,11 @@ public class BusinessCircleActivity extends BaseActivity implements showCEView {
         addComment(cache.messagePosition, comment);
     }
 
-    /** 添加一条评论的操作 */
     /**
-     * 新一条回复
+     * 添加一条回复
+     *
+     * @param position 回复的索引(用于本地更新适配器和获取messageID)
+     * @param comment  回复的内容对象
      */
     private void addComment(final int position, final Comment comment) {
         final PublicMessage message = mMessages.get(position);

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

@@ -1,27 +1,114 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
+import android.content.Intent;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.util.Log;
 import android.view.View;
+import android.widget.EditText;
 
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.Area;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.util.DeviceInfoUtil;
+import com.xzjmyk.pm.activity.util.ToastUtil;
 
-public class AddLogActivity extends BaseActivity implements View.OnClickListener{
+import java.util.HashMap;
+
+public class AddLogActivity extends BaseActivity {
+    private static final int ADD_WHAT = 0x11;
+    private Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            String message = msg.getData().getString("result");
+            Log.i("gongpengming", message);
+            if (ADD_WHAT == msg.what) {
+                Log.i("gongpengming", "发表成功");
+                setResult(0x22, new Intent());
+                finish();
+            }
+        }
+    };
+    private EditText sum_tv;
+    private EditText plan_tv;
+    private EditText learned_tv;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_add_log);
-        getSupportActionBar().setTitle("新增日志");
         initView();
     }
 
     private void initView() {
-        findViewById(R.id.add).setOnClickListener(this);
+        sum_tv = (EditText) findViewById(R.id.sum_tv);
+        plan_tv = (EditText) findViewById(R.id.plan_tv);
+        learned_tv = (EditText) findViewById(R.id.learned_tv);
+        findViewById(R.id.release_btn).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                //TODO 发表工作日志
+                sendAble();
+            }
+        });
+    }
+
+    private void sendAble() {
+        Log.i("gongpengming", "判断是否能发表日志能力");
+        StringBuilder builder = new StringBuilder();
+        if (sum_tv.getText().toString().length() > 0) {
+            builder.append("工作总结:\n" + sum_tv.getText().toString()+"\n");
+        }
+        if (plan_tv.getText().toString().length() > 0) {
+            builder.append("工作计划:\n" + plan_tv.getText().toString()+"\n");
+        }
+        if (learned_tv.getText().toString().length() > 0) {
+            builder.append("心得体会:\n" + learned_tv.getText().toString()+"\n");
+        }
+        sendWorkLog(builder.toString());
     }
 
-    @Override
-    public void onClick(View view) {
 
+    /** 添加一条评论的操作 */
+    /**
+     * 新一条回复
+     */
+    private void sendWorkLog(String text) {
+        if (text.length() <= 3) {
+            ToastUtil.showToast(this, "请填写完整日志");
+            return;
+        }
+        //参数
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("access_token", MyApplication.getInstance().mAccessToken);
+        params.put("type", "1");
+        // 消息标记:1:求职消息;2:招聘消息;3:普通消息;
+        params.put("flag", "1");
+        params.put("visible", "3");
+        params.put("text", text);// 内容
+        params.put("model", DeviceInfoUtil.getModel());
+        params.put("osVersion", DeviceInfoUtil.getOsVersion());
+        params.put("serialNumber", DeviceInfoUtil.getDeviceId(mContext));
+        //位置信息
+        double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
+        double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
+        if (latitude != 0)
+            params.put("latitude", String.valueOf(latitude));
+        if (longitude != 0)
+            params.put("longitude", String.valueOf(longitude));
+        String address = MyApplication.getInstance().getBdLocationHelper().getAddress();
+        if (!TextUtils.isEmpty(address))
+            params.put("location", address);
+        Area area = Area.getDefaultCity();
+        if (area != null) {
+            params.put("cityId", String.valueOf(area.getId()));//城市Id
+        } else {
+            params.put("cityId", "0");
+        }
+        ViewUtil.httpSendRequest(this, mConfig.MSG_ADD_URL, params, handler, null, ADD_WHAT, null, null, "get");
     }
 }

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

@@ -2,6 +2,7 @@ package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
 import android.app.AlertDialog;
 import android.content.ComponentName;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.ServiceConnection;
 import android.os.Bundle;
@@ -75,8 +76,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
     @ViewInject(R.id.about_et)
     private EditText about_et;
     @ViewInject(R.id.tag_et)
-    private EditText tag_et;
-
+    private TextView tag_et;
     private AddMeetingActivity ct;
     private String roomJid;//创建的房间号
     private final int whatSignin = 0x12;
@@ -112,7 +112,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                 case codeWhat:
                     try {
                         JSONObject json = new JSONObject(message);
-                        if (json.isNull("success") || json.getBoolean("success") || json.isNull("code")) {
+                        if (json.isNull("success") || !json.getBoolean("success") || json.isNull("code")) {
                             ToastUtil.showToast(ct, "业务繁忙,请稍后重试");
                         } else {
                             signinAble(json.getString("code"));
@@ -219,6 +219,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
         findViewById(R.id.start_rl).setOnClickListener(this);
         findViewById(R.id.end_rl).setOnClickListener(this);
         findViewById(R.id.users_rl).setOnClickListener(this);
+        findViewById(R.id.tag_rl).setOnClickListener(this);
     }
 
     @Override
@@ -238,10 +239,31 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                 Intent intent = new Intent(ct, MeetSelectActivity.class);
                 startActivityForResult(intent, request);
                 break;
-
+            case R.id.tag_rl://点击会议标签
+                showTagSelect();
+                break;
         }
     }
 
+    /**
+     * 弹出会议标签选择框
+     */
+    private void showTagSelect() {
+        android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(ct);
+        builder.setTitle("选择微调距离");
+        //    指定下拉列表的显示数据
+        final String[] cities = {"培训会议", "动员大会", "部门会议", "周例会", "月度总结会议", "管理层会议"};
+        //    设置一个下拉的列表选择项
+        builder.setItems(cities, new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                tag_et.setText(cities[which]);
+            }
+        });
+        builder.show();
+    }
+
+
     private void sendMucChatMessage() {
         ChatMessage message = new ChatMessage();
         message.setType(XmppMessage.TYPE_TEXT);
@@ -341,7 +363,6 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
         }
         doSignin(builder.toString(), builderId.toString(), code);
         addRiCheng();
-
     }
 
 
@@ -402,6 +423,13 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
         }
         String url = baseUrl + "oa/meeting/saveMeetingroomapply.action";
         final Map<String, Object> param = new HashMap<>();
+        String form = "{" +
+                "ma_tag" +
+                "" +
+                "" +
+                "" +
+                "" +
+                "}";
         MeetBean bean = new MeetBean();
         bean.setMa_mrcode(code);//编号
         bean.setMa_mrname(name_et.getText().toString());

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

@@ -99,7 +99,7 @@ public class MeetingActivity extends BaseActivity {
                 MeetEntity entity = entities.get((i - 1 < 0 ? 0 : (i - 1)));
 //                String startTime = entity.getMa_starttime();
 //                String endTime = entity.getMa_endtime();
-                intent.putExtra("data",entity);
+                intent.putExtra("data", entity);
 //                intent.putExtra("code", entity.getMa_code());
 //                intent.putExtra("id", entity.getMa_id());
 //                intent.putExtra("start", startTime);
@@ -184,15 +184,12 @@ public class MeetingActivity extends BaseActivity {
         public Object getItem(int i) {
             return entities == null ? null : entities.get(i);
         }
-
         @Override
         public long getItemId(int i) {
             return i;
         }
-
         @Override
         public View getView(int i, View view, ViewGroup viewGroup) {
-
             ViewHolder viewholder = null;
             if (view == null) {
                 view = LayoutInflater.from(MeetingActivity.this).inflate(R.layout.oa_meeting_item, null);

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

@@ -30,6 +30,7 @@ import com.xzjmyk.pm.activity.ui.erp.activity.crm.VisitReportPlanActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.util.JsonUtils;
+import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
 import com.xzjmyk.pm.activity.view.CalendarView;
 import com.xzjmyk.pm.activity.view.MyListView;
@@ -44,7 +45,14 @@ import java.util.List;
 import java.util.Map;
 
 public class OAActivity extends BaseActivity implements View.OnClickListener, AdapterView.OnItemSelectedListener {
-    //start improt View
+    private static final int whatVisit = 0x10,//拜访报告接口
+            whatTask = 0x11,    //任务接口
+            whatSchedule = 0x12,//日程接口
+            whatTaskNum = 0x13;//获取选中日期完成任务情况接口
+    private static String[] stateItems = {"状态", "确认中", "进行中", "已完成"};
+    private static String[] typeItems = {"类型", "任务", "日程", "拜访"};
+    private static String baseUrl;
+
     @ViewInject(R.id.oa_rootview)
     private ScrollView rootScrollView;
     @ViewInject(R.id.oa_picker)
@@ -65,14 +73,17 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
     private TextView ok_scale;//完成比例
     @ViewInject(R.id.date_tv)
     private TextView date_tv;  //当前月份
-    private OAActivity activity;
-    private String[] stateItems = {"状态", "确认中", "进行中", "已完成"};
-    private String[] typeItems = {"类型", "任务", "日程", "拜访"};
-    private String baseUrl;
+
     private PopupMenu poAddMenu;
     private int typeWhat = -1;
-    private final int whatVisit = 0x10, whatTask = 0x11, whatSchedule = 0x12;
-    private final int whatTaskNum = 0x13;
+
+    private String date;
+    private List<Map<String, Object>> mapList;
+    private List<Map<String, Object>> taskList;
+    private List<Map<String, Object>> visitList;
+    private List<Map<String, Object>> scheduleList;
+    private MyListViewAdapter adapter;
+
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -81,7 +92,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
             typeWhat = msg.what;
             switch (msg.what) {
                 case whatVisit:
-                    Log.i("gongpengming", "拜访计划回调");
                     try {
                         JSONObject json = new JSONObject(message);
                         if (json.isNull("success") || !json.getBoolean("success")) {
@@ -141,34 +151,30 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
             }
         }
     };
-    private String date;
-    private List<Map<String, Object>> mapList;
-    private MyListViewAdapter adapter;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_oa);
         ViewUtils.inject(this);
-        init();
         initView();
     }
-
-    private void init() {
-        activity = this;
-        baseUrl = CommonUtil.getSharedPreferences(this, "erp_baseurl");
-    }
-
     private void initView() {
+        baseUrl = CommonUtil.getSharedPreferences(this, "erp_baseurl");
         rootScrollView.requestDisallowInterceptTouchEvent(false);
         picker.setCalendarData(new Date());
         picker.setSelectMore(false);
-        bindAdapterForSpinner();
         adapter = new MyListViewAdapter();
         listview.setAdapter(adapter);
         rootScrollView.smoothScrollTo(0, 20);
+        date_tv.setText(TimeUtils.long2str(System.currentTimeMillis(), "yyyy-MM"));
+        bindAdapterForSpinner();
         setListener();
+        initData();
+    }
 
+    private void initData() {
+//        loadNetData()
     }
 
     //获取网络数据
@@ -176,19 +182,17 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
         progressDialog.show();
         //获取网络数据
         String url = baseUrl + "mobile/crm/getVisitPlan.action";
-        String date = "";
+        String date = TimeUtils.long2str(System.currentTimeMillis(), "yyyyMM");
+        Log.i("gongpengming", date);
         switch (what) {
             case whatVisit:
                 url = baseUrl + "mobile/crm/getVisitPlan.action";
-                date = "201607";
                 break;
             case whatTask:
                 url = baseUrl + "mobile/crm/getTaskMsg.action";
-                date = "201607";
                 break;
             case whatSchedule:
                 url = baseUrl + "mobile/crm/getScheduleMsg.action";
-                date = "201607";
                 break;
             case whatTaskNum:
                 url = baseUrl + "mobile/crm/getTaskAndScheduleMsg.action";
@@ -250,10 +254,10 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
         findViewById(R.id.oa_img_infile).setOnClickListener(this);
         findViewById(R.id.staff_tv).setOnClickListener(this);
         findViewById(R.id.oa_img_add).setOnClickListener(this);
-        picker.setOnDateClickListener(new CalendarView.OnDateClickListener() {
+        picker.setOnItemClickListener(new CalendarView.OnItemClickListener() {
             @Override
-            public void onDateClick(int year, int month, int day) {
-                date = year + "" + month + "" + day;
+            public void OnItemClick(Date selectedStartDate, Date selectedEndDate, Date downDate) {
+                date = downDate.getYear() + "" + downDate.getMonth() + "" + downDate.getDay();
                 loadNetData(whatTaskNum);
             }
         });
@@ -481,4 +485,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
                     item_status_tv;//状态
         }
     }
+
+    enum Mode{
+
+    }
 }

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

@@ -4,7 +4,6 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.EditText;
@@ -43,6 +42,7 @@ public class OutSigninOKActivity extends BaseActivity {
     @ViewInject(R.id.text_edit)//签到按钮
     private EditText text_edit;
     private String baseUrl;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

+ 24 - 24
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkLogsActivity.java

@@ -83,7 +83,6 @@ public class WorkLogsActivity extends BaseActivity {
         Log.i("gongpengming", "onContextItemSelected");
         switch (item.getItemId()) {
             case R.id.add_item:
-                Log.i("gongpengming", " switch (item.getItemId())");
                 startActivityForResult(new Intent(ct, AddLogActivity.class), requestCode);
                 break;
         }
@@ -100,30 +99,15 @@ public class WorkLogsActivity extends BaseActivity {
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (requestCode == this.requestCode) {
             if (resultCode == this.resultCode) {
-
+                requestSpace();
             }
         }
-
     }
 
     //获取数据后更新界面
     private void upDataUi() {
-        if (mAdapter == null)
-            mAdapter = new WorkLogAdapter(ct, mMessages);
-        mAdapter.setButtonViewListener(new WorkLogAdapter.ButtonViewListener() {
-            @Override
-            public void onClick(int i, String messageId, String toUserId, String toName) {
-                if (itemChche == null)
-                    itemChche = new CommentItemChche();
-                itemChche.messageId = messageId;
-                itemChche.toName = toName;
-                itemChche.toUserId = toUserId;
-                itemChche.toUserId = toUserId;
-                itemChche.option = i;
-                bottom_view.show();
-            }
-        });
-        context_rv.setAdapter(mAdapter);
+        mAdapter.setData(mMessages);
+        mAdapter.notifyDataSetChanged();
     }
 
     private void initView() {
@@ -162,7 +146,23 @@ public class WorkLogsActivity extends BaseActivity {
                 Log.i("gongpengming", "enable=" + enable);
             }
         });
-
+        if (mMessages == null)
+            mMessages = new ArrayList<>();
+        mAdapter = new WorkLogAdapter(ct, mMessages);
+        mAdapter.setButtonViewListener(new WorkLogAdapter.ButtonViewListener() {
+            @Override
+            public void onClick(int i, String messageId, String toUserId, String toName) {
+                if (itemChche == null)
+                    itemChche = new CommentItemChche();
+                itemChche.messageId = messageId;
+                itemChche.toName = toName;
+                itemChche.toUserId = toUserId;
+                itemChche.toUserId = toUserId;
+                itemChche.option = i;
+                bottom_view.show();
+            }
+        });
+        context_rv.setAdapter(mAdapter);
         initData();
     }
 
@@ -189,7 +189,7 @@ public class WorkLogsActivity extends BaseActivity {
         HashMap<String, Object> params = new HashMap<>();
         params.put("access_token", MyApplication.getInstance().mAccessToken);
         params.put("userId", MyApplication.getInstance().mLoginUser.getUserId());
-        params.put("flag", PublicMessage.FLAG_NORMAL + "");
+        params.put("flag", PublicMessage.FLAG_APPLY_JOB);
         String messageId = null;
         if (mMessages.size() > 0) {
             messageId = mMessages.get(mMessages.size() - 1).getMessageId();
@@ -201,9 +201,8 @@ public class WorkLogsActivity extends BaseActivity {
         ViewUtil.httpSendRequest(this, mConfig.MSG_LIST, params, handler, null, LOAD_WHAT, null, null, "get");
     }
 
-
-    /** 添加一条评论的操作 */
     /**
+     * 添加一条评论的操作
      * 新一条回复
      */
     private void addComment() {
@@ -229,6 +228,7 @@ public class WorkLogsActivity extends BaseActivity {
         private String toUserId;
         private String toName;
         private String body;
-
     }
+
+
 }

+ 46 - 33
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CalendarView.java

@@ -22,7 +22,6 @@ public class CalendarView extends View implements View.OnTouchListener {
     private final static String TAG = "anCalendar";
     private Date selectedStartDate;
     private Date selectedEndDate;
-    private int year, month, day;//选择的年月日
     private Date curDate; // 当前日历显示的月
     private Date today; // 今天的日期文字显示红色
     private Date downDate; // 手指按下状态时临时日期
@@ -34,9 +33,9 @@ public class CalendarView extends View implements View.OnTouchListener {
     private int curStartIndex, curEndIndex; // 当前显示的日历起始的索引
     private boolean completed = false; // 为false表示只选择了开始日期,true表示结束日期也选择了
     private boolean isSelectMore = false;
+    private int[] taskDay;
     //给控件设置监听事件
     private OnItemClickListener onItemClickListener;
-    private OnDateClickListener onDateClickListener;
 
     public CalendarView(Context context) {
         super(context);
@@ -59,13 +58,21 @@ public class CalendarView extends View implements View.OnTouchListener {
         setOnTouchListener(this);
     }
 
+    public void setTaskDay(int[] taskDay) {
+        this.taskDay = taskDay;
+    }
+
+    public int[] getTaskDay() {
+        return taskDay;
+    }
+
     //计算视图大小
     @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);
+        widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(surface.width, View.MeasureSpec.EXACTLY);
+        heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(surface.height, View.MeasureSpec.EXACTLY);
         setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
     }
@@ -81,7 +88,6 @@ public class CalendarView extends View implements View.OnTouchListener {
 
     @Override
     protected void onDraw(Canvas canvas) {
-        Log.d(TAG, "onDraw");
         // 画框
         canvas.drawPath(surface.boxPath, surface.borderPaint);
         float weekTextY = surface.monthHeight + surface.weekHeight * 3 / 4f;
@@ -113,10 +119,19 @@ public class CalendarView extends View implements View.OnTouchListener {
         }
         for (int i = 0; i < 42; i++) {
             int color = surface.textColor;
-            if (isLastMonth(i)) {
+            if (isLastMonth(i)) {//是上个月
                 color = surface.borderColor;
-            } else if (isNextMonth(i)) {
+            } else if (isNextMonth(i)) {//是下个月日期
                 color = surface.borderColor;
+            } else {//是这个月日期
+                if (taskDay != null && taskDay.length > 0) {//如果有的日期又任务
+                    for (int j : taskDay) {
+                        if (j == date[i]) {//当前日期为由任务日期
+                            drawTask(canvas, i, color);
+                        }
+                    }
+
+                }
             }
             if (todayIndex != -1 && i == todayIndex) {
                 color = surface.todayNumberColor;
@@ -171,6 +186,25 @@ public class CalendarView extends View implements View.OnTouchListener {
         showLastDate = calendar.getTime();
     }
 
+    /**
+     * 绘画有任务日期星号
+     *
+     * @param canvas
+     * @param index
+     */
+    private void drawTask(Canvas canvas, int index, 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 - 5f;
+        float cellX = (surface.cellWidth * (x - 1)) //当前日期框左边框
+                + (surface.cellWidth - surface.datePaint.measureText("*")) - 5f;
+        surface.datePaint.setColor(Color.RED);
+        canvas.drawText("*", cellX, cellY, surface.datePaint);
+    }
+
     /**
      * @param canvas
      * @param index
@@ -181,8 +215,9 @@ public class CalendarView extends View implements View.OnTouchListener {
         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.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);
@@ -338,7 +373,6 @@ public class CalendarView extends View implements View.OnTouchListener {
                     .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);
@@ -346,9 +380,6 @@ public class CalendarView extends View implements View.OnTouchListener {
                 calendar.add(Calendar.MONTH, 1);
             }
             calendar.set(Calendar.DAY_OF_MONTH, date[downIndex]);
-            year = calendar.get(Calendar.YEAR);
-            month = calendar.get(Calendar.MONTH) + 1;
-            day = calendar.get(Calendar.DAY_OF_MONTH);
             downDate = calendar.getTime();
         }
         invalidate();
@@ -372,8 +403,7 @@ public class CalendarView extends View implements View.OnTouchListener {
                             }
                             completed = true;
                             //响应监听事件
-//                            onItemClickListener.OnItemClick(selectedStartDate, selectedEndDate, downDate);
-                            onDateClickListener.onDateClick(year, month, day);
+                            onItemClickListener.OnItemClick(selectedStartDate, selectedEndDate, downDate);
                         } else {
                             selectedStartDate = selectedEndDate = downDate;
                             completed = false;
@@ -381,42 +411,25 @@ public class CalendarView extends View implements View.OnTouchListener {
                     } else {
                         selectedStartDate = selectedEndDate = downDate;
                         //响应监听事件
-//                        onItemClickListener.OnItemClick(selectedStartDate, selectedEndDate, downDate);
-                        onDateClickListener.onDateClick(year, month, day);
-
+                        onItemClickListener.OnItemClick(selectedStartDate, selectedEndDate, downDate);
                     }
                     invalidate();
                 }
-
                 break;
         }
         return true;
     }
 
-    private boolean isThisMonth(String date) {
-        return false;
-    }
-
     //给控件设置监听事件
     public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
         this.onItemClickListener = onItemClickListener;
     }
 
-    public void setOnDateClickListener(OnDateClickListener onDateClickListener) {
-        this.onDateClickListener = onDateClickListener;
-    }
-
-    //监听
-
     //监听接口
     public interface OnItemClickListener {
         void OnItemClick(Date selectedStartDate, Date selectedEndDate, Date downDate);
     }
 
-    public interface OnDateClickListener {
-        void onDateClick(int year, int month, int day);
-    }
-
     /**
      * 1. 布局尺寸 2. 文字颜色,大小 3. 当前日期的颜色,选择的日期颜色
      */

+ 167 - 173
WeiChat/src/main/java/com/xzjmyk/pm/activity/volley/StringJsonArrayRequest.java

@@ -25,182 +25,176 @@ import java.util.zip.GZIPInputStream;
 
 /**
  * 通过字符串参数集,请求json参数,并序列号为JsonModel对象
- * 
- * @author dty
- * 
+ *
  * @param <T>
+ * @author dty
  */
 public class StringJsonArrayRequest<T> extends Request<String> {
 
-	public static interface Listener<T> {
-		void onResponse(ArrayResult<T> result);
-	}
-
-	private Listener<T> mListener;
-	private Class<T> mClazz;
-	private Map<String, String> mParams;
-
-	private boolean mGzipEnable = false;
-
-	/**
-	 * 
-	 * 请求方式post
-	 * 
-	 * @param url
-	 *            url地址
-	 * @param listener
-	 */
-	public StringJsonArrayRequest(String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz, Map<String, String> params) {
-		this(Method.POST, url, errorListener, listener, clazz, params);
-	}
-
-	/**
-	 * 
-	 * @param method
-	 *            请求方式,post或者get
-	 * @param url
-	 *            url地址
-	 * @param listener
-	 */
-	public StringJsonArrayRequest(int method, String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz,
-			Map<String, String> params) {
-		super(method, url, errorListener);
-		mListener = listener;
-		mClazz = clazz;
-		mParams = params;
-		if (method == Method.GET) {
-			spliceGetUrl();
-		}
-	}
-
-	public void setGzipEnable(boolean eanble) {
-		mGzipEnable = eanble;
-	}
-
-	/* Post 参数设置 */
-	@Override
-	protected Map<String, String> getParams() throws AuthFailureError {
-		if (getMethod() != Method.POST && getMethod() != Method.PUT) {
-			return null;
-		}
-		if (FastVolley.DEBUG) {
-			Log.d(FastVolley.TAG, "url:" + getUrl());
-			if (mParams != null) {
-				for (String key : mParams.keySet()) {
-					Log.d(FastVolley.TAG, "key:" + key + " ------  " + "value:" + mParams.get(key));
-				}
-			}
-		}
-		return mParams;
-	}
-
-	@Override
-	public Map<String, String> getHeaders() throws AuthFailureError {
-		if (mGzipEnable) {
-			Map<String, String> headers = new HashMap<String, String>();
-			headers.put("Charset", "UTF-8");
-			headers.put("Content-Type", "application/x-javascript");
-			headers.put("Accept-Encoding", "gzip,deflate");
-			return headers;
-		} else {
-			return super.getHeaders();
-		}
-	}
-
-	/* Get 参数拼接 */
-	private void spliceGetUrl() {
-		if (mParams != null && mParams.size() > 0) {
-			String url = getUrl();
-			if (TextUtils.isEmpty(url)) {
-				return;
-			}
-			if (url != null && !url.contains("?")) {
-				url += "?";
-			}
-			String param = "";
-			for (String key : mParams.keySet()) {
-				param += (key + "=" + mParams.get(key) + "&");
-			}
-			param = param.substring(0, param.length() - 1);// 去掉最后一个&
-			setUrl(url + param);
-		}
-	}
-
-	@Override
-	protected void deliverResponse(String arg0) {
-		if (mListener == null) {
-			return;
-		}
-		if (FastVolley.DEBUG) {
-			Log.d(FastVolley.TAG, "StringJsonRequest deliverResponse:" + arg0);
-		}
-
-		if (TextUtils.isEmpty(arg0)) {
-			deliverError(new VolleyError(new NetworkError()));
-			return;
-		}
-		ArrayResult<T> result = new ArrayResult<T>();
-		try {
-			JSONObject jsonObject = JSON.parseObject(arg0);
-			result.setResultCode(jsonObject.getIntValue(Result.RESULT_CODE));
-			result.setResultMsg(jsonObject.getString(Result.RESULT_MSG));
-
-			String data = jsonObject.getString(Result.DATA);
-			if (!TextUtils.isEmpty(data)) {
-				result.setData(JSON.parseArray(data, mClazz));
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		mListener.onResponse(result);
-	}
-
-	@Override
-	protected Response<String> parseNetworkResponse(NetworkResponse response) {
-		String parsed;
-		try {
-			if (mGzipEnable) {
-				parsed = getRealString(response.data);
-			} else {
-				parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
-			}
-		} catch (UnsupportedEncodingException e) {
-			parsed = new String(response.data);
-		}
-		return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));
-	}
-
-	private int getShort(byte[] data) {
-		return (int) ((data[0] << 8) | data[1] & 0xFF);
-	}
-
-	/**
-	 * GZip解压缩
-	 */
-	private String getRealString(byte[] data) {
-		byte[] h = new byte[2];
-		h[0] = (data)[0];
-		h[1] = (data)[1];
-		int head = getShort(h);
-		boolean t = head == 0x1f8b;
-		InputStream in;
-		StringBuilder sb = new StringBuilder();
-		try {
-			ByteArrayInputStream bis = new ByteArrayInputStream(data);
-			if (t) {
-				in = new GZIPInputStream(bis);
-			} else {
-				in = bis;
-			}
-			BufferedReader r = new BufferedReader(new InputStreamReader(in), 1000);
-			for (String line = r.readLine(); line != null; line = r.readLine()) {
-				sb.append(line);
-			}
-			in.close();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return sb.toString();
-	}
+    public static interface Listener<T> {
+        void onResponse(ArrayResult<T> result);
+    }
+
+    private Listener<T> mListener;
+    private Class<T> mClazz;
+    private Map<String, String> mParams;
+
+    private boolean mGzipEnable = false;
+
+    /**
+     * 请求方式post
+     *
+     * @param url      url地址
+     * @param listener
+     */
+    public StringJsonArrayRequest(String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz, Map<String, String> params) {
+        this(Method.POST, url, errorListener, listener, clazz, params);
+    }
+
+    /**
+     * @param method   请求方式,post或者get
+     * @param url      url地址
+     * @param listener
+     */
+    public StringJsonArrayRequest(int method, String url, ErrorListener errorListener, Listener<T> listener, Class<T> clazz,
+                                  Map<String, String> params) {
+        super(method, url, errorListener);
+        mListener = listener;
+        mClazz = clazz;
+        mParams = params;
+        if (method == Method.GET) {
+            spliceGetUrl();
+        }
+    }
+
+    public void setGzipEnable(boolean eanble) {
+        mGzipEnable = eanble;
+    }
+
+    /* Post 参数设置 */
+    @Override
+    protected Map<String, String> getParams() throws AuthFailureError {
+        if (getMethod() != Method.POST && getMethod() != Method.PUT) {
+            return null;
+        }
+        if (FastVolley.DEBUG) {
+            Log.d(FastVolley.TAG, "url:" + getUrl());
+            if (mParams != null) {
+                for (String key : mParams.keySet()) {
+                    Log.d(FastVolley.TAG, "key:" + key + " ------  " + "value:" + mParams.get(key));
+                }
+            }
+        }
+        return mParams;
+    }
+
+    @Override
+    public Map<String, String> getHeaders() throws AuthFailureError {
+        if (mGzipEnable) {
+            Map<String, String> headers = new HashMap<String, String>();
+            headers.put("Charset", "UTF-8");
+            headers.put("Content-Type", "application/x-javascript");
+            headers.put("Accept-Encoding", "gzip,deflate");
+            return headers;
+        } else {
+            return super.getHeaders();
+        }
+    }
+
+    /* Get 参数拼接 */
+    private void spliceGetUrl() {
+        if (mParams != null && mParams.size() > 0) {
+            String url = getUrl();
+            if (TextUtils.isEmpty(url)) {
+                return;
+            }
+            if (url != null && !url.contains("?")) {
+                url += "?";
+            }
+            String param = "";
+            for (String key : mParams.keySet()) {
+                param += (key + "=" + mParams.get(key) + "&");
+            }
+            param = param.substring(0, param.length() - 1);// 去掉最后一个&
+            setUrl(url + param);
+        }
+    }
+
+    @Override
+    protected void deliverResponse(String arg0) {
+        if (mListener == null) {
+            return;
+        }
+        if (FastVolley.DEBUG) {
+            Log.d(FastVolley.TAG, "StringJsonRequest deliverResponse:" + arg0);
+        }
+
+        if (TextUtils.isEmpty(arg0)) {
+            deliverError(new VolleyError(new NetworkError()));
+            return;
+        }
+        ArrayResult<T> result = new ArrayResult<T>();
+        try {
+            JSONObject jsonObject = JSON.parseObject(arg0);
+            result.setResultCode(jsonObject.getIntValue(Result.RESULT_CODE));
+            result.setResultMsg(jsonObject.getString(Result.RESULT_MSG));
+
+            String data = jsonObject.getString(Result.DATA);
+            if (!TextUtils.isEmpty(data)) {
+                result.setData(JSON.parseArray(data, mClazz));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        mListener.onResponse(result);
+    }
+
+    @Override
+    protected Response<String> parseNetworkResponse(NetworkResponse response) {
+        String parsed;
+        try {
+            if (mGzipEnable) {
+                parsed = getRealString(response.data);
+            } else {
+                parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
+            }
+        } catch (UnsupportedEncodingException e) {
+            parsed = new String(response.data);
+        }
+        return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));
+    }
+
+    private int getShort(byte[] data) {
+        return (int) ((data[0] << 8) | data[1] & 0xFF);
+    }
+
+    /**
+     * GZip解压缩
+     */
+    private String getRealString(byte[] data) {
+        byte[] h = new byte[2];
+        h[0] = (data)[0];
+        h[1] = (data)[1];
+        int head = getShort(h);
+        boolean t = head == 0x1f8b;
+        InputStream in;
+        StringBuilder sb = new StringBuilder();
+        try {
+            ByteArrayInputStream bis = new ByteArrayInputStream(data);
+            if (t) {
+                in = new GZIPInputStream(bis);
+            } else {
+                in = bis;
+            }
+            BufferedReader r = new BufferedReader(new InputStreamReader(in), 1000);
+            for (String line = r.readLine(); line != null; line = r.readLine()) {
+                sb.append(line);
+            }
+            in.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return sb.toString();
+    }
 
 }

+ 19 - 2
WeiChat/src/main/res/layout/activity_add_log.xml

@@ -17,6 +17,7 @@
         android:textSize="@dimen/text_main" />
 
     <EditText
+        android:id="@+id/sum_tv"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@drawable/oa_signin_tv_bg"
@@ -28,6 +29,7 @@
         android:textSize="@dimen/text_main" />
 
     <EditText
+        android:id="@+id/plan_tv"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@drawable/oa_signin_tv_bg"
@@ -39,6 +41,7 @@
         android:textSize="@dimen/text_main" />
 
     <EditText
+        android:id="@+id/learned_tv"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@drawable/oa_signin_tv_bg"
@@ -49,6 +52,17 @@
         android:textColor="@color/text_hine"
         android:textSize="@dimen/text_main" />
 
+    <Button
+        android:id="@+id/release_btn"
+        android:layout_width="match_parent"
+        android:layout_height="42dp"
+        android:clickable="true"
+        android:layout_margin="20dp"
+        android:background="@drawable/bg_btn"
+        android:text="@string/circle_release"
+        android:textColor="@color/white"
+        android:textSize="16sp" />
+
     <TextView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -57,13 +71,16 @@
         android:padding="20dp"
         android:text="选择点评人(默认指向自己领导)"
         android:textColor="@color/text_main"
-        android:textSize="@dimen/text_main" />
+        android:textSize="@dimen/text_main"
+        android:visibility="gone" />
+
 
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="50dp"
-        android:orientation="horizontal">
+        android:orientation="horizontal"
+        android:visibility="gone">
 
         <ImageView
             android:layout_width="0dp"

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

@@ -167,7 +167,8 @@
             android:layout_height="10dp" />
 
         <RelativeLayout
-            android:id="@+id/ry_leave_hours"
+            android:id="@+id/tag_rl"
+            android:clickable="true"
             style="@style/add_meeting"
             android:background="@color/item_color2">
 
@@ -183,7 +184,7 @@
                 android:textColor="@color/text_main"
                 android:textSize="@dimen/text_main" />
 
-            <EditText
+            <TextView
                 android:id="@+id/tag_et"
                 style="@style/add_meet_tv"
                 android:layout_toRightOf="@+id/tag_tag"

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

@@ -291,7 +291,8 @@
                 android:layout_marginRight="20dp"
                 android:layout_toLeftOf="@+id/date_tv"
                 android:clickable="true"
-                android:src="@drawable/oa_data_back" />
+                android:src="@drawable/oa_data_back"
+                android:visibility="gone" />
 
             <ImageView
                 android:id="@+id/date_next_img"
@@ -300,7 +301,8 @@
                 android:layout_marginLeft="20dp"
                 android:layout_toRightOf="@+id/date_tv"
                 android:clickable="true"
-                android:src="@drawable/oa_data_next" />
+                android:src="@drawable/oa_data_next"
+                android:visibility="gone" />
         </RelativeLayout>
 
         <View