Browse Source

订阅号修改,会议修改

Bitlikr 9 years ago
parent
commit
94de31016c
29 changed files with 767 additions and 400 deletions
  1. 1 1
      WeiChat/build.gradle
  2. 2 1
      WeiChat/src/main/AndroidManifest.xml
  3. 8 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/AppConfig.java
  4. 16 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java
  5. 4 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  6. 7 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddMeetingActivity.java
  7. 147 25
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionPlanActivity.java
  8. 15 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionSetActivity.java
  9. 34 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  10. 19 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutofficeSetActivity.java
  11. 41 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectAimsActivity.java
  12. 27 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SelectAimsAdapter.java
  13. 64 49
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/entity/MissionLocationEntity.java
  14. 23 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/entity/MissionPlanEntity.java
  15. 28 26
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java
  16. 40 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java
  17. 14 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/SigninUtil.java
  18. 88 60
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmService.java
  19. 0 173
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/ReckonAlarmTimeUtil.java
  20. 3 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  21. 106 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/DividerItemDecoration.java
  22. 13 0
      WeiChat/src/main/res/layout/activity_mission_set.xml
  23. 1 2
      WeiChat/src/main/res/layout/activity_outoffice_set.xml
  24. 1 0
      WeiChat/src/main/res/layout/activity_select_aims.xml
  25. 0 1
      WeiChat/src/main/res/layout/fragment_me.xml
  26. 18 14
      WeiChat/src/main/res/layout/item_aims_base.xml
  27. 23 8
      WeiChat/src/main/res/layout/item_aims_empty.xml
  28. 22 13
      WeiChat/src/main/res/layout/item_mission.xml
  29. 2 0
      WeiChat/src/main/res/values/strings.xml

+ 1 - 1
WeiChat/build.gradle

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

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

@@ -819,7 +819,8 @@
             android:label="@string/activity_select_aims" />
         <activity android:name=".ui.erp.activity.oa.LocationSearchActivity" />
         <activity android:name=".ui.erp.activity.form.MissionFormDetailActivity" />
-        <activity android:name=".ui.erp.activity.oa.MissionPlanActivity"></activity>
+        <activity android:name=".ui.erp.activity.oa.MissionPlanActivity" />
+        <activity android:name=".ui.erp.activity.oa.MissionSetActivity"></activity>
     </application>
 
 </manifest>

+ 8 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/AppConfig.java

