Przeglądaj źródła

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

FANGLH 9 lat temu
rodzic
commit
ecc0675cb0
30 zmienionych plików z 322 dodań i 106 usunięć
  1. 1 1
      WeiChat/build.gradle
  2. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/ErrorMagDao.java
  3. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/MissionDao.java
  4. 8 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportAddActivity.java
  5. 3 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DestinationActivity.java
  6. 15 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionActivity.java
  7. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  8. 4 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/TestActivity.java
  9. 43 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/MissionAdapter.java
  10. 5 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkAdapter.java
  11. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBOpenHelper.java
  12. 11 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/MissionModel.java
  13. 12 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MissionPresenter.java
  14. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/WorkPresenter.java
  15. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/Constants.java
  16. 39 29
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpService.java
  17. 56 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpSigninUitl.java
  18. BIN
      WeiChat/src/main/res/drawable-xxhdpi/btn_shensu.png
  19. BIN
      WeiChat/src/main/res/drawable-xxhdpi/item_all_rb.png
  20. BIN
      WeiChat/src/main/res/drawable-xxhdpi/item_all_rb_pass.png
  21. BIN
      WeiChat/src/main/res/drawable-xxhdpi/item_half_rb.png
  22. BIN
      WeiChat/src/main/res/drawable-xxhdpi/item_half_rb_pass.png
  23. 6 0
      WeiChat/src/main/res/drawable/item_all_rb_d.xml
  24. 6 0
      WeiChat/src/main/res/drawable/item_half_rb_d.xml
  25. 4 6
      WeiChat/src/main/res/layout/activity_oamain.xml
  26. 2 1
      WeiChat/src/main/res/layout/activity_test.xml
  27. 2 1
      WeiChat/src/main/res/layout/fragment_me.xml
  28. 70 5
      WeiChat/src/main/res/layout/item_mission.xml
  29. 19 22
      WeiChat/src/main/res/layout/item_works.xml
  30. 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/FANGlh/Desktop/UUAPP/applicationsignname[20150409]')
+            storeFile file('D:/config/applicationsignname[20150409]')
             storePassword '13237658359'
             keyAlias 'jie-20150409'
             keyPassword '13237658359'

+ 1 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/ErrorMagDao.java

@@ -71,6 +71,7 @@ public class ErrorMagDao {
         }
     }
 
+
     //插入一个数据
     public boolean insert(ErrorEntity bean) {
         delete(bean);

+ 3 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/MissionDao.java

@@ -97,7 +97,7 @@ public class MissionDao {
                     "realvisitTime", "realLeaveTime",
                     "status", "distance",
                     "location", "recorddate",
-                    "remark"};
+                    "remark", "type"};
             String selection = "master =? and emcode=? and date=?";
             String[] selecttionArg = {master, emcode, date};
             cursor = db.query(tibleName, columns, selection, selecttionArg, null, null, null);