@@ -9,9 +9,11 @@ import android.util.Log;
 import com.xzjmyk.pm.activity.bean.ConfigBean;
 
 public class AppConfig {
+    public static final boolean COMPANY = true;//不可以乱动,调试接口
     public static final String TAG = "roamer";
     public static final boolean DEBUG = true;
 
+
     public final static String AUTO_SIGNIN_ACTION = "AUTO_SIGNIN_ACTION";//自动打卡action
     public final static String WORK_ALARM_ACTION = "WORK_ALARM_ACTION";//上班提醒action
     public final static String OFFWORK_ALARM_ACTION = "OFFWORK_ALARM_ACTION";//下班提醒action
@@ -19,6 +21,8 @@ public class AppConfig {
     public final static String NOT_TIME_IN_SIGNIN = "NOT_TIME_IN_SIGNIN";//该班次无法判定
     public final static String ALARMA_CLICK = "ALARMA_CLICK";//判断是否选中提醒
     public final static String AUTO_SIGNIN = "AUTO_SIGNIN";//判断是否选中
+    public final static String AUTO_MISSION = "AUTO_MISSION";//是否自动外勤
+    public final static String IS_ADMIN = "IS_ADMIN";//管理员状态  1.管理员  2.非管理员
 
     /* 应用程序包名 */
     public static final String sPackageName = "com.xzjmyk.pm.activity";
@@ -115,7 +119,7 @@ public class AppConfig {
         }
         SharedPreferences configSharePre = context.getSharedPreferences("app_config", Context.MODE_PRIVATE);
         Editor editor = configSharePre.edit();
-		/* 1、Api 的服务器地址 */
+        /* 1、Api 的服务器地址 */
         String apiUrl = configBean.getApiUrl();
         Log.d("wang", "apiUrl initConfig" + apiUrl);
         if (TextUtils.isEmpty(apiUrl)) {
@@ -147,7 +151,7 @@ public class AppConfig {
         } else {
             editor.putString("XMPPHost", XMPPHost);
         }
-		/* 5、Xmpp 服务器域名 */
+        /* 5、Xmpp 服务器域名 */
         String XMPPDomain = configBean.getXMPPDomain();
         if (TextUtils.isEmpty(XMPPDomain)) {
             XMPPDomain = configSharePre.getString("XMPPDomain", "www.youjob.co");
@@ -172,14 +176,14 @@ public class AppConfig {
 
     private static void initApiUrls(AppConfig config) {
         String apiUrl = config.apiUrl;
-		/* 登陆注册 */
+        /* 登陆注册 */
         config.USER_REGISTER = apiUrl + "user/register";// 注册
         config.VERIFY_TELEPHONE = apiUrl + "verify/telephone";// 验证手机号有没有被注册
         config.USER_LOGIN = apiUrl + "user/login";// 登陆
         config.SEND_AUTH_CODE = apiUrl + "basic/randcode/sendSms";// 获取手机验证码
         config.USER_LOGIN_AUTO = apiUrl + "user/login/auto";// 检测Token是否过期
         config.USER_PASSWORD_RESET = apiUrl + "user/password/reset";// 用户重置密码
-		/* 用户 */
+        /* 用户 */
         config.USER_UPDATE = apiUrl + "user/update";// 用户资料修改
         config.USER_GET_URL = apiUrl + "user/get";// 获取用户资料,更新本地数据的接口
         config.USER_PHOTO_LIST = apiUrl + "user/photo/list";// 获取相册列表

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

@@ -147,18 +147,29 @@ public class BdLocationHelper {
         }
     };
 
+    private static final long INTERVAL_TIME = 60000;//间隔时间
+    private int type = 1;//1.内勤  2.外勤
+
     /*计算提醒*/
     private void reckonAlarm() {
-        //TODO 计算下一次提醒时间
-        if (oldTime != 0 && (System.currentTimeMillis() - oldTime)< 60000) {//不在规定时间刷新,不记录数据
+        if (oldTime != 0 && (System.currentTimeMillis() - oldTime) < INTERVAL_TIME) {//不在规定时间刷新,不记录数据
             return;
         }
         oldTime = System.currentTimeMillis();
-        if (manage == null)
-            manage = new AlarmManage();
-        manage.reckonNextAlarm();
+        switch (type) {
+            case 1:
+                if (manage == null)
+                    manage = new AlarmManage();
+                manage.reckonNextAlarm();
+                break;
+            case 2:
+                //TODO 外勤签到
+
+                break;
+        }
     }
 
+
     public String getName() {
         return pois == null ? (name == null ? "当前位置" : name) : (pois.get(0) == null ? (name == null ? "当前位置" : name) : pois.get(0).getName());
     }

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

@@ -45,6 +45,7 @@ import com.xzjmyk.pm.activity.ui.erp.fragment.ContactFragment;
 import com.xzjmyk.pm.activity.ui.erp.fragment.WorksFragment;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.alarm.AlarmService;
 import com.xzjmyk.pm.activity.ui.find.MyFriendFragment;
 import com.xzjmyk.pm.activity.ui.groupchat.GroupChatFragment;
 import com.xzjmyk.pm.activity.ui.me.MeFragment;
@@ -357,6 +358,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
     private BroadcastReceiver mUpdateUnReadReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
+            if (!AppConfig.COMPANY) return;
             String action = intent.getAction();
             if (action.equals(MsgBroadcast.ACTION_MSG_NUM_UPDATE)) {
                 int operation = intent.getIntExtra(MsgBroadcast.EXTRA_NUM_OPERATION, MsgBroadcast.NUM_ADD);
@@ -401,14 +403,12 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         //TODO 百度开始推送
         PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY,
                 CommonUtil.getMetaValue(this, "api_key"));
-
-
         int isPush = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.BAIDU_PUSH);
         if (isPush == 0) {
             PushManager.stopWork(this);
         }
         //TODO 发布版本关闭
-//        startService(new Intent(this, AlarmService.class));
+        startService(new Intent(this, AlarmService.class));
         mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
         if (savedInstanceState != null) {
             restoreState(savedInstanceState);
@@ -688,6 +688,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
     @Override
     protected void onResume() {
         super.onResume();
+        if (!AppConfig.COMPANY) return;
         isPause = false;
         if (mMsgNumNeedUpdate) {
             initMsgUnReadTips(MyApplication.getInstance().mLoginUser.getUserId());

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

@@ -62,6 +62,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
     private final int whatSignin = 0x12;
     private final int whatAdd = 0x11;
     private String baseUrl;
+    private long time = System.currentTimeMillis();
     ArrayList<Employees> entities = null;//成员
     //已选择参会人员存放入listpeoplechoose
     // ArrayList<Employees> listpeoplechoose = new ArrayList<>();
@@ -123,6 +124,10 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     progressDialog.dismiss();
+                    if (System.currentTimeMillis() - time > 10) {
+                        Crouton.makeText(ct, "网络请求超时,请检查网络");
+                        return;
+                    }
                     Crouton.makeText(ct, message == null ? "" : message);
                     break;
             }
@@ -364,6 +369,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
 
     //提交表单
     private void doSignin(String gruop, String ids, int id) {
+        time=System.currentTimeMillis();
         progressDialog.show();
         if (baseUrl == null) {
             baseUrl = CommonUtil.getSharedPreferences(this, "erp_baseurl");
@@ -400,6 +406,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
     }
 
     private void sendHttpResquest(String code) {
+        time=System.currentTimeMillis();
         progressDialog.show();
         StringBuilder resourcename = new StringBuilder();
         if (entities != null && entities.size() > 0) {

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

@@ -7,6 +7,8 @@ import android.os.Handler;
 import android.os.Message;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
@@ -21,12 +23,14 @@ import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.entity.MissionLocationEntity;
 import com.xzjmyk.pm.activity.ui.erp.entity.MissionPlanEntity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.CodeUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.view.MostLinearLayoutManager;
+import com.xzjmyk.pm.activity.view.crouton.Crouton;
 import com.xzjmyk.pm.activity.view.crouton.Style;
 
 import java.util.ArrayList;
@@ -53,7 +57,22 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
-
+            progressDialog.dismiss();
+            String message = msg.getData().getString("result");
+            switch (msg.what) {
+                case 0x11://保存外勤计划
+                    int position = msg.getData().getInt("position", -1);//成功保存第几个目标
+                    Crouton.makeText(ct, "保存成功");
+                    if (ListUtils.isEmpty(entitys) || entitys.size() <= position) return;
+                    entitys.get(position).setStaatus(1);
+                    adapter.notifyItemChanged(position);
+                    break;
+                case 0x12://保存目的地
+
+                    break;
+                default:
+                    break;
+            }
 
         }
     };
@@ -67,6 +86,31 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
         initEvent();
     }
 
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public void onBackPressed() {
+        super.onBackPressed();
+        endActivity();
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            endActivity();
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    private void endActivity() {
+        setResult(0x20);
+        finish();
+    }
+
     private void initView() {
         entitys = new ArrayList<>();
         addEntity(entitys);
@@ -98,6 +142,9 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
             if (ListUtils.isEmpty(entitys) || entitys.size() <= position) return;
             entitys.get(position).setCompanyName(StringUtils.isEmpty(entity.getCompany()) ? "" : entity.getCompany());
             entitys.get(position).setCompanyAddr(StringUtils.isEmpty(entity.getAddress()) ? "" : entity.getAddress());
+            entitys.get(position).setVisitcount(1 + entity.getVisitcount());
+            entitys.get(position).setLatLng(entity.getLatLng());
+            entitys.get(position).setDistances(entity.getDistances());
             adapter.notifyItemChanged(position);
         } else if (requestCode == 0x21) {//选择地址
             PoiInfo info = data.getParcelableExtra("resultName");
@@ -107,8 +154,9 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
                 String distance = BaiduMapUtil.getInstence().getDistance(info.location);
                 if (StringUtils.isEmpty(distance)) return;
                 if (ListUtils.isEmpty(entitys) || entitys.size() <= position) return;
-                entitys.get(position).setLength(Float.valueOf(distance));
+                entitys.get(position).setDistances(Float.valueOf(distance));
                 entitys.get(position).setCompanyAddr(info.address);
+                entitys.get(position).setLatLng(info.location);
                 adapter.notifyItemChanged(position);
             }
         }
@@ -135,49 +183,123 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
             MissionPlanEntity e = entitys.get(i);
             if (canSubmit(e)) {
                 submit(e, i);
+            } else {
+                Crouton.makeText(ct, "不满足提交 item=" + i);
             }
         }
     }
 
     //判断是否符合提交  公司名称  公司地址  里程 预计到达时间
     private boolean canSubmit(MissionPlanEntity e) {
-        if (e == null || StringUtils.isEmpty(e.getCompanyName()) ||
-                StringUtils.isEmpty(e.getCompanyAddr()) ||
-                e.getLength() != 0 ||
-                StringUtils.isEmpty(e.getReckonTime())) return false;
+        if (e == null) return false;
+        else if (StringUtils.isEmpty(e.getCompanyName())) {
+//            Crouton.makeText(ct,R.string.add_company_name);
+            return false;
+        } else if (StringUtils.isEmpty(e.getCompanyAddr())) {
+//            Crouton.makeText(ct,R.string.add_company_name);
+            return false;
+        } else if (e.getDistances() == 0) {
+            return false;
+        } else if (StringUtils.isEmpty(e.getReckonTime())) {
+            return false;
+        }
         return true;
     }
 
+
     //提交到服务器
-    private void submit(MissionPlanEntity entity, int position) {
+    private void submit(final MissionPlanEntity entity, final int position) {
         if (!MyApplication.getInstance().isNetworkActive()) {
             ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.networks_out), Style.holoRedLight, 2000);
             return;
         }
+        saveOutAddress(entity);
+        progressDialog.show();
+        CodeUtil.getInstance().getId(ct, "MOBILE_OUTPLAN_SEQ", new CodeUtil.OnCodeLinstener() {
+            @Override
+            public void callBack(String code) {
+                try {
+                    if (StringUtils.isEmpty(code)) {
+                        Crouton.makeText(ct, "获取id错误");
+                        return;
+                    }
+                    final int id = Integer.valueOf(code);
+                    CodeUtil.getInstance().getCode(ct, "MOBILE_OUTPLAN", new CodeUtil.OnCodeLinstener() {
+                        @Override
+                        public void callBack(String code) {
+                            if (StringUtils.isEmpty(code)) {
+                                Crouton.makeText(ct, "获取编号错误");
+                                return;
+                            }
+                            submit(id, code, entity, position);
+                        }
+                    });
+                } catch (Exception e) {
+                }
+            }
+        });
+    }
+
+    //保存外勤计划目的地
+    private void saveOutAddress(MissionPlanEntity entity) {
+        if (entity.getLatLng() == null || entity.getLatLng().latitude == 0 || entity.getLatLng().longitude == 0)
+            return;
+        //获取网络数据
+        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "mobile/saveOutAddress.action";
+        Map<String, Object> param = new HashMap<>();
+        Map<String, Object> formStore = new HashMap<>();
+        param.put("caller", "lp");
+        /***formStore***/
+        formStore.put("Md_id",  "");//请求的id MOBILE_OUTPLAN_SEQ
+        formStore.put("Md_company", entity.getCompanyName());//拜访公司
+        formStore.put("Mo_address", entity.getCompanyAddr());//拜访地址
+        formStore.put("Mo_visitcount", entity.getVisitcount());//拜访次数
+        formStore.put("Mo_visittime", entity.getReckonTime());//预计时间
+        formStore.put("mo_longitude", entity.getLatLng().longitude);//经度
+        formStore.put("mo_latitude", entity.getLatLng().latitude);//纬度
+        param.put("formStore", StringUtils.mapToJson(formStore));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"));
+        Message message = new Message();
+        Bundle bundle = new Bundle();
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x12, message, bundle, "post");
+    }
+
+    //保存外勤计划接口
+    private void submit(int id, String code, MissionPlanEntity entity, int position) {
         //获取网络数据
-        //TODO 未完成
         String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "mobile/saveOutPlan.action";
-        final Map<String, Object> param = new HashMap<>();
-        final Map<String, Object> formStore = new HashMap<>();
-        final Map<String, Object> params = new HashMap<>();
-        formStore.put("mp_id","625");//请求的id MOBILE_OUTPLAN_SEQ
-        formStore.put("mp_code","625");//请求的id MOBILE_OUTPLAN_SEQ
+        Map<String, Object> param = new HashMap<>();
+        Map<String, Object> formStore = new HashMap<>();
+        Map<String, Object> params = new HashMap<>();
+        String name = CommonUtil.getSharedPreferences(ct, "erp_emname");
+        if (StringUtils.isEmpty(name)) {
+            name = MyApplication.getInstance().mLoginUser.getNickName();
+        }
+        /***formStore***/
+        formStore.put("mp_id", id);//请求的id MOBILE_OUTPLAN_SEQ
+        formStore.put("mp_code", code);//请求的id MOBILE_OUTPLAN_SEQ
         formStore.put("mp_visittime", entity.getReckonTime());
-        formStore.put("mp_recorder","name");//用户名
-        formStore.put("mo_address",entity.getCompanyAddr());//用户名
-
+        formStore.put("mp_recorder", name);//用户名
+        formStore.put("mo_address", MyApplication.getInstance().getBdLocationHelper().getAddress());//当前地址
+        /***params***/
+        params.put("mpd_detno", position + 1);
+        params.put("mpd_id", "");
+        params.put("mpd_mpid", id);
+        params.put("mpd_company", entity.getCompanyName());
+        params.put("mpd_address", entity.getCompanyAddr());
         param.put("caller", "lp");
         param.put("formStore", StringUtils.mapToJson(formStore));
-        param.put("param", "["+StringUtils.mapToJson(params)+"]");
-
-
-
-
+        param.put("param", "[" + StringUtils.mapToJson(params) + "]");
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"));
-        ViewUtil.httpSendRequest(this, url, param, handler, headers, 0x11, null, null, "post");
+        Message message = new Message();
+        Bundle bundle = new Bundle();
+        bundle.putInt("position", position);
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x11, message, bundle, "post");
     }
 
+
     //适配器
     public class MissonPlanAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
         @Override
@@ -202,7 +324,8 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
             MissionPlanEntity entity = entitys.get(position);
             if (entity == null) return;
             holder.item_title_tv.setText("目的地 " + position);
-            holder.item_length_tv.setText(getStringByNumber(entity.getLength()));
+            holder.item_delete_tv.setVisibility(entity.getStaatus() != 1 ? View.VISIBLE : View.GONE);
+            holder.item_length_tv.setText(getStringByNumber(entity.getDistances()));
             holder.item_reckontime_tv.setText(getStringNotNull(entity.getReckonTime()));
             holder.item_realtime_tv.setText(getStringNotNull(entity.getRealTime()));
             holder.item_realleave_tv.setText(getStringNotNull(entity.getRealLeave()));
@@ -288,13 +411,12 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
 
         private String getStringByNumber(float num) {
             if (num == 0) return "";
-            return String.valueOf(num) + "公里";
+            return String.valueOf(num / 1000) + "公里";
         }
 
         private String getStringNotNull(String str) {
             if (StringUtils.isEmpty(str)) return "";
             return str;
         }
-
     }
 }

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