@@ -120,6 +120,7 @@ public class MissionDao {
                 mission.setLocation(cursor.getString(10));
                 mission.setRecorddate(cursor.getString(11));
                 mission.setRemark(cursor.getString(12));
+                mission.setType(cursor.getInt(13));
                 missions.add(mission);
             }
         } catch (android.database.SQLException e) {
@@ -219,6 +220,7 @@ public class MissionDao {
                 values.put("distance", mission.getDistance());
                 values.put("location", mission.getLocation());
                 values.put("remark", mission.getRemark());
+                values.put("type", mission.getType());
                 values.put("recorddate", mission.getRecorddate());
                 values.put("date", getDateByString(mission.getVisitTime()));//拜访日期
                 i = db.insert(tibleName, "status", values);

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

@@ -148,13 +148,18 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
             Log.i("VisitRecord2", chche);
         } else if (type == 3) {
             //1.开始日期==预计拜访时间  2.客户名称==公司名称  客户地址
-
-
+            String chche = getIntent().getStringExtra("data");
+            JSONObject object = JSON.parseObject(chche);
+            tv_date_start.setText(getJSONString(object, "mpd_actdate"));
+            tv_date_end.setText(getJSONString(object, "mpd_outdate"));
+            tv_customer_login.setText(getJSONString(object, "mpd_company"));
+            tv_address_login.setText(getJSONString(object, "mpd_address"));
+            Log.i("gongpengming", chche);
         }
     }
 
     private String getJSONString(JSONObject object, String key) {
-        if (object.containsKey(key) && !com.xzjmyk.pm.activity.ui.erp.util.StringUtils.isEmpty(object.getString(key))) {
+        if (object.containsKey(key) && !StringUtils.isEmpty(object.getString(key))) {
             return object.getString(key);
         } else {
             return "";

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

@@ -240,6 +240,7 @@ public class DestinationActivity extends BaseActivity {
                 holder.content = (RelativeLayout) view.findViewById(R.id.content);
                 holder.empty = (LinearLayout) view.findViewById(R.id.empty);
                 holder.add_tv = (TextView) view.findViewById(R.id.add_tv);
+                holder.add_rl = (RelativeLayout) view.findViewById(R.id.add_rl);
                 view.setTag(holder);
             } else {
                 holder = (BaseViewHolder) view.getTag();
@@ -259,7 +260,7 @@ public class DestinationActivity extends BaseActivity {
                 style.setSpan(new TextAppearanceSpan(MyApplication.getInstance(), R.style.text_color),
                         start, company.length() + start, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                 holder.add_tv.setText(style);
-                holder.add_tv.setOnClickListener(new View.OnClickListener() {
+                holder.add_rl.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
                         Intent intent = new Intent();
@@ -280,7 +281,7 @@ public class DestinationActivity extends BaseActivity {
         }
 
         class BaseViewHolder {
-            RelativeLayout content;
+            RelativeLayout content, add_rl;
             LinearLayout empty;
             TextView company_tv, //公司名称
                     companyaddr_tv, //公司地址

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

@@ -22,6 +22,7 @@ import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.oa.SelectBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.adapter.MissionAdapter;
 import com.xzjmyk.pm.activity.ui.erp.model.MissionModel;
@@ -275,10 +276,12 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
             adapter.getModels().get(position).setCompanyName(StringUtils.isEmpty(entity.getCompanyName()) ? "" : entity.getCompanyName());
             adapter.getModels().get(position).setCompanyAddr(StringUtils.isEmpty(entity.getCompanyAddr()) ? "" : entity.getCompanyAddr());
             adapter.getModels().get(position).setVisitcount(1 + entity.getVisitcount());
-            adapter.getModels().get(position).setLatLng(entity.getLatLng());
-            adapter.getModels().get(position).setDistance(BaiduMapUtil.getInstence().distance(adapter.getModels().get(position).getLatLng()
-                    , new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
-                            MyApplication.getInstance().getBdLocationHelper().getLongitude())));
+            if (entity.getLatLng() != null) {
+                adapter.getModels().get(position).setLatLng(entity.getLatLng());
+                adapter.getModels().get(position).setDistance(BaiduMapUtil.getInstence().distance(adapter.getModels().get(position).getLatLng()
+                        , new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
+                                MyApplication.getInstance().getBdLocationHelper().getLongitude())));
+            }
             adapter.notifyItemChanged(position);
             setEndTime(entity.getCompanyName());
         } else if (requestCode == 0x21) {//选择地址
@@ -315,8 +318,13 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                     finish();
                 }
             }
+        } else if (0x23 == requestCode) {
+            SelectBean b = data.getParcelableExtra("data");
+            if (b == null) return;
+            int type = StringUtils.isEmpty(b.getName()) ? 1 : "半天".equals(b.getName()) ? 1 : 2;
+            adapter.getModels().get(position).setType(type);
+            adapter.notifyItemChanged(position);
         }
-
     }
 
 
@@ -347,6 +355,8 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
         MissionModel entity = new MissionModel();
         entity.setLocation(MyApplication.getInstance().getBdLocationHelper().getName());//当前位置
         entity.setRecorddate(TimeUtils.f_long_2_str(System.currentTimeMillis()));//当前时间
+        entity.setStatus(0);
+        entity.setType(1);//当前时间
         entitys.add(entity);
     }
 }

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

@@ -389,11 +389,11 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
                     startActivityForResult(intent, isMe ? 0x20 : 0x21);
                 } else if (adapter.isOutplan(object)) {
                     //TODO 发布版本关闭
-//                    intent = new Intent(activity, VisitReportAddActivity.class);
-//                    intent.putExtra("type", 3);
-//                    intent.putExtra("isMe", isMe);//可以提交拜访报告
-//                    intent.putExtra("object", object.toString());
-//                    startActivityForResult(intent, isMe ? 0x20 : 0x21);
+                    intent = new Intent(activity, VisitReportAddActivity.class);
+                    intent.putExtra("type", 3);
+                    intent.putExtra("isMe", isMe);//可以提交拜访报告
+                    intent.putExtra("data", object.toString());
+                    startActivityForResult(intent, isMe ? 0x20 : 0x21);
                 }
             }
         });

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

@@ -12,8 +12,8 @@ import android.widget.TextView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.AppConfig;
-import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.db.dao.ErrorMagDao;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.entity.ErrorEntity;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
@@ -49,15 +49,15 @@ public class TestActivity extends BaseActivity implements View.OnClickListener {
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.error_list:
-                MyApplication.getInstance().getBdLocationHelper().requestLocation();
+                beans = ErrorMagDao.getInstance().queryAll();
+                adaptr.notifyDataSetChanged();
                 break;
             case R.id.test_btn:
-                MyApplication.getInstance().getBdLocationHelper().requestLocation(5000);
                 break;
         }
     }
 
-    
+
     class ErrorAdaptr extends BaseAdapter {
         @Override
         public int getCount() {

+ 43 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/MissionAdapter.java

@@ -2,10 +2,13 @@ package com.xzjmyk.pm.activity.ui.erp.adapter;
 
 import android.support.v7.widget.RecyclerView;
 import android.text.Editable;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.CompoundButton;
 import android.widget.EditText;
+import android.widget.RadioButton;
 import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.R;
@@ -53,6 +56,9 @@ public class MissionAdapter extends RecyclerView.Adapter<MissionAdapter.BaseView
                 initView(holder, position);
                 initEvent(holder, position);
             } catch (Exception e) {
+                if (e != null)
+                    Log.i("gongpengming", "onBindViewHolder Exception " + e.getMessage());
+                else Log.i("gongpengming", "Exception==null");
             }
         }
     }
@@ -79,8 +85,28 @@ public class MissionAdapter extends RecyclerView.Adapter<MissionAdapter.BaseView
         holder.item_time_tv.setText(getStringNotNull(entity.getRecorddate()));
         holder.item_location_tv.setText(getStringNotNull(entity.getLocation()));
         holder.item_remark_tv.setText(getStringNotNull(entity.getRemark()));
-        holder.item_remark_tv.setFocusable(entity.getStatus() != 1);
-        holder.item_remark_tv.setClickable(entity.getStatus() != 1);
+        boolean focusable = entity.getStatus() != 1;
+        setViewFocusable(holder.item_remark_tv, focusable);
+        setViewFocusable(holder.item_half_rb, focusable);
+        setViewFocusable(holder.item_all_rb, focusable);
+        setViewFocusable(holder.item_reckontime_tv, focusable);
+        setViewFocusable(holder.item_company_tv, focusable);
+        setViewFocusable(holder.item_companyaddr_tv, focusable);
+        if (entity.getType() == 1) {//半天
+            holder.item_half_rb.setChecked(true);
+            holder.item_all_rb.setChecked(false);
+        } else {//全天
+            holder.item_half_rb.setChecked(false);
+            holder.item_all_rb.setChecked(true);
+        }
+        holder.item_all_rb.setEnabled(focusable);
+        holder.item_half_rb.setEnabled(focusable);
+    }
+
+
+    private void setViewFocusable(View view, boolean focusable) {
+        view.setFocusable(focusable);
+        view.setClickable(focusable);
     }
 
     private void initEvent(final BaseViewHolder holder, final int position) {
@@ -112,12 +138,10 @@ public class MissionAdapter extends RecyclerView.Adapter<MissionAdapter.BaseView
         holder.item_reckontime_tv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                if (onitemClickListener != null) {
+                if (onitemClickListener != null)
                     onitemClickListener.click(position, models.get(position), holder.item_reckontime_tv);
-                }
             }
         });
-
         holder.item_remark_tv.addTextChangedListener(new EditChangeListener() {
             @Override
             public void afterTextChanged(Editable editable) {
@@ -126,6 +150,16 @@ public class MissionAdapter extends RecyclerView.Adapter<MissionAdapter.BaseView
                     models.get(position).setRemark(strInput);
             }
         });
+        holder.item_half_rb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+                Log.i("gongpengming", "onCheckedChanged: " + b);
+                if (models.get(position).getStatus() == 1) return;
+                if (b)
+                    models.get(position).setType(1);
+                else models.get(position).setType(2);
+            }
+        });
     }
 
 
@@ -144,10 +178,10 @@ public class MissionAdapter extends RecyclerView.Adapter<MissionAdapter.BaseView
                 item_companyaddr_tv,//公司地址
                 item_location_tv,//创建地点
                 item_time_tv,//创建时间
-        //UPDATE by 2016/12/26
-        item_long_tv,
+                item_long_tv,
                 item_company_tv;//公司名称
         EditText item_remark_tv;
+        RadioButton item_half_rb, item_all_rb;
 
         public BaseViewHolder(View itemView) {
             super(itemView);
@@ -163,6 +197,8 @@ public class MissionAdapter extends RecyclerView.Adapter<MissionAdapter.BaseView
             item_time_tv = (TextView) itemView.findViewById(R.id.item_time_tv);
             item_long_tv = (TextView) itemView.findViewById(R.id.item_long_tv);
             item_remark_tv = (EditText) itemView.findViewById(R.id.item_remark_tv);
+            item_half_rb = (RadioButton) itemView.findViewById(R.id.item_half_rb);
+            item_all_rb = (RadioButton) itemView.findViewById(R.id.item_all_rb);
         }
     }
 

+ 5 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkAdapter.java

@@ -7,6 +7,7 @@ import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.AppConfig;
@@ -197,7 +198,8 @@ public class WorkAdapter extends RecyclerView.Adapter<WorkAdapter.ViewHoler> {
                 off_time,
                 off_signin,
                 work_tag,//上班迟到标识
-                off_tag,//上班迟到标识
+                off_tag;//上班迟到标识
+        ImageView
                 off_supple,
                 work_supple;
 
@@ -209,8 +211,8 @@ public class WorkAdapter extends RecyclerView.Adapter<WorkAdapter.ViewHoler> {
             off_signin = (TextView) itemView.findViewById(R.id.off_signin);
             work_tag = (TextView) itemView.findViewById(R.id.work_tag);
             off_tag = (TextView) itemView.findViewById(R.id.off_tag);
-            off_supple = (TextView) itemView.findViewById(R.id.off_supple);
-            work_supple = (TextView) itemView.findViewById(R.id.work_supple);
+            off_supple = (ImageView) itemView.findViewById(R.id.off_supple);
+            work_supple = (ImageView) itemView.findViewById(R.id.work_supple);
         }
 
     }

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBOpenHelper.java