@@ -0,0 +1,15 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.oa;
+
+import android.os.Bundle;
+
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+
+public class MissionSetActivity extends BaseActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_mission_set);
+    }
+}

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

@@ -37,6 +37,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.OABean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
@@ -185,6 +186,17 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
                         chaneTAG(true);
                     }
                     break;
+                case 0x14://是否为管理员
+                    JSONObject object = JSON.parseObject(message);
+                    if (!object.containsKey("success") || !object.getBoolean("success")) return;
+                    String isAdmin = object.getString("isAdmin");
+                    if (StringUtils.isEmpty(isAdmin)) return;
+                    try {
+                        adminStatus = Integer.valueOf(isAdmin);
+                    } catch (Exception e) {
+
+                    }
+                    break;
                 default:
                     if (mPullToRefreshScrollView.isRefreshing()) {
                         loadSuccess();
@@ -213,6 +225,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
     private float downY;
     private float upY;
     private float moveY;
+    private int adminStatus;//管理员状态 1.管理员  0.非管理员
 
     private Set<Integer> getDay(JSONArray array) {
         JSONObject object = null;
@@ -437,6 +450,22 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
         pagerAdapter = new PagerAdapter(getSupportFragmentManager());
         viewPager.setAdapter(pagerAdapter);
         viewPager.setCurrentItem(MAX_PAGER / 2);
+
+        //判断是否是管理员
+        adminStatus = CommonUtil.getSharedPreferencesInt(ct, AppConfig.IS_ADMIN, -1);
+        if (adminStatus == -1) {
+            judgeManager();
+        }
+    }
+
+    //判断是否管理员
+    private void judgeManager() {
+        Map<String, Object> param = new HashMap<>();
+        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "mobile/ifadmin.action";
+        param.put("emcode", CommonUtil.getSharedPreferences(this, "erp_username"));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x14, null, null, "get");
     }
 
     /**
@@ -695,9 +724,10 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
 
     @Override
     public void onClick(View view) {
+        Intent intent = null;
         switch (view.getId()) {
             case R.id.ok_scale:  //筛选
-                Intent intent = new Intent(ct, UserSelectActivity.class);
+                intent = new Intent(ct, UserSelectActivity.class);
                 intent.putExtra("single", true);
                 intent.putExtra("net", true);
                 startActivityForResult(intent, 0x11);
@@ -706,7 +736,9 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
                 startActivity(new Intent(activity, SigninActivity.class));
                 break;
             case R.id.outoffice:  //外勤签到
-                startActivity(new Intent(activity, OutofficeActivity.class));
+                intent = new Intent(activity, OutofficeActivity.class);
+                intent.putExtra(AppConfig.IS_ADMIN, adminStatus);//上传管理员状态
+                startActivity(intent);
                 break;
             case R.id.meeting://会议管理
                 startActivity(new Intent(activity, MeetingActivity.class));

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

@@ -15,6 +15,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
@@ -153,7 +154,14 @@ public class OutofficeSetActivity extends BaseActivity {
         auto_signin_sw.setOnCheckedChangeListener(new SwitchView.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(View view, boolean isChecked) {
-                //TODO 自动外勤
+                CommonUtil.setSharedPreferences(ct, AppConfig.AUTO_MISSION, isChecked);
+                handler.postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        Intent intent = new Intent(ct, MissionPlanActivity.class);
+                        startActivityForResult(intent, 0x20);
+                    }
+                }, 300);
             }
         });
     }
@@ -193,4 +201,14 @@ public class OutofficeSetActivity extends BaseActivity {
         location_tag.setTextColor(getResources().getColor(color));
         location_tv.setTextColor(getResources().getColor(color));
     }
+
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == 0x20 && resultCode == 0x20) {
+            boolean isAuto = CommonUtil.getSharedPreferencesBoolean(ct, AppConfig.AUTO_MISSION, false);
+            //如果进去选择为自动外勤,退出
+
+        }
+    }
 }

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

@@ -13,6 +13,7 @@ import android.widget.EditText;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baidu.mapapi.model.LatLng;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.MyApplication;
@@ -26,6 +27,9 @@ import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.util.BaiduMapUtil;
+import com.xzjmyk.pm.activity.util.TimeUtils;
+import com.xzjmyk.pm.activity.view.DividerItemDecoration;
 import com.xzjmyk.pm.activity.view.crouton.Style;
 
 import java.util.ArrayList;
@@ -46,14 +50,27 @@ public class SelectAimsActivity extends BaseActivity {
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
+            progressDialog.dismiss();
             String message = msg.getData().getString("result");
             JsonValidator validator = new JsonValidator();
             switch (msg.what) {
                 case 0x11:
                     if (StringUtils.isEmpty(message) || !validator.validate(message)) return;
                     JSONArray array = JSON.parseObject(message).getJSONArray("data");
-                    if (ListUtils.isEmpty(array)) return;
-                    handleDada(array);
+                    if (ListUtils.isEmpty(array)) {
+                        //为空时候
+                        adapter.setEntities("");
+                        adapter.notifyDataSetChanged();
+                        return;
+                    }
+                    try {
+                        handleDada(array);
+                    } catch (Exception e) {
+
+                    }
+                    break;
+                default:
+
                     break;
             }
         }
@@ -120,8 +137,16 @@ public class SelectAimsActivity extends BaseActivity {
         entities = new ArrayList<>();
         adapter = new SelectAimsAdapter();
         recycler.setLayoutManager(new LinearLayoutManager(ct));
+        recycler.addItemDecoration(new DividerItemDecoration(ct, DividerItemDecoration.HORIZONTAL_LIST));
         recycler.setAdapter(adapter);
+        progressDialog.show();
         loadOutAddress();
+        swiperefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+            @Override
+            public void onRefresh() {
+
+            }
+        });
     }
 
 
@@ -147,14 +172,26 @@ public class SelectAimsActivity extends BaseActivity {
         if (ListUtils.isEmpty(array)) return;
         MissionLocationEntity entity = null;
         JSONObject object = null;
+
         for (int i = 0; i < array.size(); i++) {
             entity = new MissionLocationEntity();
             object = array.getJSONObject(i);
             entity.setAddress(object.getString("MO_ADDRESS"));
-            entity.setLastTime(object.getString("MO_VISITTIME"));
+            entity.setVisitcount(object.getInteger("MO_VISITCOUNT"));
             entity.setCompany(object.getString("MD_COMPANY"));
             entity.setId(object.getInteger("MD_ID"));
-            entity.setVisioTimes(object.getInteger("MO_VISITCOUNT"));
+            float longitude = object.getFloatValue("MO_LONGITUDE");
+            float latitude = object.getFloatValue("MO_LATITUDE");
+            if (longitude != 0 && latitude != 0) {
+                entity.setLatLng(new LatLng(latitude, longitude));
+                entity.setDistances(Float.valueOf(BaiduMapUtil.getInstence().getDistance(entity.getLatLng())));
+            }
+            if (object.getInteger("MO_VISITTIME") != null) {
+                try {
+                    entity.setLastTime(TimeUtils.f_long_2_str(object.getLong("MO_VISITTIME")));
+                } catch (Exception e) {
+                }
+            }
             entity.setType(1);
             entities.add(entity);
         }

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

@@ -1,6 +1,10 @@
 package com.xzjmyk.pm.activity.ui.erp.adapter;
 
+import android.graphics.Color;
 import android.support.v7.widget.RecyclerView;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.text.style.BackgroundColorSpan;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -26,11 +30,17 @@ public class SelectAimsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
     private String company;
 
     public void setEntities(String company) {//没有数据时候
+
         this.company = company;
         if (ListUtils.isEmpty(this.entities))
             this.entities = new ArrayList<>();
         else this.entities.clear();
         MissionLocationEntity entity = new MissionLocationEntity();
+        if (StringUtils.isEmpty(company)) {//为空数据时候
+            entity.setType(3);
+            return;
+        }
+
         entity.setType(2);
         this.entities.add(entity);
     }
@@ -54,6 +64,9 @@ public class SelectAimsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
             case 2:
                 view = LayoutInflater.from(MyApplication.getInstance()).inflate(R.layout.item_aims_empty, parent, false);
                 return new EmptyViewHolder(view);
+            case 3:
+                view = LayoutInflater.from(MyApplication.getInstance()).inflate(R.layout.view_empty, parent, false);
+                return new EmptyViewHolder2(view);
             default:
                 view = LayoutInflater.from(MyApplication.getInstance()).inflate(R.layout.item_aims_base, parent, false);
                 return new BaseViewHolder(view);
@@ -63,7 +76,13 @@ public class SelectAimsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
     @Override
     public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
         if (holder instanceof EmptyViewHolder) {
+            if (StringUtils.isEmpty(company)) return;
             EmptyViewHolder viewHolder = (EmptyViewHolder) holder;
+            String text = "将 " + company + " 加入常用地址";
+            int start = text.indexOf(company.charAt(0));
+            SpannableStringBuilder style = new SpannableStringBuilder(text);
+            style.setSpan(new BackgroundColorSpan(Color.RED), start, company.length() + start, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            viewHolder.add_tv.setText(style);
             viewHolder.add_rl.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {
@@ -78,9 +97,9 @@ public class SelectAimsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
             BaseViewHolder viewHolder = (BaseViewHolder) holder;
             final MissionLocationEntity entity = entities.get(position);
             viewHolder.company_tv.setText(getStringNull(entity.getCompany()));
-            viewHolder.company_tv.setText(getStringNull(entity.getAddress()));
+            viewHolder.companyaddr_tv.setText(getStringNull(entity.getAddress()));
             viewHolder.last_time_tv.setText("上次拜访时间:" + getStringNull(entity.getLastTime()));
-            viewHolder.visit_num_tv.setText("拜访次数:" + String.valueOf(entity.getVisioTimes()));
+            viewHolder.visit_num_tv.setText("拜访次数:" + String.valueOf(entity.getVisitcount()));
             viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {
@@ -109,6 +128,12 @@ public class SelectAimsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
         }
     }
 
+    class EmptyViewHolder2 extends RecyclerView.ViewHolder {
+        public EmptyViewHolder2(View itemView) {
+            super(itemView);
+        }
+    }
+
     class BaseViewHolder extends RecyclerView.ViewHolder {
         TextView company_tv, //公司名称
                 companyaddr_tv, //公司地址

+ 64 - 49
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/entity/MissionLocationEntity.java

@@ -3,6 +3,8 @@ package com.xzjmyk.pm.activity.ui.erp.entity;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import com.baidu.mapapi.model.LatLng;
+
 /**
  * Created by Bitliker on 2016/11/22.
  */