@@ -13,7 +13,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.Constants;
  */
 public class DBOpenHelper extends SQLiteOpenHelper {
 
-    private static final int DATABASE_VERSION = 66;//数据库版本号(每添加一个表要增加版本号)
+    private static final int DATABASE_VERSION = 67;//数据库版本号(每添加一个表要增加版本号)
     public static String dataBaseName = "erp.db";//数据库名称
     public Context context;
 

+ 11 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/MissionModel.java

@@ -20,6 +20,7 @@ public class MissionModel implements Parcelable {
     private LatLng latLng;//选择地址的经纬度
     private int visitcount;//拜访次数
     private String remark;//备注
+    private int  type;//类型    1.半天   2.一天
     private int status;//状态 0.初始化(可提交)   (不可提交==》)1.已提交  2.签退  3.再签到
 
     //update by 2016/12/19
@@ -44,6 +45,7 @@ public class MissionModel implements Parcelable {
         latLng = in.readParcelable(LatLng.class.getClassLoader());
         visitcount = in.readInt();
         remark = in.readString();
+        type = in.readInt();
         status = in.readInt();
         distance = in.readDouble();
         location = in.readString();
@@ -63,6 +65,7 @@ public class MissionModel implements Parcelable {
         dest.writeParcelable(latLng, flags);
         dest.writeInt(visitcount);
         dest.writeString(remark);
+        dest.writeInt(type);
         dest.writeInt(status);
         dest.writeDouble(distance);
         dest.writeString(location);
@@ -174,6 +177,14 @@ public class MissionModel implements Parcelable {
         this.remark = remark;
     }
 
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int tyep) {
+        this.type = tyep;
+    }
+
     public int getStatus() {
         return status;
     }

+ 12 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MissionPresenter.java

@@ -57,6 +57,7 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
         if (iMission != null) {//初始化
             List<MissionModel> models = new ArrayList<>();
             MissionModel entity = new MissionModel();
+            entity.setType(1);
             entity.setLocation(MyApplication.getInstance().getBdLocationHelper().getName());//当前位置
             entity.setRecorddate(TimeUtils.f_long_2_str(System.currentTimeMillis()));//当前时间
             models.add(entity);
@@ -137,7 +138,7 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
         }
         /***formStore***/
         formStore.put("mp_id", id);//请求的id MOBILE_OUTPLAN_SEQ
-        formStore.put("mp_code", code);//请求的id MOBILE_OUTPLAN_SEQ
+        formStore.put("mp_code", code);//code MOBILE_OUTPLAN_SEQ
         formStore.put("mp_visittime", entity.getVisitTime());
         formStore.put("mp_recorder", name);//用户名
         formStore.put("mp_recordercode", CommonUtil.getSharedPreferences(ct, "erp_username"));//编号
@@ -145,6 +146,7 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
         /***params***/
         params.put("mpd_detno", position + 1);
         params.put("mpd_id", "");
+        params.put("mpd_kind", entity.getType() == 1 ? "半天" : "全天");
         params.put("mpd_remark", entity.getRemark());
         params.put("mpd_distance", BaiduMapUtil.getInstence().getDistance(entity.getLatLng()));
         params.put("mpd_arrivedate", entity.getVisitTime());
@@ -190,7 +192,6 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
         HttpHandler.getInstance().loadERPByNet(SAVE_ADDRESS, "mobile/addOutAddress.action", param, bundle, this);
     }
 
-
     private boolean canSubmit(MissionModel e, int i) {
         if (e == null) return false;
         else if (e.getStatus() != 0) {
@@ -207,7 +208,7 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
             if (iMission != null) iMission.showToast("您的目的地" + i + "预计时间未填", R.color.load_warning);
             return false;
         } else if (StringUtils.isEmpty(e.getRemark())) {
-            if (iMission != null) iMission.showToast("您的目的地" + i + "访目的未填", R.color.load_warning);
+            if (iMission != null) iMission.showToast("您的目的地" + i + "访目的未填", R.color.load_warning);
             return false;
         }
         return true;
@@ -266,7 +267,8 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
                                 Log.i("gongpengming", "saveOk=" + saveOk);
                                 if (saveOk) {
                                     Intent intent = new Intent();
-                                    intent.setAction(AutoErpService.SAVE_MISSION_ACTION);
+                                    intent.setAction(AutoErpService.CHANGE_MISSION_TASK);
+                                    intent.putExtra(AutoErpService.CHANGE_MISSION_TASK, true);
                                     MyApplication.getInstance().sendBroadcast(intent);
                                 }
                             }
@@ -367,7 +369,7 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
                 entity.setDistance(object.getDoubleValue("MPD_DISTANCE"));
                 entity.setLocation(object.getString("MPD_LOCATION"));
                 entity.setRecorddate(object.getString("MPD_RECORDDATE"));
-                Log.i("gongpengming", "entity=" + entity.getRemark());
+                entity.setType(getType(object.getString("MPD_KIND")));
                 entities.add(entity);
             }
             if (!ListUtils.isEmpty(entities))
@@ -376,6 +378,11 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
         }
     }
 
+    private int getType(String str) {
+        if (StringUtils.isEmpty(str)) return 1;
+        return "全天".equals(str) ? 2 : 1;
+    }
+
     private void setModels(final List<MissionModel> models) {
         boolean saveOk = MissionDao.getInstance().updataOrCreate(models);
         if (saveOk)

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

@@ -354,8 +354,10 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
                     if (e.getWorkend().compareTo(timeLog) >= 0) {
                         if (StringUtils.isEmpty(e.getWorkSignin()) || e.getWorkSignin().compareTo(timeLog) >= 0) {
                             models.get(j).setWorkSignin(timeLog);
+                            continue;
                         }
-                    } else if (e.getOffStart().compareTo(timeLog) <= 0) {
+                    }
+                    if (e.getOffStart().compareTo(timeLog) <= 0) {
                         if (StringUtils.isEmpty(e.getOffSignin()) || e.getOffSignin().compareTo(timeLog) <= 0) {
                             models.get(j).setOffSignin(timeLog);
                         }

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

@@ -200,6 +200,7 @@ public class Constants {
             + "realLeaveTime varchar(50),"//实际离开时间yyyy-MM-dd HH:mm:ss
             //update by 2016/12/19
             + "distance Double,"//距离  米
+            + "type integer,"//距离  米
             + "remark varchar(50),"//距离  米
             + "location varchar(50),"//录入位置
             + "recorddate varchar(50)"//录入时间yyyy-MM-dd HH:mm:ss

+ 39 - 29
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpService.java

@@ -14,9 +14,11 @@ import android.util.Log;
 import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.db.dao.ErrorMagDao;
 import com.xzjmyk.pm.activity.db.dao.MissionDao;
 import com.xzjmyk.pm.activity.db.dao.WorkModelDao;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.WorkActivity;
+import com.xzjmyk.pm.activity.ui.erp.entity.ErrorEntity;
 import com.xzjmyk.pm.activity.ui.erp.model.MissionModel;
 import com.xzjmyk.pm.activity.ui.erp.model.WorkModel;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonInterfaceUtil;
@@ -26,6 +28,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.auto.NotificationManage;
 import com.xzjmyk.pm.activity.ui.tool.ThreadUtil;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
+import com.xzjmyk.pm.activity.util.TimeUtils;
 
 import java.util.List;
 
@@ -33,9 +36,6 @@ import java.util.List;
  * 自动Erp服务,开启线程
  */
 public class AutoErpService extends Service {
-    public static final String SAVE_WORK_ACTION = "SAVE_WORK_ACTION";
-    public static final String SAVE_MISSION_ACTION = "SAVE_MISSION_ACTION";
-    public static final String LOAD_MISSION = "LOAD_MISSION";
     public static final String UPDATA_ERP_CHANGE = "com.app.home.update";//更新账套信息
     public static final String CHANGE_WORK_TASK = "CHANGE_WORK_TASK";//自动打卡任务变更
     public static final String CHANGE_MISSION_TASK = "CHANGE_MISSION_TASK";//自动外勤任务变更
@@ -51,18 +51,14 @@ public class AutoErpService extends Service {
     private NotificationManage notificationManage;//通知管理器
 
     private final long MINUTE = 60 * 1000;//一分钟的时间戳
-    private long workInterval = MINUTE;//计算循环的时间
+    private long workInterval = 5 * MINUTE;//计算循环的时间
     private long missionInterval = 2 * MINUTE;//分钟计算一次
-    private final int MISSION_ITER = 5;//外勤时间  2分钟的倍数
+    private final int MISSION_ITER = 10;//外勤时间  2分钟的倍数
     private AutoErpSigninUitl signinUitl;
 
     private final String[] flags = {
-            SAVE_WORK_ACTION,//保存班次数据成功
-            SAVE_MISSION_ACTION, //保存外勤计划数据成功
-            LOAD_MISSION,//下拉外勤数据
-
-            CHANGE_WORK_TASK,//下拉外勤数据
-            CHANGE_MISSION_TASK,//下拉外勤数据
+            CHANGE_WORK_TASK,//
+            CHANGE_MISSION_TASK,//
             INIT_MISSION_TASK,//初始化外勤签到任务
 
             UPDATA_ERP_CHANGE//更换账套
@@ -109,28 +105,20 @@ public class AutoErpService extends Service {
         public void onReceive(Context context, Intent intent) {
             try {
                 if (intent == null || StringUtils.isEmpty(intent.getAction())) return;
-                if (intent.getAction().equals(SAVE_WORK_ACTION)) {
-                    log(SAVE_WORK_ACTION);
-                    if (!isWorkRuning)
-                        startWorkTask();
-                } else if (intent.getAction().equals(SAVE_MISSION_ACTION)) {//1.保存新增外勤计划成功
-                    log(SAVE_MISSION_ACTION);
-                    if (!isMissionRuning) {
-                        canMission = true;
-                        startMissionTask();
-                    }
-                } else if (intent.getAction().equals(LOAD_MISSION)) {
-                    log(LOAD_MISSION);
-                    signinUitl.loadMissionPlan();
-                } else if (intent.getAction().equals(UPDATA_ERP_CHANGE)) {
+                else if (intent.getAction().equals(UPDATA_ERP_CHANGE)) {//账套变更,重新刷新数据,初始化任务
                     log(UPDATA_ERP_CHANGE);
                     init();
-                } else if (intent.getAction().equals(CHANGE_WORK_TASK)) {
+                } else if (intent.getAction().equals(CHANGE_WORK_TASK)) {//自动打卡任务变更
                     log(CHANGE_WORK_TASK);
-                    canWork = intent.getBooleanExtra(CHANGE_WORK_TASK, true);
-                } else if (intent.getAction().equals(CHANGE_MISSION_TASK)) {
+                    canWork = intent.getBooleanExtra(CHANGE_WORK_TASK, true);//获取是否开启任务
+                    if (canWork && !isWorkRuning)
+                        startWorkTask();
+                } else if (intent.getAction().equals(CHANGE_MISSION_TASK)) {//自动外勤任务开启变更
                     log(CHANGE_MISSION_TASK);
                     canMission = intent.getBooleanExtra(CHANGE_MISSION_TASK, true);
+                    if (canMission && !isMissionRuning) {
+                        startMissionTask();
+                    }
                 } else if (intent.getAction().equals(INIT_MISSION_TASK)) {
                     initMission();
                 }
@@ -186,6 +174,7 @@ public class AutoErpService extends Service {
     private void startWorkTask() throws Exception {
         log("startWorkTask");
         isWorkRuning = true;
+        iter = 1;
         ThreadUtil.getInstance().addLoopTask(new Runnable() {
             @Override
             public void run() {
@@ -195,6 +184,14 @@ public class AutoErpService extends Service {
                             isWorkRuning = false;
                             break;
                         }
+                        //百度地图定位
+                        if (!isMissionRuning) {
+                            iter++;
+                            if (iter == 2) {
+                                iter = 1;
+                                MyApplication.getInstance().getBdLocationHelper().requestLocation();
+                            }
+                        }
                         log("startWorkTask run");
                         //是否提醒
                         if (CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(),
@@ -258,11 +255,15 @@ public class AutoErpService extends Service {
                             isMissionRuning = false;
                             break;
                         }
+                        isMissionRuning = true;
                         log("startMissionTask run");
-                        if (iter == MISSION_ITER - 1) {
+                        save("外勤", "startMissionTask run");
+                        int i = MISSION_ITER - 1;
+                        if (iter == i) {
                             MyApplication.getInstance().getBdLocationHelper().requestLocation();
                         }
                         if (iter == 0 || iter == MISSION_ITER) {
+                            save("外勤", "符合进来计算");
                             iter = 1;
                             List<MissionModel> plans = MissionDao.getInstance().queryByEnCode();
                             log("自动外勤 plans==" + (ListUtils.isEmpty(plans) ? 0 : plans.size()));
@@ -273,6 +274,7 @@ public class AutoErpService extends Service {
                                 MissionModel mission = getReckonAutoUtil().reckonMission(plans);
                                 if (mission != null) {//TODO 符合外勤签到
                                     log("符合外勤签到");
+                                    save("外勤", "符合外勤签到");
                                     Message message = handler.obtainMessage();
                                     message.what = STATUS_MISSION;
                                     Bundle bundle = new Bundle();
@@ -296,6 +298,14 @@ public class AutoErpService extends Service {
         });
     }
 
+    private void save(String title, String message) throws Exception {
+        ErrorEntity bean = new ErrorEntity();
+        bean.setTime(TimeUtils.f_long_2_str(System.currentTimeMillis()));
+        bean.setTitle(title);
+        bean.setMsg(message);
+        ErrorMagDao.getInstance().insert(bean);
+    }
+
     /**
      * 初始化数据库,1.清空昨天数据  2.缓存当天数据
      */

+ 56 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpSigninUitl.java

@@ -54,6 +54,7 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
     private final int LOAD_WORKLOG = 0x13;//打卡列表
     private final int SIGNIN_MISSION = 0x14;//外勤签到
     private final int HAVE_OUT_PLAN = 0x15;//还有未拜访外勤计划
+    private final int END_MISSION = 0x19;//还有未拜访外勤计划
 
     private final int WORK_DATA = 0x16;//内勤列表
     private final int WORK_LOG = 0x17;//下拉列表时候的获取打卡列表
@@ -115,7 +116,7 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
     private void endMission(MissionModel model) {
         Map<String, Object> param = new HashMap<>();
         param.put("id", model.getId());
-        HttpHandler.getInstance().loadERPByNet(SIGNIN_MISSION,
+        HttpHandler.getInstance().loadERPByNet(END_MISSION,
                 "mobile/mobileplanUpdate.action", param, null, this);
     }
 
@@ -305,6 +306,11 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
                                     notificationManage.sendNotification(MyApplication.getInstance(),
                                             "对" + model.getCompanyName() + "外勤签退成功", MissionActivity.class);
                             } else {//没有外勤计划
+                                //TODO 没有外勤计划  关闭自动外勤循环
+                                Intent intent = new Intent();
+                                intent.setAction(AutoErpService.CHANGE_MISSION_TASK);
+                                intent.putExtra(AutoErpService.CHANGE_MISSION_TASK, false);
+                                MyApplication.getInstance().sendBroadcast(intent);
                                 endMission(model, saveOk);
                             }
                         }
@@ -378,6 +384,9 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
             mission.setRealTime(TimeUtils.f_long_2_str(System.currentTimeMillis()));
             if (mission.getStatus() < 1) {
                 mission.setStatus(1);//说明没有打过卡  TODO 可以通过判断签到时间是否存在来判断是否提示签到
+                if (StringUtils.isEmpty(mission.getRealTime()))
+                    mission.setRealTime(TimeUtils.f_long_2_str(System.currentTimeMillis()));
+                else mission.setRealTime(TimeUtils.f_long_2_str(System.currentTimeMillis()));
                 boolean saveOk = MissionDao.getInstance().updata(mission);
                 if (saveOk)
                     notificationManage.sendNotification(MyApplication.getInstance(), "外勤签到成功",
@@ -474,6 +483,7 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
         String time = object.getString("cl_time");//获取最后一次打卡信息,班次打卡信息
         time = TimeUtils.clearDay(time);//获取到的
         if (StringUtils.isEmpty(time) || model == null) return;
+
         if (StringUtils.isEmpty(model.getWorkSignin()) && model.getWorkStart().compareTo(time) <= 0
                 && model.getWorkTime().compareTo(time) >= 0) {
             model.setWorkSignin(time);
@@ -481,6 +491,14 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
             log("i=" + i);
             notificationManage.sendNotification(MyApplication.getInstance(),
                     R.string.auto_signin, WorkActivity.class);
+            boolean b = hasMore();
+            if (!b) {
+                //TODO 关闭任务
+                Intent intent = new Intent();
+                intent.setAction(AutoErpService.CHANGE_WORK_TASK);
+                intent.putExtra(AutoErpService.CHANGE_WORK_TASK, false);
+                MyApplication.getInstance().sendBroadcast(intent);
+            }
         } else if (StringUtils.isEmpty(model.getOffSignin()) && model.getOffTime().compareTo(time) <= 0
                 && model.getOffend().compareTo(time) >= 0) {
             model.setOffSignin(time);
@@ -488,7 +506,26 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
             log("i=" + i);
             notificationManage.sendNotification(MyApplication.getInstance(),
                     R.string.auto_signin, WorkActivity.class);
+            boolean b = hasMore();
+            if (!b) {
+                //TODO 关闭任务
+                Intent intent = new Intent();
+                intent.setAction(AutoErpService.CHANGE_WORK_TASK);
+                intent.putExtra(AutoErpService.CHANGE_WORK_TASK, false);
+            }
+        }
+    }
+
+    private boolean hasMore() {
+        List<WorkModel> models = WorkModelDao.getInstance().query(false);
+        if (ListUtils.isEmpty(models)) return false;
+        else {
+            for (WorkModel m : models) {
+                if (StringUtils.isEmpty(m.getWorkSignin()) || StringUtils.isEmpty(m.getOffSignin()))
+                    return true;
+            }
         }
+        return false;
     }
 
     private void log(String message) {
@@ -646,7 +683,8 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
             boolean saveOK = WorkModelDao.getInstance().createOrUpdata(models);
             if (saveOK) {
                 Intent intent = new Intent();
-                intent.setAction(AutoErpService.SAVE_WORK_ACTION);
+                intent.putExtra(AutoErpService.CHANGE_WORK_TASK, true);
+                intent.setAction(AutoErpService.CHANGE_WORK_TASK);//保存到数据库成功,开启
                 MyApplication.getInstance().sendBroadcast(intent);
             }
         }
@@ -659,7 +697,14 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
      */
     private void handlerData(JSONArray array) throws Exception {
         if (ListUtils.isEmpty(array)) {
-            return; //获取到拜访计划数据
+            List<MissionModel> models = MissionDao.getInstance().queryByEnCode();
+            if (!ListUtils.isEmpty(models)) {
+                Intent intent = new Intent();
+                intent.putExtra(AutoErpService.CHANGE_MISSION_TASK, true);
+                intent.setAction(AutoErpService.CHANGE_MISSION_TASK);
+                MyApplication.getInstance().sendBroadcast(intent);
+            }
+            return;
         } else {
             JSONObject object = null;
             MissionModel entity = null;
@@ -694,6 +739,7 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
                 entity.setLocation(object.getString("MPD_LOCATION"));
                 entity.setRemark(object.getString("MPD_REMARK"));
                 entity.setRecorddate(object.getString("MPD_RECORDDATE"));
+                entity.setType(getType(object.getString("MPD_KIND")));
                 entities.add(entity);
             }
             if (!ListUtils.isEmpty(entities)) {
@@ -704,7 +750,8 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
                         boolean saveOk = MissionDao.getInstance().updataOrCreate(entities);
                         if (saveOk) {
                             Intent intent = new Intent();
-                            intent.setAction(AutoErpService.SAVE_MISSION_ACTION);
+                            intent.putExtra(AutoErpService.CHANGE_MISSION_TASK, true);
+                            intent.setAction(AutoErpService.CHANGE_MISSION_TASK);
                             MyApplication.getInstance().sendBroadcast(intent);
                         }
                     }
@@ -713,6 +760,11 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
         }
     }
 
+    private int getType(String str) {
+        if (StringUtils.isEmpty(str)) return 1;
+        return "一天".equals(str) ? 2 : 1;
+    }
+
     /**
      * 获取截至时间
      *

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


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


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


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


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


+ 6 - 0
WeiChat/src/main/res/drawable/item_all_rb_d.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/item_all_rb" android:state_checked="false" />
+    <item android:drawable="@drawable/item_all_rb_pass" android:state_checked="true" />
+    <item android:drawable="@drawable/item_all_rb" />
+</selector>

+ 6 - 0
WeiChat/src/main/res/drawable/item_half_rb_d.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/item_half_rb" android:state_checked="false" />
+    <item android:drawable="@drawable/item_half_rb_pass" android:state_checked="true" />
+    <item android:drawable="@drawable/item_half_rb" />
+</selector>

+ 4 - 6
WeiChat/src/main/res/layout/activity_oamain.xml

@@ -115,7 +115,6 @@
                         android:text="我的行程"
                         android:textColor="@color/white" />-->
 
-                   
 
                     <TextView
                         android:id="@+id/meeting"
@@ -163,8 +162,7 @@
                         android:drawableTop="@drawable/oa_jiaban"
                         android:gravity="center"
                         android:text="加班申请"
-                        android:textColor="@color/white"
-                        />
+                        android:textColor="@color/white" />
 
                 </LinearLayout>
 
@@ -273,7 +271,7 @@
                     android:layout_width="match_parent"
                     android:layout_height="2px"
                     android:background="@color/item_line"
-                    android:visibility="gone"/>
+                    android:visibility="gone" />
 
                 <android.support.v4.view.ViewPager
                     android:id="@+id/viewPager"
@@ -371,7 +369,6 @@
                     android:orientation="horizontal"
                     android:paddingBottom="10dp">
 
-                  
 
                     <TextView
                         android:id="@+id/oamain_special_attendance_tv"
@@ -392,6 +389,7 @@
                         android:layout_weight="1"
                         android:gravity="center"
                         android:textColor="@color/white" />
+
                     <TextView
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
@@ -408,7 +406,7 @@
                         android:gravity="center"
                         android:textColor="@color/white" />
 
-              
+
                 </LinearLayout>
 
                 <LinearLayout

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

@@ -52,5 +52,6 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_above="@id/bottom"
-        android:layout_below="@id/ll" />
+        android:layout_below="@id/ll"
+        android:divider="@color/item_line" />
 </RelativeLayout>

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

@@ -494,7 +494,8 @@
             style="@style/IMTbleLine_UP_Me"
             android:layout_marginTop="7dp"
             android:background="@drawable/selector_me_menu_item_bg"
-            >
+            android:visibility="gone">
+
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"

+ 70 - 5
WeiChat/src/main/res/layout/item_mission.xml

@@ -129,10 +129,11 @@
             android:drawableRight="@drawable/company"
             android:ellipsize="end"
             android:gravity="center|right"
-            android:hint="选择"
+            android:hint="@string/select_must"
             android:maxLines="2"
             android:textColor="@color/text_hine"
-            android:textSize="@dimen/text_hine" />
+            android:textSize="@dimen/text_hine"
+            android:layout_alignParentBottom="true" />
     </RelativeLayout>
 
     <View
@@ -163,12 +164,14 @@
             android:id="@+id/item_companyaddr_tv"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
+            android:layout_alignParentEnd="true"
             android:layout_alignParentRight="true"
+            android:layout_alignParentTop="true"
             android:layout_toRightOf="@id/item_companyaddr_tag"
             android:drawableRight="@drawable/addr_bule"
             android:ellipsize="end"
             android:gravity="center|right"
-            android:hint="选择"
+            android:hint="@string/select_must"
             android:lines="1"
             android:textColor="@color/text_hine"
             android:textSize="@dimen/text_hine" />
@@ -191,7 +194,7 @@
             android:layout_height="match_parent"
             android:layout_marginRight="20dp"
             android:gravity="center"
-            android:text="访目的"
+            android:text="访目的"
             android:textColor="@color/text_main"
             android:textSize="@dimen/text_main" />
 
@@ -203,11 +206,73 @@
             android:layout_toRightOf="@+id/remark_tag"
             android:background="@null"
             android:gravity="center|right"
+            android:hint="@string/input_must"
             android:maxLines="3"
             android:textColor="@color/text_hine"
             android:textSize="@dimen/text_hine" />
     </RelativeLayout>
 
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:background="@color/item_line" />
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/misson_item_height"
+        android:paddingLeft="@dimen/misson_item_pl"
+        android:paddingRight="@dimen/misson_item_pr">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:text="时段"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <RadioGroup
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_alignParentRight="true"
+            android:gravity="right"
+            android:orientation="horizontal">
+
+            <RadioButton
+                android:id="@+id/item_half_rb"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:button="@null"
+                android:checked="true"
+                android:drawableRight="@drawable/item_half_rb_d"
+                android:textColor="@color/text_hine"
+                android:textSize="@dimen/text_hine" />
+
+            <RadioButton
+                android:id="@+id/item_all_rb"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:button="@null"
+                android:checked="false"
+                android:drawableLeft="@drawable/item_all_rb_d"
+                android:textColor="@color/text_hine"
+                android:textSize="@dimen/text_hine" />
+        </RadioGroup>
+
+
+        <!--<TextView-->
+        <!--android:id="@+id/item_type_tv"-->
+        <!--android:layout_width="wrap_content"-->
+        <!--android:layout_height="match_parent"-->
+        <!--android:layout_alignParentRight="true"-->
+        <!--android:drawableRight="@drawable/oa_next"-->
+        <!--android:gravity="center"-->
+        <!--android:hint="选择"-->
+        <!--android:text="半天"-->
+        <!--android:textColor="@color/text_main"-->
+        <!--android:textSize="@dimen/text_main" />-->
+    </RelativeLayout>
+
     <View
         android:layout_width="match_parent"
         android:layout_height="2px"
@@ -296,7 +361,7 @@
             android:layout_alignParentRight="true"
             android:drawableRight="@drawable/oa_next"
             android:gravity="center"
-            android:hint="选择"
+            android:hint="@string/select_must"
             android:textColor="@color/text_main"
             android:textSize="@dimen/text_main" />
     </RelativeLayout>

+ 19 - 22
WeiChat/src/main/res/layout/item_works.xml

@@ -70,23 +70,22 @@
         android:background="@drawable/oa_no_criterion"
         android:paddingLeft="5dp"
         android:paddingRight="5dp"
-        android:visibility="gone"
         android:textColor="@color/white"
-        android:textSize="@dimen/text_hine" />
-    <TextView
+        android:textSize="@dimen/text_hine"
+        android:visibility="gone" />
+
+    <ImageView
         android:id="@+id/work_supple"
-        android:layout_alignTop="@id/work_tag"
-        android:layout_toRightOf="@id/work_tag"
-        android:visibility="gone"
-        android:layout_marginLeft="10dp"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:background="@drawable/signin_criterion"
+        android:layout_alignTop="@id/work_tag"
+        android:layout_marginLeft="10dp"
+        android:layout_toRightOf="@id/work_tag"
         android:paddingLeft="5dp"
         android:paddingRight="5dp"
-        android:text="申请补卡>"
-        android:textColor="@color/white"
-        android:textSize="@dimen/text_hine" />
+        android:src="@drawable/btn_shensu"
+        android:textSize="@dimen/text_hine"
+        android:visibility="gone" />
 
     <View
         android:id="@+id/point2"
@@ -149,22 +148,20 @@
         android:background="@drawable/oa_no_criterion"
         android:paddingLeft="5dp"
         android:paddingRight="5dp"
-        android:visibility="gone"
         android:textColor="@color/white"
-        android:textSize="@dimen/text_hine" />
+        android:textSize="@dimen/text_hine"
+        android:visibility="gone" />
 
-    <TextView
+    <ImageView
         android:id="@+id/off_supple"
-        android:layout_alignTop="@id/off_tag"
-        android:layout_toRightOf="@id/off_tag"
-        android:visibility="gone"
-        android:layout_marginLeft="10dp"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:background="@drawable/signin_criterion"
+        android:layout_alignTop="@id/off_tag"
+        android:layout_marginLeft="10dp"
+        android:layout_toRightOf="@id/off_tag"
         android:paddingLeft="5dp"
         android:paddingRight="5dp"
-        android:text="申请补卡>"
-        android:textColor="@color/white"
-        android:textSize="@dimen/text_hine" />
+        android:src="@drawable/btn_shensu"
+        android:textSize="@dimen/text_hine"
+        android:visibility="gone" />
 </RelativeLayout>

+ 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="select_must">选择(必填)</string>
+    <string name="input_must">输入(必填)</string>
     <string name="out_net_signin">网络未连接,无法自动为您签到</string>
     <string name="too_long_signin">当前位置距离考勤地点太远或没有获取到办公地址,打卡失败</string>
     <string name="add_company_name">请选择或输入公司名称</string>