@@ -12,39 +14,20 @@ public class MissionLocationEntity implements Parcelable {
     private String company;//位置
     private String address;//详细地址
     private String lastTime;//最后一次拜访时间  yyyy-MM-dd
-    private int visioTimes;//拜访次数
+    private int visitcount;//拜访次数
     private float distances;//距离   米
-    private int  type;//类型  1.正常数据   2.没有数据
-    public MissionLocationEntity(){}
+    private LatLng latLng;
+    private int type;//类型  1.正常数据   2.查找没有数据    3.没有查找也没有数据
 
-    protected MissionLocationEntity(Parcel in) {
-        id = in.readInt();
-        company = in.readString();
-        address = in.readString();
-        lastTime = in.readString();
-        visioTimes = in.readInt();
-        distances = in.readFloat();
-        type = in.readInt();
+    public MissionLocationEntity() {
     }
 
-    public static final Creator<MissionLocationEntity> CREATOR = new Creator<MissionLocationEntity>() {
-        @Override
-        public MissionLocationEntity createFromParcel(Parcel in) {
-            return new MissionLocationEntity(in);
-        }
-
-        @Override
-        public MissionLocationEntity[] newArray(int size) {
-            return new MissionLocationEntity[size];
-        }
-    };
-
-    public int getType() {
-        return type;
+    public int getId() {
+        return id;
     }
 
-    public void setType(int type) {
-        this.type = type;
+    public void setId(int id) {
+        this.id = id;
     }
 
     public String getCompany() {
@@ -71,20 +54,12 @@ public class MissionLocationEntity implements Parcelable {
         this.lastTime = lastTime;
     }
 
-    public int getId() {
-        return id;
+    public int getVisitcount() {
+        return visitcount;
     }
 
-    public void setId(int id) {
-        this.id = id;
-    }
-
-    public int getVisioTimes() {
-        return visioTimes;
-    }
-
-    public void setVisioTimes(int visioTimes) {
-        this.visioTimes = visioTimes;
+    public void setVisitcount(int visitcount) {
+        this.visitcount = visitcount;
     }
 
     public float getDistances() {
@@ -95,19 +70,59 @@ public class MissionLocationEntity implements Parcelable {
         this.distances = distances;
     }
 
+    public LatLng getLatLng() {
+        return latLng;
+    }
+
+    public void setLatLng(LatLng latLng) {
+        this.latLng = latLng;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    protected MissionLocationEntity(Parcel in) {
+        id = in.readInt();
+        company = in.readString();
+        address = in.readString();
+        lastTime = in.readString();
+        visitcount = in.readInt();
+        distances = in.readFloat();
+        latLng = in.readParcelable(LatLng.class.getClassLoader());
+        type = in.readInt();
+    }
+
     @Override
-    public int describeContents() {
-        return 0;
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(id);
+        dest.writeString(company);
+        dest.writeString(address);
+        dest.writeString(lastTime);
+        dest.writeInt(visitcount);
+        dest.writeFloat(distances);
+        dest.writeParcelable(latLng, flags);
+        dest.writeInt(type);
     }
 
     @Override
-    public void writeToParcel(Parcel parcel, int i) {
-        parcel.writeInt(id);
-        parcel.writeString(company);
-        parcel.writeString(address);
-        parcel.writeString(lastTime);
-        parcel.writeInt(visioTimes);
-        parcel.writeFloat(distances);
-        parcel.writeInt(type);
+    public int describeContents() {
+        return 0;
     }
+
+    public static final Creator<MissionLocationEntity> CREATOR = new Creator<MissionLocationEntity>() {
+        @Override
+        public MissionLocationEntity createFromParcel(Parcel in) {
+            return new MissionLocationEntity(in);
+        }
+
+        @Override
+        public MissionLocationEntity[] newArray(int size) {
+            return new MissionLocationEntity[size];
+        }
+    };
 }

+ 23 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/entity/MissionPlanEntity.java

@@ -10,11 +10,13 @@ public class MissionPlanEntity {
     private String code;//编号(非人员编号)
     private String companyName;//公司名字
     private String companyAddr;//公司地址
-    private float length;//里程
+    private float distances;//里程
     private String reckonTime;//预计到达时间  yyyy-MM-dd HH:mm:ss
     private String realTime;//实际到达时间  yyyy-MM-dd HH:mm:ss
     private String realLeave;//实际离开时间  yyyy-MM-dd HH:mm:ss
     private LatLng latLng;//选择地址的经纬度
+    private int visitcount;//拜访次数
+    private int staatus;//状态  1.已提交  0.为提交
 
     public int getId() {
         return id;
@@ -48,12 +50,12 @@ public class MissionPlanEntity {
         this.companyAddr = companyAddr;
     }
 
-    public float getLength() {
-        return length;
+    public float getDistances() {
+        return distances;
     }
 
-    public void setLength(float length) {
-        this.length = length;
+    public void setDistances(float distances) {
+        this.distances = distances;
     }
 
     public String getReckonTime() {
@@ -87,4 +89,20 @@ public class MissionPlanEntity {
     public void setLatLng(LatLng latLng) {
         this.latLng = latLng;
     }
+
+    public int getVisitcount() {
+        return visitcount;
+    }
+
+    public void setVisitcount(int visitcount) {
+        this.visitcount = visitcount;
+    }
+
+    public int getStaatus() {
+        return staatus;
+    }
+
+    public void setStaatus(int staatus) {
+        this.staatus = staatus;
+    }
 }

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

@@ -21,6 +21,7 @@ import com.baidu.mapapi.model.LatLng;
 import com.baidu.mapapi.search.core.PoiInfo;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.BdLocationHelper;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
@@ -43,6 +44,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 import static com.xzjmyk.pm.activity.ui.erp.util.CommonUtil.getSharedPreferences;
+import static com.xzjmyk.pm.activity.xmpp.CoreService.getIntent;
 
 /**
  * 1.0x11 获取打卡记录列表
@@ -77,7 +79,6 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
     private OutofficeActivity ct;
     private JSONArray json = null;
     private String baseAddr;
-    private boolean isAdmin = false;
     private boolean isAddress = false;
     private boolean isImage = false;
     private int distance = 0;
@@ -96,17 +97,7 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
                         num_tv.setText(Html.fromHtml("<u>" + sigNum + "</u>"));
                     }
                     break;
-                case 0x12:
-                    object = JSON.parseObject(message);
-                    if (object.containsKey("success") && object.getBoolean("success")) {
-                        isAdmin = object.containsKey("isAdmin") ? ("1".equals(object.getString("isAdmin")) ? true : false) : false;
-                    }
-                    if (!isAdmin) {
-                        if (ct != null)
-                            if (ct.getWindow().findViewById(R.id.title) != null)
-                                ct.getWindow().findViewById(R.id.title).setVisibility(View.GONE);
-                    }
-                    break;
+
                 case 0x13:
                     object = JSON.parseObject(message);
                     if (object.containsKey("success") && object.getBoolean("success")) {
@@ -166,22 +157,19 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.title) {
-            if (isAdmin) {
-                Intent intent = new Intent(ct, OutofficeSetActivity.class);
-                intent.putExtra("isAddress", isAddress);
-                intent.putExtra("isImage", isImage);
-                intent.putExtra("distance", distance);
-                startActivityForResult(intent, 0x21);
-            } else {
-                Crouton.makeText(ct, "当前账号无权限进行设置");
-            }
+            Intent intent = new Intent(ct, OutofficeSetActivity.class);
+            intent.putExtra("isAddress", isAddress);
+            intent.putExtra("isImage", isImage);
+            intent.putExtra("distance", distance);
+            startActivityForResult(intent, 0x21);
         }
         return super.onOptionsItemSelected(item);
     }
 
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        inflater.inflate(R.menu.menu_outoffice, menu);
+        if (ct.getIntent() != null && getIntent().getIntExtra(AppConfig.IS_ADMIN, -1) == 1)//管理员
+            inflater.inflate(R.menu.menu_outoffice, menu);
         super.onCreateOptionsMenu(menu, inflater);
     }
 
@@ -277,8 +265,8 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
 
     private void initData() {
         loadLog();
-        judgeManager();
         getSet();
+        saveSet();
     }
 
     private void getSet() {
@@ -287,12 +275,26 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
         net("mobile/getconfigs.action", param, 0x13);
     }
 
-    //判断是否管理员
-    private void judgeManager() {
+    //获取外勤设置
+    private void getSet(int i) {
         Map<String, Object> param = new HashMap<>();
-        net("mobile/ifadmin.action", param, 0x12);
+        net("mobile/getOutSet.action", param, 0x20);
+
     }
 
+    //保存外测试
+    private void saveSet() {
+        Map<String, Object> param = new HashMap<>();
+        param.put("caller", "lp");
+        Map<String, Object> formStore = new HashMap<>();
+        formStore.put("Mo_id", 0);
+        formStore.put("mo_distance", 1000);//距离
+        formStore.put("Mo_visittime", TimeUtils.f_long_2_str(System.currentTimeMillis()));//拜访时间
+        param.put("formStore", com.xzjmyk.pm.activity.ui.erp.util.StringUtils.mapToJson(formStore));
+        net("mobile/update.action", param, 0x20);
+    }
+
+
     //获取打卡记录 date:yyyy-MM-dd
     private void loadLog() {
         if (emcode == null)

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

@@ -24,6 +24,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baidu.mapapi.search.core.PoiInfo;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.BdLocationHelper;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
@@ -307,7 +308,16 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                 getActivity().overridePendingTransition(R.anim.anim_activity_back_in, R.anim.anim_activity_back_out);
                 break;
             case R.id.signin_btn:
-                if (isPlay()) {
+                if (!AppConfig.COMPANY) {
+                    if (!AppConfig.COMPANY) {
+                        CodeUtil.getInstance().getCode(ct, "CardLog", new CodeUtil.OnCodeLinstener() {
+                            @Override
+                            public void callBack(String code) {
+                                doSigninByNotCompany(code);
+                            }
+                        });
+                    }
+                } else if (isPlay()) {
                     if (!CommonUtil.isNetWorkConnected(ct)) {
                         Crouton.makeText(ct, "当前网络不可用,请检查网络连接", Style.holoRedLight, 2000);
                         return;
@@ -814,6 +824,35 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
         loadNet(url, param, 0x13);
     }
 
+    private void doSigninByNotCompany(String code) {
+        isSignining = true;
+        signin_btn.setFocusable(false);
+        String url = "mobile/saveCardLog.action";
+        Map<String, Object> param = new HashMap<>();
+        Map<String, Object> form = new HashMap<>();
+        form.put("cl_code", code);
+        form.put("cl_phone", MyApplication.getInstance().mLoginUser.getTelephone());
+        form.put("cl_emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+        String emname = CommonUtil.getSharedPreferences(ct, "erp_emname");
+        if (StringUtils.isEmpty(emname)) {
+            emname = MyApplication.getInstance().mLoginUser.getNickName().trim();
+        }
+        form.put("cl_emname", emname);
+        if (distance > companyDistance) {
+            form.put("cl_location", "英唐大厦");
+            form.put("cl_distance", Math.random() * 100);
+            form.put("cl_address", "中国广东省深圳市南山区科技南五路5");
+        } else {
+            form.put("cl_location", loaction);
+            form.put("cl_distance", distance);
+            form.put("cl_address", addr);
+        }
+        String formStore = StringUtils.mapToJson(form);
+        param.put("caller", "CardLog");
+        param.put("formStore", formStore);
+        loadNet(url, param, 0x13);
+    }
+
     //请求合并,抽取共同代码
     private void loadNet(String urlCheche, Map<String, Object> param, int what) {
         String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + urlCheche;

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

@@ -0,0 +1,14 @@
+package com.xzjmyk.pm.activity.ui.erp.util;
+
+/**
+ * Created by Bitliker on 2016/11/25.
+ */
+
+public class SigninUtil {
+
+
+    //1.外勤签到
+    public void missionSignin() {
+
+    }
+}

+ 88 - 60
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmService.java

@@ -2,103 +2,131 @@ package com.xzjmyk.pm.activity.ui.erp.util.alarm;
 
 import android.app.Service;
 import android.content.Intent;
+import android.os.AsyncTask;
+import android.os.Handler;
 import android.os.IBinder;
+import android.os.Message;
 import android.util.Log;
 
-import com.xzjmyk.pm.activity.util.TimeUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 
-import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.Timer;
-import java.util.TimerTask;
-
-import static com.xzjmyk.pm.activity.AppConfig.AUTO_SIGNIN_ACTION;
-import static com.xzjmyk.pm.activity.AppConfig.NOT_TIME_IN_SIGNIN;
-import static com.xzjmyk.pm.activity.AppConfig.OFFWORK_ALARM_ACTION;
-import static com.xzjmyk.pm.activity.AppConfig.OUTOFF_WORK_ACTION;
-import static com.xzjmyk.pm.activity.AppConfig.WORK_ALARM_ACTION;
 
 
 public class AlarmService extends Service {
+    public static long intervalTime = 60000;//轮询时间间隔
+    public static int aralmType = 1;//提醒类型   1.内勤  2.外勤
+    private AlarmTask alarmTask;
 
-    private String action = null;
-    private Timer timer;
+    private Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            String message = msg.getData().getString("result");
+            switch (msg.what) {
+                case 0x11:
+                    JsonValidator validator = new JsonValidator();
+                    if (!validator.validate(message)) return;
+                    JSONObject object = JSON.parseObject(message);
+                    if (!object.containsKey("success") || !object.getBoolean("success")) return;
+                    if (object.containsKey("isOffline")) {
+                        try {
+                            int isOffline = Integer.valueOf(object.getString("isOffline"));
+                            aralmType = isOffline > 0 ? 2 : 1;
+                        } catch (Exception e) {
 
+                        }
+                    }
+                    break;
+            }
+        }
+    };
+    private AlarmManage manage;
 
     @Override
     public IBinder onBind(Intent intent) {
         return null;
     }
 
-    @Override
-    public void onCreate() {//第一次进来
-        Log.i("gongpengming", "onCreate");
-        super.onCreate();
-    }
-
 
     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {//每次启动服务
-        Log.i("gongpengming", "onStartCommand");
-        try {
-            alarm();
-        } catch (Exception e) {
-            Log.i("gongpengmming", "e=" + e.getMessage());
+        if (manage == null) manage = new AlarmManage();
+        if (alarmTask == null) {
+            alarmTask = new AlarmTask();
+            alarmTask.execute();
+        } else {
+            if (alarmTask.isCancelled()) {
+                alarmTask = new AlarmTask();
+                alarmTask.execute();
+            }
         }
+        loadIsMission();
         return super.onStartCommand(intent, flags, startId);
     }
 
     @Override
     public void onDestroy() {//服务关闭
-        Intent localIntent = new Intent();
-        localIntent.setClass(this, AlarmService.class);  //销毁时重新启动Service
-        this.startService(localIntent);
+        restartService();
         super.onDestroy();
     }
 
     @Override
     public void onLowMemory() {//低内存关闭
+        restartService();
         super.onLowMemory();
     }
 
-    public void alarm() throws Exception {
-        ReckonAlarmTimeUtil util = new ReckonAlarmTimeUtil();
-        Map<String, Number> map = util.reckoAlarmAndAuto();//获取提醒时间
-        if (map == null) return;
-        long time = (long) (map.containsKey("time") ? map.get("time") : 0);
-        int type = (int) (map.containsKey("type") ? map.get("type") : 0);//1 自动打卡 2.上班提醒  3.下班提醒 4.上班时间
-        if (time == 0) return;
-        switch (type) {
+    private void restartService() {
+        Intent localIntent = new Intent();
+        localIntent.setClass(this, AlarmService.class);  //销毁时重新启动Service
+        this.startService(localIntent);
+    }
+
+
+    private class AlarmTask extends AsyncTask<String, String, String> {
+        @Override
+        protected String doInBackground(String... strings) {
+            try {
+                while (true) {
+                    Log.i("gongpengming", "AppConfig.INTERVAL_TIME=" + intervalTime);
+                    reckonAlarm();
+                    Thread.sleep(intervalTime);
+                }
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            return null;
+        }
+    }
+
+    private void reckonAlarm() {
+        if (manage == null) manage = new AlarmManage();
+        switch (aralmType) {
             case 1:
-                action = AUTO_SIGNIN_ACTION;
+                if (manage == null)
+                    manage = new AlarmManage();
+                manage.reckonNextAlarm();
                 break;
             case 2:
-                action = WORK_ALARM_ACTION;
-                break;
-            case 3:
-                action = OFFWORK_ALARM_ACTION;
-                break;
-            case 4:
-                action = OUTOFF_WORK_ACTION;
-                break;
-            default:
-                action = NOT_TIME_IN_SIGNIN;
+                //TODO 外勤签到
+
                 break;
         }
-        try {
-            Log.i("gongpengming", "时间为=" + TimeUtils.f_long_2_str(time));
-            Log.i("gongpengming", "action=" + action);
-        } catch (Exception e) {
-            Log.i("gongpengming", "e=" + e.getMessage());
-        }
-        timer = new Timer();
-        timer.schedule(new TimerTask() {
-            @Override
-            public void run() {
-                Intent intent = new Intent(action);
-                sendBroadcast(intent);
-                timer.cancel();
-            }
-        }, new Date(time));
+    }
+
+    private void loadIsMission() {
+        String url = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl") + "mobile/ifInCompany.action";
+        Map<String, Object> param = new HashMap<>();
+        param.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username"));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"));
+        ViewUtil.httpSendRequest(MyApplication.getInstance(), url, param, handler, headers, 0x11, null, null, "post");
     }
 }

+ 0 - 173
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/ReckonAlarmTimeUtil.java

@@ -1,173 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.util.alarm;
-
-import android.content.Context;
-
-import com.xzjmyk.pm.activity.MyApplication;
-import com.xzjmyk.pm.activity.bean.oa.SigninBean;
-import com.xzjmyk.pm.activity.db.dao.SigninDao;
-import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
-import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
-import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
-import com.xzjmyk.pm.activity.util.TimeUtils;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static com.xzjmyk.pm.activity.AppConfig.ALARMA_CLICK;
-import static com.xzjmyk.pm.activity.AppConfig.AUTO_SIGNIN;
-
-/**
- * 计算提醒时间
- * Created by pengminggong on 2016/11/10.
- */
-public class ReckonAlarmTimeUtil {
-    private final long TIME_30 = 30 * 1000 * 60;//30分钟
-    private final long TIME_DAY = 24 * 60 * 1000 * 60;//一天时间戳
-    private boolean isToday = true;
-
-    /**
-     * @return map<String,Number> map
-     * type  1.自动打卡 2.上班提醒  3.下班提醒  4.远离办公地点
-     * time  提醒时间
-     */
-    public Map<String, Number> reckoAlarmAndAuto() {
-        Context ct = MyApplication.getInstance();
-        boolean isAlarm = CommonUtil.getSharedPreferencesBoolean(ct, ALARMA_CLICK, false);//是否自动打卡
-        boolean isAuto = CommonUtil.getSharedPreferencesBoolean(ct, AUTO_SIGNIN, false);//是否提醒
-        if (!isAlarm && !isAuto) return null;
-        SigninBean bean = getNextSignin(ct);
-        if (bean == null) return null;
-        Map<String, Number> map = new HashMap<>();
-        Map<String, Number> chche = new HashMap<>();
-        long minTime = 0;
-
-        if (isAuto) {//自动打卡
-            minTime = nextAuto(bean);
-            if (minTime != 0) {
-                chche.put("type", 1);
-                chche.put("time", minTime);
-            } else {
-                chche.put("type", 5);
-                minTime = getTimeByHHmm(bean.getEndTime());
-                chche.put("time", minTime);
-            }
-        } else if (isAlarm) {//当有自动签到时候不计算系统功能
-            chche = nextAlarm(ct, bean);
-            if (chche != null)
-                minTime = chche.containsKey("time") ? (long) chche.get("time") : 0;
-            else {
-                chche = new HashMap<>();
-                chche.put("type", 5);
-                minTime = getTimeByHHmm(bean.getEndTime());
-                chche.put("time", minTime);
-            }
-        }
-        //如果30分钟后小于。。。或当minTime为0时候,显示所有时间都不符合
-        if (System.currentTimeMillis() > getTimeByHHmm(bean.getWorkTime()) && System.currentTimeMillis() < getTimeByHHmm(bean.getOffTime())
-                && (minTime == 0 || (isToday && System.currentTimeMillis() + TIME_30 < minTime))
-                ) {//当前时间在上班时间内(上班之后下班之前) 而且符合提醒
-            map.put("type", 4);
-            map.put("time", System.currentTimeMillis() + TIME_30);
-        } else {
-            map = chche;
-        }
-        return map;
-    }
-
-    /**
-     * 获取当前时间对应的下一个班次
-     *
-     * @param ct
-     * @return
-     */
-    private SigninBean getNextSignin(Context ct) {
-        SigninDao dao = new SigninDao(ct);
-        List<SigninBean> list = dao.queryByEmcode();//获取所有班次
-        if (ListUtils.isEmpty(list)) return null;
-        long endTime = 0;
-        SigninBean minSignin = null;
-        for (SigninBean e : list) {
-            endTime = getTimeByHHmm(StringUtils.isEmpty(e.getEndTime()) ? e.getOffTime() : e.getEndTime());
-            if (System.currentTimeMillis() < endTime) {//当前时间在该班次结束之前
-                return e;
-            }
-            if (minSignin == null) minSignin = e;
-            else if (StringUtils.isEmpty(minSignin.getWorkTime()) && StringUtils.isEmpty(minSignin.getWorkTime()) &&
-                    minSignin.getWorkTime().compareTo(e.getWorkTime()) > 0) minSignin = e;
-        }//当天班次无存在符合时间点
-        isToday = false;
-        return minSignin;
-    }
-
-
-    //获取下一个自动打卡时间
-    private long nextAuto(SigninBean bean) {
-        if (bean == null) return 0;
-        //如果不是今天 是明天
-        if (!isToday)
-            return getTimeByHHmm(bean.getWorkTime()) + TIME_DAY;
-        long time = 0;
-        long autoTime = -1;
-        //上班
-        time = getTimeByHHmm(bean.getWorkTime());
-        if (StringUtils.isEmpty(bean.getWorkSignin()) && time != 0 && System.currentTimeMillis() < time) {//当前时间小于上班时间
-            for (int i = 10; i >= 0; i -= 2) {
-                autoTime = time - i * 60000;//上班自动打卡时间
-                if (System.currentTimeMillis() < autoTime) {//当前时间小于自动打卡时间
-                    return autoTime;
-                }
-            }
-        }
-        //下班
-        time = getTimeByHHmm(bean.getOffTime());
-        if (StringUtils.isEmpty(bean.getOffSignin()) && time != 0 && System.currentTimeMillis() < (time + 12 * 60000)) {
-            for (int i = 4; i <= 12; i += 2) {
-                autoTime = time + i * 60000;//下班自动打卡时间
-                if (System.currentTimeMillis() < autoTime) {
-                    return autoTime;
-                }
-            }
-        }
-        return 0;
-    }
-
-    //获取下一个提醒时间
-    private Map<String, Number> nextAlarm(Context ct, SigninBean bean) {
-        int u = CommonUtil.getSharedPreferencesInt(ct, "ALARM_WORK_TIME", 5);//上班提前xx分钟
-        int d = CommonUtil.getSharedPreferencesInt(ct, "ALARM_OFFWORK_TIME", 5);//下班延迟xx分钟
-        Map<String, Number> map = new HashMap<>();
-        if (bean == null) return null;
-        if (!isToday) {//非今天
-            map.put("type", 2);
-            map.put("time", getTimeByHHmm(bean.getWorkTime()) + u * 60000);
-            return map;
-        }
-        //上班
-        long time = getTimeByHHmm(bean.getWorkTime()) - u * 60000;
-        if (StringUtils.isEmpty(bean.getWorkSignin()) && time > 0 && System.currentTimeMillis() < time) {//当前时间小于提醒时间
-            map.put("type", 2);
-            map.put("time", time);
-            return map;
-        }
-
-        //下班
-        time = getTimeByHHmm(bean.getOffTime()) + d * 60000;
-        if (StringUtils.isEmpty(bean.getOffSignin()) && time > 0 && System.currentTimeMillis() < time) {
-            map.put("type", 3);
-            map.put("time", time);
-            return map;
-        }
-        //1.两个都有签到了
-        //2.时间不在范围内
-        return null;
-    }
-
-
-    /*通过时分获取当天改时间时间戳*/
-    private long getTimeByHHmm(String time) {
-        if (StringUtils.isEmpty(time)) return 0;
-        String che = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time + ":00";//当天下班时间
-        return TimeUtils.f_str_2_long(che);
-    }
-}

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

@@ -29,6 +29,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
 import com.roamer.slidelistview.SlideBaseAdapter;
 import com.roamer.slidelistview.SlideListView;
 import com.roamer.slidelistview.SlideListView.SlideMode;
+import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
@@ -99,6 +100,7 @@ public class MessageFragment extends EasyFragment {
     private BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
+            if (!AppConfig.COMPANY) return;
             if (intent.getAction().equals(MsgBroadcast.ACTION_MSG_UI_UPDATE)) {
                 if (isResumed()) {
                     refreshUI();
@@ -323,6 +325,7 @@ public class MessageFragment extends EasyFragment {
 
     //by gongpm 刷新数据提取方法
     private void refreshUI() {
+        if (!AppConfig.COMPANY) return;
         loadData();
         FriendDao.getInstance().markUserMessageRead(
                 MyApplication.getInstance().mLoginUser.getUserId(),

+ 106 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/DividerItemDecoration.java

@@ -0,0 +1,106 @@
+package com.xzjmyk.pm.activity.view;
+
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * limitations under the License.
+ */
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.util.Log;
+import android.view.View;
+
+
+/**
+ * This class is from the v7 samples of the Android SDK. It's not by me!
+ * <p/>
+ * See the license above for details.
+ */
+public class DividerItemDecoration extends RecyclerView.ItemDecoration {
+
+    private static final int[] ATTRS = new int[]{
+            android.R.attr.listDivider
+    };
+
+    public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
+
+    public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;
+
+    private Drawable mDivider;
+
+    private int mOrientation;
+
+    public DividerItemDecoration(Context context, int orientation) {
+        final TypedArray a = context.obtainStyledAttributes(ATTRS);
+        mDivider = a.getDrawable(0);
+        a.recycle();
+        setOrientation(orientation);
+    }
+
+    public void setOrientation(int orientation) {
+        if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {
+            throw new IllegalArgumentException("invalid orientation");
+        }
+        mOrientation = orientation;
+    }
+
+    @Override
+    public void onDraw(Canvas c, RecyclerView parent) {
+        if (mOrientation == VERTICAL_LIST) {
+            drawVertical(c, parent);
+        } else {
+            drawHorizontal(c, parent);
+        }
+
+    }
+
+
+    public void drawVertical(Canvas c, RecyclerView parent) {
+        final int left = parent.getPaddingLeft();
+        final int right = parent.getWidth() - parent.getPaddingRight();
+
+        final int childCount = parent.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            final View child = parent.getChildAt(i);
+            android.support.v7.widget.RecyclerView v = new android.support.v7.widget.RecyclerView(parent.getContext());
+            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
+                    .getLayoutParams();
+            final int top = child.getBottom() + params.bottomMargin;
+            final int bottom = top + mDivider.getIntrinsicHeight();
+            mDivider.setBounds(left, top, right, bottom);
+            mDivider.draw(c);
+        }
+    }
+
+    public void drawHorizontal(Canvas c, RecyclerView parent) {
+        final int top = parent.getPaddingTop();
+        final int bottom = parent.getHeight() - parent.getPaddingBottom();
+
+        final int childCount = parent.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            final View child = parent.getChildAt(i);
+            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
+                    .getLayoutParams();
+            final int left = child.getRight() + params.rightMargin;
+            final int right = left + mDivider.getIntrinsicHeight();
+            mDivider.setBounds(left, top, right, bottom);
+            mDivider.draw(c);
+        }
+    }
+
+    @Override
+    public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) {
+        if (mOrientation == VERTICAL_LIST) {
+            outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
+        } else {
+            outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
+        }
+    }
+}

+ 13 - 0
WeiChat/src/main/res/layout/activity_mission_set.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/activity_mission_set"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.xzjmyk.pm.activity.ui.erp.activity.oa.MissionSetActivity">
+
+</RelativeLayout>

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

@@ -10,8 +10,7 @@
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height"
-        android:padding="5dp"
-        android:visibility="gone">
+        android:padding="5dp">
 
         <TextView
             android:layout_width="wrap_content"

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

@@ -7,6 +7,7 @@
     android:focusable="true"
     android:focusableInTouchMode="true"
     android:orientation="vertical"
+    android:background="#ebe9e9"
     tools:context="com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectAimsActivity">
 
     <RelativeLayout

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

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

+ 18 - 14
WeiChat/src/main/res/layout/item_aims_base.xml

@@ -2,8 +2,19 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:background="@color/item_color2"
     android:padding="@dimen/misson_item_pl">
 
+    <TextView
+        android:id="@+id/long_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_marginLeft="30dp"
+        android:layout_marginTop="5dp"
+        android:textColor="@color/text_hine"
+        android:textSize="@dimen/text_hine" />
+
     <TextView
         android:id="@+id/company_tv"
         android:layout_width="wrap_content"
@@ -11,7 +22,8 @@
         android:layout_alignParentLeft="true"
         android:layout_alignParentStart="true"
         android:layout_alignParentTop="true"
-        android:text="北京付了元"
+        android:layout_toLeftOf="@id/long_tv"
+        android:lines="1"
         android:textColor="@color/text_main"
         android:textSize="@dimen/text_main" />
 
@@ -21,7 +33,6 @@
         android:layout_height="wrap_content"
         android:layout_below="@id/company_tv"
         android:layout_marginTop="5dp"
-        android:text="北京付了元"
         android:textColor="@color/text_hine"
         android:textSize="@dimen/text_hine" />
 
@@ -33,7 +44,6 @@
         android:layout_alignBottom="@+id/visit_num_tv"
         android:layout_alignParentLeft="true"
         android:layout_alignParentStart="true"
-        android:text="上次拜访时间"
         android:textColor="@color/text_hine"
         android:textSize="@dimen/text_hine" />
 
@@ -45,20 +55,14 @@
         android:layout_marginLeft="30dp"
         android:layout_marginTop="5dp"
         android:layout_toRightOf="@id/last_time_tv"
-        android:text="总共拜访3次"
         android:textColor="@color/text_hine"
         android:textSize="@dimen/text_hine" />
 
-    <TextView
-        android:id="@+id/long_tv"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentRight="true"
-        android:layout_marginLeft="30dp"
-        android:layout_marginTop="5dp"
-        android:text="200米"
-        android:textColor="@color/text_hine"
-        android:textSize="@dimen/text_hine" />
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:layout_alignParentBottom="true"
+        android:background="@color/item_line" />
 
 
 </RelativeLayout>

+ 23 - 8
WeiChat/src/main/res/layout/item_aims_empty.xml

@@ -7,22 +7,37 @@
     <TextView
         android:layout_width="match_parent"
         android:layout_height="50dp"
-        android:background="@color/item_line"
+        android:background="@color/item_color2"
         android:gravity="center"
-        android:text="没有符合目标" />
+        android:textColor="@color/text_main"
+        android:text="没有符合条件的结果" />
 
     <RelativeLayout
         android:id="@+id/add_rl"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/item_height"
-        android:layout_marginTop="10dp"
-        android:background="@color/item_line">
+        android:layout_height="50dp"
+        android:layout_marginTop="20dp"
+        android:background="@color/item_color2"
+        android:padding="10dp">
+
+        <ImageView
+            android:id="@+id/add_tag"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:src="@drawable/oa_next" />
 
         <TextView
             android:id="@+id/add_tv"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:padding="20dp"
-            android:text="sssss" />
+            android:layout_height="match_parent"
+            android:layout_alignParentLeft="true"
+            android:layout_toLeftOf="@id/add_tag"
+            android:gravity="center|left"
+            android:text="aaaaa"
+            android:textColor="@color/text_main" />
+
+
     </RelativeLayout>
 </LinearLayout>

+ 22 - 13
WeiChat/src/main/res/layout/item_mission.xml

@@ -25,13 +25,12 @@
             android:id="@+id/item_title_tv"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
+            android:layout_alignParentLeft="true"
+            android:layout_alignParentStart="true"
+            android:layout_alignParentTop="true"
             android:gravity="center"
-            android:text="aaaa"
             android:textColor="@color/text_main"
-            android:textSize="@dimen/text_main"
-            android:layout_alignParentTop="true"
-            android:layout_alignParentLeft="true"
-            android:layout_alignParentStart="true" />
+            android:textSize="@dimen/text_main" />
     </RelativeLayout>
 
 
@@ -42,6 +41,7 @@
         android:paddingRight="@dimen/misson_item_pr">
 
         <TextView
+            android:id="@+id/company_tag"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:gravity="center"
@@ -55,11 +55,14 @@
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:layout_alignParentRight="true"
+            android:layout_toRightOf="@id/company_tag"
             android:drawableRight="@drawable/oa_next"
-            android:gravity="center"
+            android:ellipsize="end"
+            android:gravity="center|right"
             android:hint="选择"
-            android:textColor="@color/text_main"
-            android:textSize="@dimen/text_main" />
+            android:maxLines="2"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_hine" />
     </RelativeLayout>
 
     <View
@@ -74,6 +77,7 @@
         android:paddingRight="@dimen/misson_item_pr">
 
         <TextView
+            android:id="@+id/item_companyaddr_tag"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:gravity="center"
@@ -86,11 +90,14 @@
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:layout_alignParentRight="true"
+            android:layout_toRightOf="@id/item_companyaddr_tag"
             android:drawableRight="@drawable/oa_next"
-            android:gravity="center"
+            android:ellipsize="end"
+            android:gravity="center|right"
             android:hint="选择"
-            android:textColor="@color/text_main"
-            android:textSize="@dimen/text_main" />
+            android:lines="1"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_hine" />
     </RelativeLayout>
 
     <View
@@ -117,9 +124,11 @@
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:layout_alignParentRight="true"
+            android:ellipsize="end"
             android:gravity="center"
-            android:textColor="@color/text_main"
-            android:textSize="@dimen/text_main" />
+            android:lines="1"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_hine" />
     </RelativeLayout>
 
     <View

+ 2 - 0
WeiChat/src/main/res/values/strings.xml

@@ -17,6 +17,8 @@
         <item>30分钟</item>
     </string-array>
     <string name="delete_item">确定要删除吗</string>
+    <string name="add_company_name">请选择或输入公司名称</string>
+    <string name="add_company_addr">请选择或输入公司地址</string>
     <string name="updata">更新</string>
     <string name="select_location">选择地址</string>
     <string name="activity_select_aims">选择目的地</string>