Bitliker %!s(int64=9) %!d(string=hai) anos
pai
achega
fbdab38e6b
Modificáronse 89 ficheiros con 1873 adicións e 378 borrados
  1. 2 2
      MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/PieRadarChartBase.java
  2. 1 1
      MPAndroidChart/src/main/java/com/github/mikephil/charting/data/CandleDataSet.java
  3. 1 1
      MPAndroidChart/src/main/java/com/github/mikephil/charting/matrix/Vector3.java
  4. 1 1
      MPAndroidChart/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.java
  5. 1 1
      MPAndroidChart/src/main/java/com/github/mikephil/charting/renderer/RadarChartRenderer.java
  6. 1 0
      WeiChat/build.gradle
  7. BIN=BIN
      WeiChat/libs/zhy_treeview.jar
  8. 5 2
      WeiChat/src/main/AndroidManifest.xml
  9. 1 1
      WeiChat/src/main/java/com/ipaulpro/afilechooser/FileChooserActivity.java
  10. 1 1
      WeiChat/src/main/java/com/ipaulpro/afilechooser/FileListAdapter.java
  11. 1 1
      WeiChat/src/main/java/com/ipaulpro/afilechooser/FileLoader.java
  12. 1 1
      WeiChat/src/main/java/com/ipaulpro/afilechooser/LocalStorageProvider.java
  13. 141 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OfficeAddressBean.java
  14. 18 16
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportAddActivity.java
  15. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/DataFormDetailActivity.java
  16. 63 47
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddFlihtsActivity.java
  17. 55 10
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/FlightsActivity.java
  18. 30 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/FlihtsTimeActivity.java
  19. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/LocationSearchActivity.java
  20. 15 15
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionActivity.java
  21. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  22. 39 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SearchLocationActivity.java
  23. 26 12
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectActiveActivity.java
  24. 11 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectAimActivity.java
  25. 81 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectDepartmentActivity.java
  26. 11 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/StatisticsActivity.java
  27. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkActivity.java
  28. 73 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkDailyAddActivity.java
  29. 34 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkDailyShowActivity.java
  30. 110 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SearchLocationAdapter.java
  31. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SelectActiveAdapter.java
  32. 57 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SimpleTreeAdapter.java
  33. 72 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/IconTreeItemHolder.java
  34. 28 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/SelectableHeaderHolder.java
  35. 117 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/AttendanceFragment.java
  36. 35 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/ContactFragment.java
  37. 16 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/FlightsModel.java
  38. 30 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/HrorgsModel.java
  39. 20 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/FlightsPresernter.java
  40. 43 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SearchPresenter.java
  41. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IFlightsView.java
  42. 14 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/ISearchView.java
  43. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java
  44. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/ReckonAutoUtil.java
  45. 8 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/CalendarFragmet.java
  46. 3 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/CalenderView.java
  47. 32 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/MyCalendarView.java
  48. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  49. 134 46
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/OfficeAddressSettingsActivity.java
  50. 3 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SignSeniorSettingActivity.java
  51. 21 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SpeechrecognitionActivity.java
  52. 35 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  53. 16 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/BaiduMapUtil.java
  54. 3 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/wheel/DatePicker.java
  55. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/wheel/TimePicker.java
  56. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/basepedo/ui/MyPedometerActivity.java
  57. BIN=BIN
      WeiChat/src/main/res/drawable-hdpi/btn_yuyin_nor.png
  58. BIN=BIN
      WeiChat/src/main/res/drawable-hdpi/btn_yuyin_pressed.png
  59. BIN=BIN
      WeiChat/src/main/res/drawable-xhdpi/btn_yuyin_nor.png
  60. BIN=BIN
      WeiChat/src/main/res/drawable-xhdpi/btn_yuyin_pressed.png
  61. BIN=BIN
      WeiChat/src/main/res/drawable-xxhdpi/btn_yuyin_nor.png
  62. BIN=BIN
      WeiChat/src/main/res/drawable-xxhdpi/btn_yuyin_pressed.png
  63. 2 1
      WeiChat/src/main/res/layout/activity_add_flihts.xml
  64. 38 2
      WeiChat/src/main/res/layout/activity_add_work_daily.xml
  65. 99 77
      WeiChat/src/main/res/layout/activity_flights_date.xml
  66. 5 10
      WeiChat/src/main/res/layout/activity_flihts_time.xml
  67. 2 4
      WeiChat/src/main/res/layout/activity_location_search.xml
  68. 1 1
      WeiChat/src/main/res/layout/activity_oamain.xml
  69. 0 1
      WeiChat/src/main/res/layout/activity_pedometer.xml
  70. 95 0
      WeiChat/src/main/res/layout/activity_search_location.xml
  71. 17 0
      WeiChat/src/main/res/layout/activity_select_department.xml
  72. 3 3
      WeiChat/src/main/res/layout/activity_statistics.xml
  73. 11 0
      WeiChat/src/main/res/layout/activity_work_daily.xml
  74. 3 2
      WeiChat/src/main/res/layout/empty_locayion.xml
  75. 30 5
      WeiChat/src/main/res/layout/fragment_attendance.xml
  76. 11 0
      WeiChat/src/main/res/layout/fragment_calendar.xml
  77. 1 1
      WeiChat/src/main/res/layout/fragment_me.xml
  78. 12 0
      WeiChat/src/main/res/layout/fragment_message.xml
  79. 12 0
      WeiChat/src/main/res/layout/header_fragment_contact.xml
  80. 2 2
      WeiChat/src/main/res/layout/include_select.xml
  81. 62 0
      WeiChat/src/main/res/layout/item_attendance.xml
  82. 6 8
      WeiChat/src/main/res/layout/item_flight_time.xml
  83. 0 2
      WeiChat/src/main/res/layout/item_select_active.xml
  84. 25 0
      WeiChat/src/main/res/layout/list_item.xml
  85. 2 10
      WeiChat/src/main/res/values/strings.xml
  86. 3 3
      libedittextformlibrary/src/main/java/com/andreabaccega/formedittextvalidator/DomainValidator.java
  87. 3 3
      libedittextformlibrary/src/main/java/com/andreabaccega/formedittextvalidator/WebUrlValidator.java
  88. 0 1
      library-swipemenu_lv/src/main/java/com/baoyz/swipemenulistview/SwipeMenuLayout.java
  89. 1 1
      pullToRefershLibraryMy/src/main/java/com/handmark/pulltorefresh/library/PullToRefreshBase.java

+ 2 - 2
MPAndroidChart/src/main/java/com/github/mikephil/charting/charts/PieRadarChartBase.java

@@ -400,13 +400,13 @@ public abstract class PieRadarChartBase<T extends ChartData<? extends DataSet<?
 
     @Override
     public float getYChartMax() {
-        // TODO Auto-generated method stub
+        // Auto-generated method stub
         return 0;
     }
 
     @Override
     public float getYChartMin() {
-        // TODO Auto-generated method stub
+        // Auto-generated method stub
         return 0;
     }
 

+ 1 - 1
MPAndroidChart/src/main/java/com/github/mikephil/charting/data/CandleDataSet.java

@@ -134,7 +134,7 @@ public class CandleDataSet extends BarLineScatterCandleDataSet<CandleEntry> {
         return mShadowWidth;
     }
 
-    // TODO
+    //
     /**
      * It is necessary to implement ColorsList class that will encapsulate
      * colors list functionality, because It's wrong to copy paste setColor,

+ 1 - 1
MPAndroidChart/src/main/java/com/github/mikephil/charting/matrix/Vector3.java

@@ -115,7 +115,7 @@ public final class Vector3 {
     public final float normalize() {
         final float magnitude = length();
 
-        // TODO: I'm choosing safety over speed here.
+        //  I'm choosing safety over speed here.
         if (magnitude != 0.0f) {
             x /= magnitude;
             y /= magnitude;

+ 1 - 1
MPAndroidChart/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.java

@@ -80,7 +80,7 @@ public class PieChartRenderer extends DataRenderer {
 
     @Override
     public void initBuffers() {
-        // TODO Auto-generated method stub
+        //  Auto-generated method stub
 
     }
 

+ 1 - 1
MPAndroidChart/src/main/java/com/github/mikephil/charting/renderer/RadarChartRenderer.java

@@ -45,7 +45,7 @@ public class RadarChartRenderer extends DataRenderer {
 
     @Override
     public void initBuffers() {
-        // TODO Auto-generated method stub
+        //Auto-generated method stub
         
     }
     

+ 1 - 0
WeiChat/build.gradle

@@ -134,4 +134,5 @@ dependencies {
     androidTestCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
     debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
     releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
+    compile files('libs/zhy_treeview.jar')
 }

BIN=BIN
WeiChat/libs/zhy_treeview.jar


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

@@ -109,6 +109,7 @@
     <uses-feature android:name="android.hardware.sensor.accelerometer" />
 
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+
     <!-- 自动聚焦权限 -->
     <!-- 全局样式不要随意改动  @style/AppTheme -->
     <application
@@ -830,7 +831,7 @@
             android:label="高级设置" />
         <activity
             android:name=".ui.erp.activity.form.SelectCalendarActivity"
-            android:label="@string/title_activity_select_calendar"></activity>
+            android:label="@string/title_activity_select_calendar" />
         <activity android:name=".ui.erp.activity.oa.AddFlihtsActivity" />
         <activity
             android:name=".ui.erp.activity.oa.FlihtsTimeActivity"
@@ -856,7 +857,9 @@
         <activity
             android:name=".ui.erp.activity.oa.SignStatisticalActivity"
             android:label="考勤统计" />
-        <activity android:name=".ui.erp.fragment.AttendancesFragment"></activity>
+        <activity android:name=".ui.erp.fragment.AttendancesFragment" />
+        <activity android:name=".ui.erp.activity.oa.SearchLocationActivity" />
+        <activity android:name=".ui.erp.activity.oa.SelectDepartmentActivity"></activity>
     </application>
 
 </manifest>

+ 1 - 1
WeiChat/src/main/java/com/ipaulpro/afilechooser/FileChooserActivity.java

@@ -43,7 +43,7 @@ import java.io.File;
  * @包名: com.ipaulpro.afilechooser
  * @作者:王阳
  * @创建时间: 2015年10月12日 上午9:25:39
- * @描述: TODO
+ * @描述:
  * @SVN版本号: $Rev: 2143 $
  * @修改人: $Author: luorc $
  * @修改时间: $Date: 2015-10-23 09:31:46 +0800 (Fri, 23 Oct 2015) $

+ 1 - 1
WeiChat/src/main/java/com/ipaulpro/afilechooser/FileListAdapter.java

@@ -35,7 +35,7 @@ import java.util.List;
  * @包名: com.ipaulpro.afilechooser
  * @作者:王阳
  * @创建时间: 2015年10月12日 上午9:26:33
- * @描述: TODO
+ * @描述:
  * @SVN版本号: $Rev: 2143 $
  * @修改人: $Author: luorc $
  * @修改时间: $Date: 2015-10-23 09:31:46 +0800 (Fri, 23 Oct 2015) $

+ 1 - 1
WeiChat/src/main/java/com/ipaulpro/afilechooser/FileLoader.java

@@ -31,7 +31,7 @@ import java.util.List;
  * @包名: com.ipaulpro.afilechooser
  * @作者:王阳
  * @创建时间: 2015年10月12日 上午9:27:12
- * @描述: TODO
+ * @描述:
  * @SVN版本号: $Rev: 2143 $
  * @修改人: $Author: luorc $
  * @修改时间: $Date: 2015-10-23 09:31:46 +0800 (Fri, 23 Oct 2015) $

+ 1 - 1
WeiChat/src/main/java/com/ipaulpro/afilechooser/LocalStorageProvider.java

@@ -31,7 +31,7 @@ import java.io.IOException;
  * @包名: com.ianhanniballake.localstorage
  * @作者:王阳
  * @创建时间: 2015年10月12日 上午9:24:21
- * @描述: TODO
+ * @描述:
  * @SVN版本号: $Rev: 2143 $
  * @修改人: $Author: luorc $
  * @修改时间: $Date: 2015-10-23 09:31:46 +0800 (Fri, 23 Oct 2015) $

+ 141 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OfficeAddressBean.java

@@ -0,0 +1,141 @@
+package com.xzjmyk.pm.activity.bean.oa;
+
+import java.util.List;
+
+/**
+ * Created by FANGlh on 2017/1/21.
+ * function:
+ */
+public class OfficeAddressBean {
+
+    /**
+     * sessionId : 43EB69A8CBC6B932F82BE09F8AB98B73
+     * success : true
+     * listdata : [{"CS_WORKADDR":"广东省深圳市南山科技园科技南五路英唐大厦","CS_VALIDRANGE":"100","CS_ID":9619,"CS_LATITUDE":"22.54068486390692","CS_LONGITUDE":"113.9531350940523","CS_SHORTNAME":"深圳市润唐智能生活电器有限公司","CS_CODE":"2017010065","CS_INNERDISTANCE":500,"success":true},{"CS_WORKADDR":"深圳市南山区科技南五路5","CS_VALIDRANGE":"100","CS_ID":9620,"CS_LATITUDE":"22.54069320895665","CS_LONGITUDE":"113.9531261109972","CS_SHORTNAME":"英唐智控","CS_CODE":"2017010066","CS_INNERDISTANCE":500,"success":true},{"CS_WORKADDR":"深圳市南山区科技园科技中一路","CS_VALIDRANGE":"100","CS_ID":9618,"CS_LATITUDE":"22.546000557212412","CS_LONGITUDE":"113.94107983411239","CS_SHORTNAME":"腾讯大厦","CS_CODE":"2017010064","CS_INNERDISTANCE":500,"success":true},{"CS_WORKADDR":"英唐大厦","CS_VALIDRANGE":"100","CS_ID":9594,"CS_LATITUDE":"113.9529997697171","CS_LONGITUDE":"22.540450740157528","CS_SHORTNAME":"优软科技","CS_CODE":"2017010041","CS_INNERDISTANCE":0,"success":true}]
+     */
+
+    private String sessionId;
+    private boolean success;
+    private List<ListdataBean> listdata;
+
+    public String getSessionId() {
+        return sessionId;
+    }
+
+    public void setSessionId(String sessionId) {
+        this.sessionId = sessionId;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public List<ListdataBean> getListdata() {
+        return listdata;
+    }
+
+    public void setListdata(List<ListdataBean> listdata) {
+        this.listdata = listdata;
+    }
+
+    public static class ListdataBean {
+        /**
+         * CS_WORKADDR : 广东省深圳市南山科技园科技南五路英唐大厦
+         * CS_VALIDRANGE : 100
+         * CS_ID : 9619
+         * CS_LATITUDE : 22.54068486390692
+         * CS_LONGITUDE : 113.9531350940523
+         * CS_SHORTNAME : 深圳市润唐智能生活电器有限公司
+         * CS_CODE : 2017010065
+         * CS_INNERDISTANCE : 500
+         * success : true
+         */
+
+        private String CS_WORKADDR;
+        private String CS_VALIDRANGE;
+        private int CS_ID;
+        private String CS_LATITUDE;
+        private String CS_LONGITUDE;
+        private String CS_SHORTNAME;
+        private String CS_CODE;
+        private int CS_INNERDISTANCE;
+        private boolean success;
+
+        public String getCS_WORKADDR() {
+            return CS_WORKADDR;
+        }
+
+        public void setCS_WORKADDR(String CS_WORKADDR) {
+            this.CS_WORKADDR = CS_WORKADDR;
+        }
+
+        public String getCS_VALIDRANGE() {
+            return CS_VALIDRANGE;
+        }
+
+        public void setCS_VALIDRANGE(String CS_VALIDRANGE) {
+            this.CS_VALIDRANGE = CS_VALIDRANGE;
+        }
+
+        public int getCS_ID() {
+            return CS_ID;
+        }
+
+        public void setCS_ID(int CS_ID) {
+            this.CS_ID = CS_ID;
+        }
+
+        public String getCS_LATITUDE() {
+            return CS_LATITUDE;
+        }
+
+        public void setCS_LATITUDE(String CS_LATITUDE) {
+            this.CS_LATITUDE = CS_LATITUDE;
+        }
+
+        public String getCS_LONGITUDE() {
+            return CS_LONGITUDE;
+        }
+
+        public void setCS_LONGITUDE(String CS_LONGITUDE) {
+            this.CS_LONGITUDE = CS_LONGITUDE;
+        }
+
+        public String getCS_SHORTNAME() {
+            return CS_SHORTNAME;
+        }
+
+        public void setCS_SHORTNAME(String CS_SHORTNAME) {
+            this.CS_SHORTNAME = CS_SHORTNAME;
+        }
+
+        public String getCS_CODE() {
+            return CS_CODE;
+        }
+
+        public void setCS_CODE(String CS_CODE) {
+            this.CS_CODE = CS_CODE;
+        }
+
+        public int getCS_INNERDISTANCE() {
+            return CS_INNERDISTANCE;
+        }
+
+        public void setCS_INNERDISTANCE(int CS_INNERDISTANCE) {
+            this.CS_INNERDISTANCE = CS_INNERDISTANCE;
+        }
+
+        public boolean isSuccess() {
+            return success;
+        }
+
+        public void setSuccess(boolean success) {
+            this.success = success;
+        }
+    }
+}
+

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

@@ -456,7 +456,7 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
 //                intent.putExtra("title", "客户列表");
 //                startActivityForResult(intent, 0x22);
                 intent = new Intent(ct, SelectAimActivity.class);
-                intent.putExtra("type",1);
+                intent.putExtra("type", 1);
                 startActivityForResult(intent, 0x22);
                 //SelectAimActivity
                 break;
@@ -496,16 +496,16 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                 intent = new Intent(ct, SelectActivity.class);
                 intent.putExtra("type", 2);
                 intent.putExtra("reid", R.style.OAThemeMeet);
-                List<SelectBean> beanList=new ArrayList<>();
+                List<SelectBean> beanList = new ArrayList<>();
 
                 //华东地区,华南地区,华北地区,华中地区,西南地区,西北地区,东北地区,港澳台地区,海外地区,其它地区
-                SelectBean ben=new SelectBean();
+                SelectBean ben = new SelectBean();
                 ben.setName("客户拜访");
                 ben.setObject("OfficeClerk");
                 ben.setJson("OfficeClerk");
                 beanList.add(ben);
 
-                ben=new SelectBean();
+                ben = new SelectBean();
                 ben.setName("原厂拜访");
                 ben.setObject("VisitRecord!Vender");
                 ben.setJson("VisitRecord!Vender");
@@ -514,12 +514,14 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                 intent.putParcelableArrayListExtra("data", (ArrayList<? extends Parcelable>) beanList);
                 startActivityForResult(intent, 0x27);
                 break;
-            case  R.id.tv_visit_theme:
+            case R.id.tv_visit_theme:
+                if (getIntent().getIntExtra("type", -1) == 3 && !TextUtils.isEmpty(tv_visit_theme.getText()))
+                    return;
                 param = new HashMap<>();
                 param.put("field", "vr_nichestep");
                 param.put("caller", "VisitRecord");
 
-                HashMap<String,Object> param1=new HashMap<>();
+                HashMap<String, Object> param1 = new HashMap<>();
 
                 param1.put("field", "vr_type");
                 param1.put("caller", "VisitRecord");
@@ -545,13 +547,13 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        LogUtil.d("onActivityResult:"+requestCode+requestCode);
+        LogUtil.d("onActivityResult:" + requestCode + requestCode);
         if (data == null) return;
         if (requestCode == 0x22 && resultCode == 0x20) {
-            SelectAimModel model=data.getParcelableExtra("data");
+            SelectAimModel model = data.getParcelableExtra("data");
             LogUtil.d(JSON.toJSONString(model));
-            String address=model.getAddress();
-            String name=model.getName();
+            String address = model.getAddress();
+            String name = model.getName();
             tv_customer_login.setText(name);
             tv_address_login.setText(address);
 //            SelectBean b = data.getParcelableExtra("data");
@@ -588,21 +590,21 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                 JSONObject object = JSON.parseObject(b.getJson());
                 nichecode = object.getString("code");
             }
-        }else if(requestCode == 0x27 && resultCode == 0x20){
+        } else if (requestCode == 0x27 && resultCode == 0x20) {
             SelectBean b = data.getParcelableExtra("data");
-            LogUtil.d("b:"+JSON.toJSONString(b));
+            LogUtil.d("b:" + JSON.toJSONString(b));
             if (b == null || StringUtils.isEmpty(b.getJson())) return;
             tv_visit_type.setText(b.getName());
             tv_visit_type.setHint(b.getJson());
-        }else if(requestCode==0x28&&resultCode==0x20){
+        } else if (requestCode == 0x28 && resultCode == 0x20) {
             SelectBean b = data.getParcelableExtra("data");
-            LogUtil.d("b:"+JSON.toJSONString(b));
+            LogUtil.d("b:" + JSON.toJSONString(b));
             if (b == null || StringUtils.isEmpty(b.getJson())) return;
             tv_visit_theme.setText(b.getName());
             tv_visit_theme.setHint(b.getJson());
-            if("vr_nichestep".equals(b.getObject())){
+            if ("vr_nichestep".equals(b.getObject())) {
                 tv_visit_steps.setText(b.getName());
-            }else{
+            } else {
                 tv_visit_steps.setText("");
             }
         }

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/DataFormDetailActivity.java

@@ -1165,7 +1165,7 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                 String endDate=data.getStringExtra("endDate");
 
                 startDate=startDate+":00";
-                endDate=endDate+":0";
+                endDate=endDate+":00";
                 String field=data.getStringExtra("field");
                 LogUtil.d("id=" +id);
                 LogUtil.d("groupId=" + model.getGroupId());

+ 63 - 47
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddFlihtsActivity.java

@@ -6,11 +6,13 @@ import android.view.View;
 import android.widget.EditText;
 import android.widget.TextView;
 
+import com.alibaba.fastjson.JSON;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.entity.EmployeesEntity;
 import com.xzjmyk.pm.activity.ui.erp.entity.HrorgsEntity;
+import com.xzjmyk.pm.activity.ui.erp.model.oa.EmployeesModel;
 import com.xzjmyk.pm.activity.ui.erp.model.oa.FlightsModel;
 import com.xzjmyk.pm.activity.ui.erp.model.oa.FlightsTimeModel;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
@@ -38,12 +40,10 @@ public class AddFlihtsActivity extends OABaseActivity implements View.OnClickLis
     @ViewInject(R.id.munber_tv)
     private TextView munber_tv;
 
-    private FlightsModel model = null;
-    private FlightsTimeModel timeModel = null;//考勤时间对象
-    private ArrayList<Integer> weeks = null;//周
+    private FlightsModel model = null;//唯一模型
     private ArrayList<EmployeesEntity> employeesList = null;//人员
     private ArrayList<HrorgsEntity> hrorgsList = null;//部门
-
+    private boolean isUpdate = false;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -69,15 +69,17 @@ public class AddFlihtsActivity extends OABaseActivity implements View.OnClickLis
             title = "新增班次";
             model = new FlightsModel();
         } else {
+            ArrayList<Integer> days = getIntent().getIntegerArrayListExtra("day");
+            isUpdate = true;
             title = "修改班次";
-            timeModel = model.getTimeModel();
-            weeks = model.getDay();
+            FlightsTimeModel timeModel = model.getTimeModel();
+            model.setDay(days);
             if (model.getEmployeesModel() != null && !StringUtils.isEmpty(model.getEmployeesModel().getEmployeeNames()))
                 munber_tv.setText(model.getEmployeesModel().getEmployeeNames());
             if (model.getHrorgsModel() != null && !StringUtils.isEmpty(model.getHrorgsModel().getEmployeeNames()))
                 department_tv.setText(model.getHrorgsModel().getEmployeeNames());
             String time = getTime(timeModel);
-            String week = geWeek(weeks);
+            String week = geWeek(days);
             date_tv.setText(week);
             time_tv.setText(time);
             rule_name_et.setText(getNull(model.getName()));
@@ -108,7 +110,6 @@ public class AddFlihtsActivity extends OABaseActivity implements View.OnClickLis
                 startActivityForResult(intent, MUNBER_TV);
                 break;
             case R.id.click_btn:
-                //TODO 提交保存 并返回页面
                 submit();
                 break;
         }
@@ -122,13 +123,15 @@ public class AddFlihtsActivity extends OABaseActivity implements View.OnClickLis
         StringBuilder builder = null;
         switch (requestCode) {
             case TIME_TV:
-                timeModel = data.getParcelableExtra("data");
+                FlightsTimeModel timeModel = data.getParcelableExtra("data");
                 String time = getTime(timeModel);
+                model.setTimeModel(timeModel);
                 time_tv.setText(time);
                 break;
             case DATE_TV:
-                weeks = data.getIntegerArrayListExtra("data");
-                String week = geWeek(weeks);
+                ArrayList<Integer> days = data.getIntegerArrayListExtra("data");
+                String week = geWeek(days);
+                model.setDay(days);
                 date_tv.setText(week);
                 break;
             case DEPARTMENT_TV:
@@ -146,16 +149,18 @@ public class AddFlihtsActivity extends OABaseActivity implements View.OnClickLis
 
 
     private void submit() {
-        progressDialog.show();
         Map<String, Object> param = new HashMap<>();
         param.put("caller", "WorkDate");
         Map<String, Object> formStore = new HashMap<>();
-        formStore.put("wd_id", "");
-
-        formStore.put("wd_code", "");
+        if (model != null && model.getId() != 0)
+            formStore.put("wd_id", model.getId());
+        else formStore.put("wd_id", "");
+        if (model != null && !StringUtils.isEmpty(model.getCode()))
+            formStore.put("wd_code", model.getCode());
+        else formStore.put("wd_id", "");
         formStore.put("wd_name", rule_name_et.getText().toString());
-
         //考勤时间
+        FlightsTimeModel timeModel = model.getTimeModel();
         if (timeModel != null) {
             formStore.put("wd_ondutyone", timeModel.getWd_ondutyone());
             formStore.put("wd_offdutyone", timeModel.getWd_offdutyone());
@@ -167,69 +172,81 @@ public class AddFlihtsActivity extends OABaseActivity implements View.OnClickLis
             formStore.put("wd_offdutythree", timeModel.getWd_offdutythree());
             formStore.put("wd_earlytime", timeModel.getEarlyTime());
         } else {
-            formStore.put("wd_ondutyone", "");
-            formStore.put("wd_offdutyone", "");
-            formStore.put("wd_earlytime", "");
+            showToast("请填写考勤时间", R.color.load_error);
+            return;
         }
-        if (!ListUtils.isEmpty(weeks)) {
+        ArrayList<Integer> days = model.getDay();
+        if (!ListUtils.isEmpty(days)) {
             StringBuilder builder = new StringBuilder();
-            for (Integer e : weeks)
+            for (Integer e : days)
                 builder.append(e + ",");
             removieLast(builder);
             formStore.put("wd_day", builder.toString());
         } else {
-            formStore.put("wd_day", "");
+            showToast("请填写考勤日期", R.color.load_error);
+            return;
         }
+        final EmployeesModel employeesModel = new EmployeesModel();
+        if (model.getEmployeesModel() != null) {
+            employeesModel.setEmployeecode(model.getEmployeesModel().getEmployeecode());
+            employeesModel.setEmployeeNames(model.getEmployeesModel().getEmployeeNames());
+        }
+        StringBuilder builder = new StringBuilder();
+        StringBuilder wd_man = new StringBuilder();
         if (!ListUtils.isEmpty(employeesList)) {
-            StringBuilder builder = new StringBuilder();
-            StringBuilder wd_man = new StringBuilder();
             for (EmployeesEntity e : employeesList) {
                 builder.append(e.getEM_CODE() + ",");
                 wd_man.append(e.getEM_NAME() + ",");
-
             }
             removieLast(builder);
             removieLast(wd_man);
-            formStore.put("wd_emcode", builder.toString());
-            formStore.put("wd_man", builder.toString());
-        } else {
-            formStore.put("wd_emcode", "");
-            formStore.put("wd_man", "");
+            employeesModel.setEmployeeNames(wd_man.toString());
+            employeesModel.setEmployeecode(builder.toString());
         }
+        formStore.put("wd_emcode", StringUtils.isEmpty(employeesModel.getEmployeecode())?"":employeesModel.getEmployeecode());
+        formStore.put("wd_man", StringUtils.isEmpty(employeesModel.getEmployeeNames())?"":employeesModel.getEmployeeNames());
+        final EmployeesModel hrorgsModel = new EmployeesModel();
+        if (model.getHrorgsModel() != null) {
+            hrorgsModel.setEmployeecode(model.getHrorgsModel().getEmployeecode());
+            hrorgsModel.setEmployeeNames(model.getHrorgsModel().getEmployeeNames());
+        }
+        StringBuilder or_code = new StringBuilder();
+        StringBuilder wd_defaultor = new StringBuilder();
         if (!ListUtils.isEmpty(hrorgsList)) {
-            StringBuilder or_code = new StringBuilder();
-            StringBuilder wd_defaultor = new StringBuilder();
             for (HrorgsEntity e : hrorgsList) {
                 or_code.append(e.getOr_code() + ",");
                 wd_defaultor.append(e.getOr_name() + ",");
             }
             removieLast(or_code);
             removieLast(wd_defaultor);
-            formStore.put("wd_defaultorcode", or_code.toString());
-            formStore.put("wd_defaultor", wd_defaultor.toString());
-        } else {
-            formStore.put("wd_defaultorcode", "");
-            formStore.put("wd_defaultor", "");
+            hrorgsModel.setEmployeecode(or_code.toString());
+            hrorgsModel.setEmployeeNames(wd_defaultor.toString());
+
         }
+        formStore.put("wd_defaultorcode", StringUtils.isEmpty(hrorgsModel.getEmployeecode())?"":hrorgsModel.getEmployeecode());
+        formStore.put("wd_defaultor", StringUtils.isEmpty(hrorgsModel.getEmployeeNames())?"":hrorgsModel.getEmployeeNames());
         param.put("formStore", StringUtils.mapToJson(formStore));
         Bundle bundle = null;
-        HttpHandler.getInstance().loadERPByNet(0x11, "mobile/saveWorkDate.action",
+        progressDialog.show();
+        String action = isUpdate ? "mobile/updateWorkDate.action" : "mobile/saveWorkDate.action";
+        HttpHandler.getInstance().loadERPByNet(0x11, action,
                 param, bundle, new HttpHandler.OnResultListener() {
                     @Override
                     public void result(int what, boolean isJSON, String message, Bundle bundle) {
                         progressDialog.dismiss();
                         if (model == null)
                             model = new FlightsModel();
-                        //TODO 需要修改
-//                        model.setWorkName(rule_name_et.getText().toString());
-//                        model.setType(1);
-//                        model.setWeek(date_tv.getText().toString() + " " + time_tv.getText().toString());
-//                        model.setTimeModel(timeModel);
-//                        model.setEmployeesList(employeesList);
-//                        model.setHrorgsList(hrorgsList);
-//                        model.setWorkpcount(employeesList.size());
+                        model.setName(rule_name_et.getText().toString());
+                        model.setType(1);
+                        model.setEmployeesModel(employeesModel);
+                        model.setHrorgsModel(hrorgsModel);
+                        if (isJSON && JSON.parseObject(message).containsKey("id")) {
+                            model.setId(JSON.parseObject(message).getIntValue("id"));
+                        }
                         Intent intent = new Intent();
                         intent.putExtra("data", model);
+                        intent.putIntegerArrayListExtra("days", model.getDay());
+                        intent.putExtra("isUpdate", isUpdate);
                         setResult(0x20, intent);
                         finish();
                     }
@@ -292,7 +309,6 @@ public class AddFlihtsActivity extends OABaseActivity implements View.OnClickLis
             builder.append(timeModel.getWd_ondutythree() + "-" + timeModel.getWd_ondutythree() + " ");
         }
         builder.append(timeModel.getAllTime() / (1000 * 60 * 60) + "小时");
-        removieLast(builder);
         return builder.toString();
     }
 

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

@@ -1,7 +1,9 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.Menu;
@@ -66,10 +68,21 @@ public class FlightsActivity extends OABaseActivity implements IFlightsView, Fli
         }
     }
 
+    @Override
+    public void deleteModel(int position) {
+        if (adapter == null || ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= position)
+            return;
+        adapter.getModels().remove(position);
+        adapter.notifyItemRemoved(position);
+        adapter.notifyItemRangeChanged(position, adapter.getModels().size());
+    }
+
 
     private void addMenuClicking(FlightsModel model) {
         Intent intent = new Intent(ct, AddFlihtsActivity.class);
         intent.putExtra("data", model);
+        if (model != null && !ListUtils.isEmpty(model.getDay()))
+            intent.putIntegerArrayListExtra("day", model.getDay());
         startActivityForResult(intent, 0x21);
     }
 
@@ -85,28 +98,60 @@ public class FlightsActivity extends OABaseActivity implements IFlightsView, Fli
         if (data != null && 0x21 == requestCode && 0x20 == resultCode) {
             List<FlightsModel> models = new ArrayList<>();
             FlightsModel model = data.getParcelableExtra("data");
-            models.add(model);
-            if (adapter == null) {
-                adapter = new FlightsAdapter(models);
-                recyclerView.setAdapter(adapter);
-                adapter.setOnItemClickListener(this);
+            ArrayList<Integer> days = data.getIntegerArrayListExtra("days");
+            model.setDay(days);
+            if (data.getBooleanExtra("isUpdate", false)) {
+                if (adapter == null || ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= clickPosition)
+                    return;
+                adapter.getModels().remove(clickPosition);
+                adapter.getModels().add(clickPosition, model);
+                adapter.notifyItemChanged(clickPosition);
             } else {
-                adapter.getModels().add(model);
-                adapter.notifyItemInserted(adapter.getModels().size() - 1);
+                models.add(model);
+                if (adapter == null) {
+                    adapter = new FlightsAdapter(models);
+                    recyclerView.setAdapter(adapter);
+                    adapter.setOnItemClickListener(this);
+                } else {
+                    adapter.getModels().add(model);
+                    adapter.notifyItemInserted(adapter.getModels().size() - 1);
+                }
             }
         }
     }
 
+    private int clickPosition = 0;
+
     @Override
     public void click(FlightsModel model, int position, boolean itemView) {
         if (itemView) {
+            clickPosition = position;
             addMenuClicking(model);
         } else {
             if (ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= position)
                 return;
-            adapter.getModels().remove(position);
-            adapter.notifyItemRemoved(position);
-            adapter.notifyItemRangeChanged(position, adapter.getModels().size());
+//            adapter.getModels().remove(position);
+//            adapter.notifyItemRemoved(position);
+//            adapter.notifyItemRangeChanged(position, adapter.getModels().size());
+            showDeleteDialog(position);
         }
     }
+
+    private void showDeleteDialog(final int position) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(ct);
+        builder.setTitle(R.string.prompt_title).setMessage("是否确认删除")
+                .setPositiveButton(R.string.sure, new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialogInterface, int i) {
+                        presernter.deleteWork(adapter.getModels().get(position), position);
+                    }
+                })
+                .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialogInterface, int i) {
+                    }
+                }).show();
+    }
+
+
 }

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

@@ -155,6 +155,7 @@ public class FlihtsTimeActivity extends OABaseActivity implements View.OnClickLi
             holder.title_tv.setText("上班时间" + (position + 1));
             holder.start_tv.setText(map.get(KEY));
             holder.end_tv.setText(map.get(VALUES));
+            holder.img.setVisibility(position == 0 ? View.INVISIBLE : View.VISIBLE);
             initEvent(holder, position);
         }
 
@@ -234,6 +235,21 @@ public class FlihtsTimeActivity extends OABaseActivity implements View.OnClickLi
 
     }
 
+    private String getLastTime() {
+        String lastTime = "";
+        for (int i = mapList.size() - 1; i >= 0; i--) {
+            Map<String, String> map = mapList.get(i);
+            if (map.containsKey(VALUES) && !StringUtils.isEmpty(map.get(VALUES))) {
+                lastTime = map.get(VALUES);
+                break;
+            } else if (map.containsKey(KEY) && !StringUtils.isEmpty(map.get(KEY))) {
+                lastTime = map.get(KEY);
+                break;
+            }
+        }
+        return lastTime;
+    }
+
     //计算合计工时
     private long getTime(ArrayList<Map<String, String>> mapList) {
         long time = 0;
@@ -282,7 +298,20 @@ public class FlihtsTimeActivity extends OABaseActivity implements View.OnClickLi
 
     private void showDateDialog(final int position, final boolean isStart) {
         TimePicker picker = new TimePicker(this, TimePicker.HOUR_OF_DAY);
-        picker.setSelectedItem(12, 12);
+        //获取最后时间
+        String hm = getLastTime();
+        int hh = 8;
+        int minth = 30;
+        if (!StringUtils.isEmpty(hm)) {
+            try {
+                String[] hhmm = hm.split(":");
+                hh = Integer.valueOf(hhmm[0]);
+                minth = Integer.valueOf(hhmm[1]);
+            } catch (Exception e) {
+
+            }
+        }
+        picker.setSelectedItem(hh, minth);
         picker.setOnTimePickListener(new TimePicker.OnTimePickListener() {
             @Override
             public void onTimePicked(String hour, String minute) {

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

@@ -150,7 +150,6 @@ public class LocationSearchActivity extends BaseActivity {
     }
 
     private void initView() {
-
         mEmptyLayout = new EmptyLayout(this,listview.getRefreshableView());
         mEmptyLayout.setShowLoadingButton(false);
         mEmptyLayout.setShowEmptyButton(false);

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

@@ -527,22 +527,22 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
     public void showNotLocation() {
         int stringId = 0;
         if (MyApplication.getInstance().isNetworkActive()) {
-            stringId = R.string.open_location;
-        } else
+            stringId = R.string.allow_location;
+            MaterialDialog dialog = new MaterialDialog.Builder(ct).title(R.string.prompt_title).
+                    content(stringId)
+                    .positiveText(R.string.sure).
+                            autoDismiss(false).callback(new MaterialDialog.ButtonCallback() {
+                        @Override
+                        public void onPositive(MaterialDialog dialog) {
+                            super.onPositive(dialog);
+                            dialog.dismiss();
+                        }
+                    }).build();
+            dialog.show();
+        } else {
             stringId = R.string.networks_out;
-
-        if (stringId == 0) return;
-        MaterialDialog dialog = new MaterialDialog.Builder(ct).title(R.string.prompt_title).
-                content(stringId)
-                .positiveText(R.string.sure).
-                        autoDismiss(false).callback(new MaterialDialog.ButtonCallback() {
-                    @Override
-                    public void onPositive(MaterialDialog dialog) {
-                        super.onPositive(dialog);
-                        dialog.dismiss();
-                    }
-                }).build();
-        dialog.show();
+            showToast(stringId,R.color.load_message);
+        }
     }
 
     private void addEntity(List<MissionModel> entitys) {

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

@@ -907,7 +907,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
                 startActivity(new Intent(activity, DataFormDetailActivity.class).putExtra("caller", "SpeAttendance"));
                 break;
             case R.id.oamain_sign_statistical_tv:
-                startActivity(new Intent(activity, SignStatisticalActivity.class));
+                startActivity(new Intent(activity, StatisticsActivity.class));
                 break;
         }
     }

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

@@ -0,0 +1,39 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.oa;
+
+import android.os.Bundle;
+
+import com.baidu.mapapi.model.LatLng;
+import com.baidu.mapapi.search.core.PoiInfo;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.erp.adapter.SearchLocationAdapter;
+import com.xzjmyk.pm.activity.ui.erp.presenter.SearchPresenter;
+import com.xzjmyk.pm.activity.ui.erp.presenter.imp.ISearchView;
+
+import java.util.List;
+
+public class SearchLocationActivity extends OABaseActivity implements ISearchView {
+
+    private SearchPresenter presenter;
+    private SearchLocationAdapter adapter;
+    private LatLng location;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_search_location);
+        initView();
+    }
+
+    private void initView() {
+        presenter = new SearchPresenter(this);
+    }
+
+
+    @Override
+    public void showPoiList(List<PoiInfo> infos) {
+        if (adapter==null){
+            adapter=new SearchLocationAdapter(ct,true,location,infos);
+
+        }
+    }
+}

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

@@ -57,9 +57,10 @@ public class SelectActiveActivity extends BaseActivity {
     private Handler mHandler = new Handler();
     private DBManager manager;
 
+    private int clickNum = 0;
     private List<BaseSortModel<EmployeesEntity>> allList;
     private LinearLayoutManager linearManager;
-
+    boolean isClickSureCb = true;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -129,7 +130,6 @@ public class SelectActiveActivity extends BaseActivity {
         all_sure_cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
-                Log.i("gongpengming", "进来了");
                 if (b) {
                     List<BaseSortModel<EmployeesEntity>> list = adapter.getBeanList();
                     if (ListUtils.isEmpty(list)) return;
@@ -137,15 +137,19 @@ public class SelectActiveActivity extends BaseActivity {
                         e.setClick(true);
                     }
                     adapter.setBeanList(list);
+                    setSelect(list.size());
                     adapter.notifyDataSetChanged();
-                } else {
+                } else if (isClickSureCb) {
                     List<BaseSortModel<EmployeesEntity>> list = adapter.getBeanList();
                     if (ListUtils.isEmpty(list)) return;
                     for (BaseSortModel<EmployeesEntity> e : list) {
                         e.setClick(false);
                     }
+                    setSelect(0);
                     adapter.setBeanList(list);
                     adapter.notifyDataSetChanged();
+                } else {
+                    isClickSureCb = true;
                 }
             }
         });
@@ -162,6 +166,7 @@ public class SelectActiveActivity extends BaseActivity {
     }
 
     private void loadData() {
+        progressDialog.show();
         new Thread(new Runnable() {
             @Override
             public void run() {
@@ -184,6 +189,7 @@ public class SelectActiveActivity extends BaseActivity {
                         }
                         Collections.sort(allList, mBaseComparator);
                         setAdapter();
+                        progressDialog.dismiss();
                     }
                 }, 500);
             }
@@ -201,10 +207,15 @@ public class SelectActiveActivity extends BaseActivity {
         adapter.setOnItemClickListener(new SelectActiveAdapter.OnItemClickListener() {
             @Override
             public void click(int post, BaseSortModel<EmployeesEntity> model) {
-                Log.i("gongpengming", "post=" + post);
-                adapter.getBeanList().get(post).setClick(!adapter.getBeanList().get(post).isClick);
+                boolean isClicked = adapter.getBeanList().get(post).isClick;
+                adapter.getBeanList().get(post).setClick(!isClicked);
                 adapter.notifyItemChanged(post);
-                updateByClick();
+                clickNum += isClicked ? -1 : 1;
+                if (isClicked && all_sure_cb.isChecked()) {
+                    isClickSureCb=false;
+                    all_sure_cb.setChecked(false);
+                }
+                setSelect(clickNum);
             }
         });
     }
@@ -254,10 +265,8 @@ public class SelectActiveActivity extends BaseActivity {
             if (com.xzjmyk.pm.activity.ui.erp.util.StringUtils.isInclude(text, str))
                 chche.add(e);
         }
-        if (!ListUtils.isEmpty(chche)) {
-            adapter.setBeanList(chche);
-            adapter.notifyDataSetChanged();
-        }
+        adapter.setBeanList(chche);
+        adapter.notifyDataSetChanged();
     }
 
     /**
@@ -274,14 +283,19 @@ public class SelectActiveActivity extends BaseActivity {
     private void updateByClick() {
         List<BaseSortModel<EmployeesEntity>> list = adapter.getBeanList();
         if (ListUtils.isEmpty(list)) {
-            mumber_tv.setText("已选择 0 个人员");
+            setSelect(0);
             return;
         }
         int i = 0;
         for (BaseSortModel<EmployeesEntity> e : list) {
             if (e.isClick()) i++;
         }
-        mumber_tv.setText("已选择 " + i + " 个人员");
+        setSelect(i);
+    }
+
+    private void setSelect(int number) {
+        clickNum = number;
+        mumber_tv.setText("已选择 " + number + " 个人员");
     }
 
 

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

@@ -40,6 +40,8 @@ public class SelectAimActivity extends BaseActivity implements ISelectAim {
     private SelectAimAdapter adapter;
     private SelectAimPresenter presenter;
 
+    private String lastInput = "";
+
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -52,10 +54,10 @@ public class SelectAimActivity extends BaseActivity implements ISelectAim {
     }
 
     private void initData() {
-        Intent intent=getIntent();
-        int type=0;
-        if (intent!=null){
-            type=intent.getIntExtra("type",0);
+        Intent intent = getIntent();
+        int type = 0;
+        if (intent != null) {
+            type = intent.getIntExtra("type", 0);
         }
         presenter = new SelectAimPresenter(this);
         presenter.start(type);
@@ -66,13 +68,17 @@ public class SelectAimActivity extends BaseActivity implements ISelectAim {
             @Override
             public void afterTextChanged(Editable editable) {
                 String input = editable.toString();
+                input = input.replaceAll(" ", "");
+                input = input.replaceAll("\n", "");
+                if (lastInput.equals(input)) return;
+                lastInput = input;
                 presenter.seachByKey(input);
             }
         });
         adapter.setOnitemClickListener(new SelectAimAdapter.OnitemClickListener() {
             @Override
             public void click(SelectAimModel model) {
-                if (model.getType()==1)return;
+                if (model.getType() == 1) return;
                 Intent intent = new Intent();
                 intent.putExtra("data", model);
                 setResult(0x20, intent);

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

@@ -0,0 +1,81 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.oa;
+
+import android.os.Bundle;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.ListView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.lidroid.xutils.ViewUtils;
+import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.erp.adapter.SimpleTreeAdapter;
+import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
+import com.xzjmyk.pm.activity.ui.erp.entity.HrorgsEntity;
+import com.xzjmyk.pm.activity.ui.erp.model.oa.HrorgsModel;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.zhy.tree.bean.Node;
+import com.zhy.tree.bean.TreeListViewAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SelectDepartmentActivity extends OABaseActivity {
+    @ViewInject(R.id.context_lv)
+    private ListView context_lv;
+    @ViewInject(R.id.mumber_tv)
+    private TextView mumber_tv;
+    @ViewInject(R.id.all_sure_cb)
+    private CheckBox all_sure_cb;
+
+    private List<HrorgsModel> mDatas = new ArrayList<>();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_select_department);
+        ViewUtils.inject(this);
+        initData();
+        initView();
+        initEvent();
+    }
+
+    private void initData() {
+        DBManager manager = new DBManager(ct);
+        String master = CommonUtil.getSharedPreferences(ct, "erp_master");
+        List<HrorgsEntity> hrorgsEntities = manager.queryHrorgList(new String[]{master}, "whichsys=?");
+        manager.closeDB();
+        for (HrorgsEntity e : hrorgsEntities) {
+            mDatas.add(new HrorgsModel(e.getOr_id() ,e.getOr_subof() , e.getOr_name(), e.getOr_code()));
+        }
+    }
+
+    private void initEvent() {
+        all_sure_cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+
+            }
+        });
+    }
+
+    private void initView() {
+        try {
+            SimpleTreeAdapter<HrorgsModel> mAdapter = new SimpleTreeAdapter<>(context_lv, this, mDatas, 10);
+            mAdapter.setOnTreeNodeClickListener(new TreeListViewAdapter.OnTreeNodeClickListener() {
+                @Override
+                public void onClick(Node node, int position) {
+                    if (node.isLeaf()) {
+                        Toast.makeText(getApplicationContext(), node.getName(),
+                                Toast.LENGTH_SHORT).show();
+                    }
+                }
+
+            });
+            context_lv.setAdapter(mAdapter);
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+    }
+}

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

@@ -36,6 +36,16 @@ public class StatisticsActivity extends BaseActivity implements View.OnClickList
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_statistics);
         ViewUtils.inject(this);
+        initview();
+    }
+
+    private void initview() {
+        attendances_tv.setOnClickListener(this);
+        attendance_tv.setOnClickListener(this);
+        if (attendancesFragment == null) {
+            attendancesFragment = new AttendancesFragment();
+        }
+        changeFragment(attendancesFragment, "attendancesFragment");
     }
 
     @Override
@@ -61,7 +71,6 @@ public class StatisticsActivity extends BaseActivity implements View.OnClickList
             attendances_tv.setTextColor(getResources().getColor(R.color.dimgrey));
             attendance_tag.setBackgroundResource(R.color.darkorange);
             attendances_tag.setBackgroundResource(R.color.item_line);
-
             if (attendanceFragment == null) {
                 attendanceFragment = new AttendanceFragment();
             }
@@ -90,7 +99,7 @@ public class StatisticsActivity extends BaseActivity implements View.OnClickList
             return;
         }
         if (!addFragment.isAdded())// 如果还没有添加,就加上
-            fragmentTransaction.add(R.id.main_content, addFragment, tag);
+            fragmentTransaction.add(R.id.content_fl, addFragment, tag);
         if (addFragment.isDetached())
             fragmentTransaction.attach(addFragment);
         mLastFragment = addFragment;

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

@@ -91,11 +91,11 @@ public class WorkActivity extends BaseActivity implements View.OnClickListener,
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.title:
-//                Intent intent = new Intent(ct, AlarmaActivity.class);
-//                intent.putExtra("macAddress", macAddress);
-//                startActivity(intent);
+                Intent intent = new Intent(ct, AlarmaActivity.class);
+                intent.putExtra("macAddress", macAddress);
+                startActivity(intent);
                 //TODO 测试版本先关闭
-                showPopupWindow();
+//                showPopupWindow();
                 break;
         }
         return super.onOptionsItemSelected(item);
@@ -228,7 +228,7 @@ public class WorkActivity extends BaseActivity implements View.OnClickListener,
     public void showNotLocation() {
         if (notLocationDialog == null)
             notLocationDialog = new MaterialDialog.Builder(ct).title(R.string.prompt_title).
-                    content(R.string.open_location)
+                    content(R.string.allow_location)
                     .positiveText(R.string.sure).
                             autoDismiss(false).callback(new MaterialDialog.ButtonCallback() {
                         @Override

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

@@ -20,7 +20,12 @@ import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.andreabaccega.widget.FormEditText;
+import com.iflytek.cloud.speech.RecognizerResult;
+import com.iflytek.cloud.speech.SpeechError;
+import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
+import com.xzjmyk.pm.activity.audio.voicerecognition.VoiceToWord;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.circle.SendShuoshuoActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
@@ -41,7 +46,7 @@ import java.util.Map;
 /**
  * Created by FANGlh on 2016/11/1.
  */
-public class WorkDailyAddActivity extends BaseActivity {
+public class WorkDailyAddActivity extends BaseActivity implements RecognizerDialogListener {
 
     private static final int DAILY_SUBMITTED_SUCCESSFULLY = 1101;  //提交请求成功后返回
     private static final int CLEAR_AF_UPDATE_DOC_STATE = 1208;
@@ -174,6 +179,9 @@ public class WorkDailyAddActivity extends BaseActivity {
         }
     };
     private String fromqzone;
+    private ImageView voice_summary;
+    private ImageView voice_plan;
+    private ImageView voice_experience;
 
 
     public void doGrabJobContent(int mkeyValue) {
@@ -212,8 +220,61 @@ public class WorkDailyAddActivity extends BaseActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         initView();
+        doVoiceClickEvent();
+    }
+    private int voice_type = 0;
+    private void doVoiceClickEvent() {
+        final VoiceToWord voice = new VoiceToWord(WorkDailyAddActivity.this,"534e3fe2");
+        voice.setRecognizerDialogListener(this);  //自己调用自己
+        voice_summary.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+//                voice_summary.setImageResource(R.drawable.btn_yuyin_pressed);
+                voice_type = 1;
+                voice.GetWordFromVoice();
+            }
+        });
+
+        voice_plan.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+//                voice_plan.setImageResource(R.drawable.btn_yuyin_pressed);
+                voice_type = 2;
+                voice.GetWordFromVoice();
+            }
+        });
+
+        voice_experience.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+//                voice_experience.setImageResource(R.drawable.btn_yuyin_pressed);
+                voice_type = 3;
+                voice.GetWordFromVoice();
+            }
+        });
+    }
+    @Override
+    public void onResult(RecognizerResult recognizerResult, boolean b) {
+        String text = JsonParser.parseIatResult(recognizerResult.getResultString());
+        System.out.println(text);
+        Toast.makeText(mContext, text, Toast.LENGTH_LONG).show();
+
+        if (voice_type == 1){
+            add_summary.setText(add_summary.getText().toString() + text);
+            voice_summary.setImageResource(R.drawable.btn_yuyin_nor);
+        }else if (voice_type == 2){
+            add_plan.setText(add_plan.getText().toString() + text );
+            voice_plan.setImageResource(R.drawable.btn_yuyin_nor);
+        }else if (voice_type == 3){
+            add_experience.setText(add_experience.getText().toString() + text);
+            voice_experience.setImageResource(R.drawable.btn_yuyin_nor);
+        }
     }
 
+    @Override
+    public void onError(SpeechError speechError) {
+
+    }
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
         menu.clear();
@@ -267,8 +328,8 @@ public class WorkDailyAddActivity extends BaseActivity {
             } else if (!TextUtils.isEmpty(fromqzone) && "fromqzone".equals(fromqzone)){
                 finish();
             } else{
-                    startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
-                    finish();
+                startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+                finish();
             }
         }
         return true;
@@ -314,6 +375,9 @@ public class WorkDailyAddActivity extends BaseActivity {
         summary_limit_tv = (TextView) findViewById(R.id.summary_limit_tv);
         plan_limit_tv = (TextView) findViewById(R.id.plan_limit_tv);
         experience_limit_tv = (TextView) findViewById(R.id.experience_limit_tv);
+        voice_summary = (ImageView) findViewById(R.id.voice_summary_iv);
+        voice_plan = (ImageView) findViewById(R.id.voice_plan_iv);
+        voice_experience = (ImageView) findViewById(R.id.voice_experience_iv);
 
         // 对输入的三项内容进行动态监听限制字数,只提醒,不限制输入
         add_summary.addTextChangedListener(new TextWatcher() {
@@ -431,10 +495,10 @@ public class WorkDailyAddActivity extends BaseActivity {
                     Intent intent = new Intent(WorkDailyAddActivity.this, SendShuoshuoActivity.class);
                     intent.putExtra("Experience", add_experience.getText().toString());
                     intent.putExtra("type", 0);
-                    if (!TextUtils.isEmpty(fromqzone) && "fromqzone".equals(fromqzone)){
+                    if (!TextUtils.isEmpty(fromqzone) && "fromqzone".equals(fromqzone)) {
                         startActivity(intent);
                         finish();
-                    }else {
+                    } else {
                         startActivity(intent);
                     }
 
@@ -442,6 +506,9 @@ public class WorkDailyAddActivity extends BaseActivity {
             }
         });
 
+
+
+
     }
 
     private void showsubmitDialog() {
@@ -576,6 +643,7 @@ public class WorkDailyAddActivity extends BaseActivity {
 
     private OnFinishOa onFinishOa;
 
+
     interface OnFinishOa{
         void onFinish();
     }

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

@@ -14,14 +14,20 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.AdapterView;
+import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.iflytek.cloud.speech.RecognizerResult;
+import com.iflytek.cloud.speech.SpeechError;
+import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.adapter.WorkDailyAdapter;
+import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
+import com.xzjmyk.pm.activity.audio.voicerecognition.VoiceToWord;
 import com.xzjmyk.pm.activity.bean.oa.WorkDailyBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
@@ -48,7 +54,7 @@ import java.util.regex.Pattern;
 /**
  * Created by FANGlh on 2016/11/1.
  */
-public class WorkDailyShowActivity extends BaseActivity {
+public class WorkDailyShowActivity extends BaseActivity implements RecognizerDialogListener {
     private static final int DELETE_DOC_REQUEST_SUCCESSFULLY = 1219;
     private ClearEditText mSearchEt;
     private PullToRefreshListView mPullToRefreshListView;
@@ -62,6 +68,7 @@ public class WorkDailyShowActivity extends BaseActivity {
     private List<WorkDailyBean> click_list;
     private List<WorkDailyBean> last_list;
     private String delete_succeed;
+    private ImageView voice_search;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -76,6 +83,7 @@ public class WorkDailyShowActivity extends BaseActivity {
         getSupportActionBar().setTitle("日报记录");
         mSearchEt = (ClearEditText) findViewById(R.id.work_daily_search_edit);
         mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.work_daily_context_ptlv);
+        voice_search = (ImageView) findViewById(R.id.voice_search_iv);
 
         mEmptyLayout = new EmptyLayout(this, mPullToRefreshListView.getRefreshableView());
         mEmptyLayout.setShowEmptyButton(false);
@@ -88,6 +96,15 @@ public class WorkDailyShowActivity extends BaseActivity {
         mWorkDailyAdapter.setmWorkDailyBeanList(real_list);
         mPullToRefreshListView.getRefreshableView().setAdapter(mWorkDailyAdapter);
         real_list = mWorkDailyAdapter.getmWorkDailyBeanList();
+        final VoiceToWord voice = new VoiceToWord(mContext,"534e3fe2");
+        voice.setRecognizerDialogListener(this);  //自己调用自己
+        voice_search.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+//                voice_search.setImageResource(R.drawable.btn_yuyin_pressed);
+                voice.GetWordFromVoice();
+            }
+        });
         mSearchEt.addTextChangedListener(new TextWatcher() {
             @Override
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -348,7 +365,7 @@ public class WorkDailyShowActivity extends BaseActivity {
                             int currid = last_list.get(i).getWD_ID();
                             if (currid == returnedData) {
                                 last_list.remove(i);
-                                click_list.remove(mPosition);
+//                                click_list.remove(mPosition - 1);
                             }
                         }
                         mWorkDailyAdapter.notifyDataSetChanged();
@@ -363,4 +380,19 @@ public class WorkDailyShowActivity extends BaseActivity {
         InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
         imm.hideSoftInputFromWindow(mSearchEt.getWindowToken(), 0);
     }
+
+    @Override
+    public void onResult(RecognizerResult recognizerResult, boolean b) {
+        String text = JsonParser.parseIatResult(recognizerResult.getResultString());
+        System.out.println(text);
+        Toast.makeText(mContext, text, Toast.LENGTH_LONG).show();
+
+        voice_search.setImageResource(R.drawable.btn_yuyin_nor);
+        mSearchEt.setText(mSearchEt.getText().toString() + text);
+    }
+
+    @Override
+    public void onError(SpeechError speechError) {
+
+    }
 }

+ 110 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SearchLocationAdapter.java

@@ -0,0 +1,110 @@
+package com.xzjmyk.pm.activity.ui.erp.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.baidu.mapapi.model.LatLng;
+import com.baidu.mapapi.search.core.PoiInfo;
+import com.xzjmyk.pm.activity.R;
+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 java.text.DecimalFormat;
+import java.util.List;
+
+/**
+ * Created by Bitliker on 2017/2/6.
+ */
+
+public class SearchLocationAdapter extends BaseAdapter {
+    private boolean isShowKm;
+    private Context ct;
+    private LatLng location;//对象目的地
+    private List<PoiInfo> listData;
+
+    public SearchLocationAdapter(Context ct, boolean isShowKm, LatLng location, List<PoiInfo> listData) {
+        this.isShowKm = isShowKm;
+        this.ct = ct;
+        this.location = location;
+        this.listData = listData;
+    }
+
+    public List<PoiInfo> getListData() {
+        return listData;
+    }
+
+    public void setListData(List<PoiInfo> listData) {
+        this.listData = listData;
+        notifyDataSetChanged();
+    }
+
+    @Override
+    public int getCount() {
+        return ListUtils.isEmpty(listData) ? 0 : listData.size();
+    }
+
+    @Override
+    public Object getItem(int i) {
+        return listData.get(i);
+    }
+
+    @Override
+    public long getItemId(int i) {
+        return i;
+    }
+
+    @Override
+    public View getView(int i, View view, ViewGroup viewGroup) {
+        ViewHolder holder = null;
+        if (view == null) {
+            view = LayoutInflater.from(ct).inflate(R.layout.item_location_ls, null);
+            holder = new ViewHolder();
+            holder.address_tv = (TextView) view.findViewById(R.id.address_tv);
+            holder.name_tv = (TextView) view.findViewById(R.id.name_tv);
+            holder.distance_tv = (TextView) view.findViewById(R.id.distance_tv);
+            view.setTag(holder);
+        } else {
+            holder = (ViewHolder) view.getTag();
+        }
+        holder.address_tv.setText(listData.get(i).address);
+        holder.name_tv.setText(listData.get(i).name);
+        String distance = "";
+        if (location != null) {
+            distance = getDistance(listData.get(i).location);
+        }
+        holder.distance_tv.setText(distance);
+        return view;
+    }
+
+    private String getDistance(LatLng location) {
+        String dis = BaiduMapUtil.getInstence().getDistance(location, location);
+        if (StringUtils.isEmpty(dis)) return String.valueOf(0);
+        if (isShowKm) {
+            return getKm(dis) + " km";
+        } else {
+            return dis + " m";
+        }
+    }
+
+    private String getKm(String dis) {
+        if (StringUtils.isEmpty(dis)) return String.valueOf(0);
+        try {
+            DecimalFormat fnum = new DecimalFormat("##0.00");
+            String dd = fnum.format(Float.valueOf(dis) / 1000);
+            return dd;
+        } catch (ClassCastException e) {
+            return String.valueOf(0);
+        } catch (Exception e) {
+            return String.valueOf(0);
+        }
+    }
+
+    class ViewHolder {
+        TextView name_tv, address_tv, distance_tv;
+    }
+}

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

@@ -64,12 +64,12 @@ public class SelectActiveAdapter extends RecyclerView.Adapter<SelectActiveAdapte
         holder.name_tv.setText(model.getBean().getEM_NAME());
         holder.sub_tv.setText((StringUtils.isEmpty(model.getBean().getEM_DEPART()) ? "" : (model.getBean().getEM_DEPART() + ">"))
                 + " " + (StringUtils.isEmpty(model.getBean().getEM_POSITION()) ? "" : model.getBean().getEM_POSITION()));
-
+        holder.cb.setFocusable(false);
         holder.itemView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 if (onItemClickListener != null)
-                    onItemClickListener.click(position,model);
+                    onItemClickListener.click(position, model);
             }
         });
     }

+ 57 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SimpleTreeAdapter.java

@@ -0,0 +1,57 @@
+package com.xzjmyk.pm.activity.ui.erp.adapter;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.xzjmyk.pm.activity.R;
+import com.zhy.tree.bean.Node;
+import com.zhy.tree.bean.TreeListViewAdapter;
+
+import java.util.List;
+
+public class SimpleTreeAdapter<T> extends TreeListViewAdapter<T> {
+
+    public SimpleTreeAdapter(ListView mTree, Context context, List<T> datas,
+                             int defaultExpandLevel) throws IllegalArgumentException,
+            IllegalAccessException {
+        super(mTree, context, datas, defaultExpandLevel);
+    }
+
+    @Override
+    public View getConvertView(Node node, int position, View convertView, ViewGroup parent) {
+
+        ViewHolder viewHolder = null;
+        if (convertView == null) {
+            convertView = mInflater.inflate(R.layout.list_item, parent, false);
+            viewHolder = new ViewHolder();
+            viewHolder.icon = (ImageView) convertView
+                    .findViewById(R.id.id_treenode_icon);
+            viewHolder.label = (TextView) convertView
+                    .findViewById(R.id.id_treenode_label);
+            convertView.setTag(viewHolder);
+
+        } else {
+            viewHolder = (ViewHolder) convertView.getTag();
+        }
+
+        if (node.getIcon() == -1) {
+            viewHolder.icon.setVisibility(View.INVISIBLE);
+        } else {
+            viewHolder.icon.setVisibility(View.VISIBLE);
+            viewHolder.icon.setImageResource(node.getIcon());
+        }
+        viewHolder.label.setText(node.getName());
+
+        return convertView;
+    }
+
+    private final class ViewHolder {
+        ImageView icon;
+        TextView label;
+    }
+
+}

+ 72 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/IconTreeItemHolder.java

@@ -0,0 +1,72 @@
+//package com.xzjmyk.pm.activity.ui.erp.adapter.oa;
+//
+//import android.content.Context;
+//import android.view.LayoutInflater;
+//import android.view.View;
+//import android.widget.TextView;
+//
+//import com.github.johnkil.print.PrintView;
+//import com.unnamed.b.atv.model.TreeNode;
+//import com.unnamed.b.atv.sample.R;
+//
+///**
+// * Created by Bogdan Melnychuk on 2/12/15.
+// */
+//public class IconTreeItemHolder extends TreeNode.BaseNodeViewHolder<IconTreeItemHolder.IconTreeItem> {
+//    private TextView tvValue;
+//    private PrintView arrowView;
+//
+//    public IconTreeItemHolder(Context context) {
+//        super(context);
+//    }
+//
+//    @Override
+//    public View createNodeView(final TreeNode node, IconTreeItem value) {
+//        final LayoutInflater inflater = LayoutInflater.from(context);
+//        final View view = inflater.inflate(R.layout.layout_icon_node, null, false);
+//        tvValue = (TextView) view.findViewById(R.id.node_value);
+//        tvValue.setText(value.text);
+//
+//        final PrintView iconView = (PrintView) view.findViewById(R.id.icon);
+//        iconView.setIconText(context.getResources().getString(value.icon));
+//
+//        arrowView = (PrintView) view.findViewById(R.id.arrow_icon);
+//
+//        view.findViewById(R.id.btn_addFolder).setOnClickListener(new View.OnClickListener() {
+//            @Override
+//            public void onClick(View v) {
+//                TreeNode newFolder = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_folder, "New Folder"));
+//                getTreeView().addNode(node, newFolder);
+//            }
+//        });
+//
+//        view.findViewById(R.id.btn_delete).setOnClickListener(new View.OnClickListener() {
+//            @Override
+//            public void onClick(View v) {
+//                getTreeView().removeNode(node);
+//            }
+//        });
+//
+//        //if My computer
+//        if (node.getLevel() == 1) {
+//            view.findViewById(R.id.btn_delete).setVisibility(View.GONE);
+//        }
+//
+//        return view;
+//    }
+//
+//    @Override
+//    public void toggle(boolean active) {
+//        arrowView.setIconText(context.getResources().getString(active ? R.string.ic_keyboard_arrow_down : R.string.ic_keyboard_arrow_right));
+//    }
+//
+//    public static class IconTreeItem {
+//        public int icon;
+//        public String text;
+//
+//        public IconTreeItem(int icon, String text) {
+//            this.icon = icon;
+//            this.text = text;
+//        }
+//    }
+//}

+ 28 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/SelectableHeaderHolder.java

@@ -1,7 +1,6 @@
 package com.xzjmyk.pm.activity.ui.erp.adapter.oa;
 
 import android.content.Context;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.CheckBox;
@@ -20,48 +19,64 @@ import com.xzjmyk.pm.activity.ui.erp.entity.HrorgsEntity;
  */
 public class SelectableHeaderHolder extends TreeNode.BaseNodeViewHolder<HrorgsEntity> {
     private DepartmentActivity context;
+    private ImageView tagImage;
 
     public SelectableHeaderHolder(Context context) {
         super(context);
         if (context instanceof DepartmentActivity) {
-            Log.i("gongpengming", "context instanceof DepartmentActivity");
             this.context = (DepartmentActivity) context;
         }
     }
 
     @Override
     public View createNodeView(final TreeNode node, HrorgsEntity value) {
-        View view = LayoutInflater.from(MyApplication.getInstance()).inflate(R.layout.item_department,
-                null, false);
+        View view = LayoutInflater.from(MyApplication.getInstance()).
+                inflate(R.layout.item_department, null, false);
         CheckBox node_cb = (CheckBox) view.findViewById(R.id.node_cb);
-        ImageView image = (ImageView) view.findViewById(R.id.image);
+        tagImage = (ImageView) view.findViewById(R.id.image);
         TextView node_value = (TextView) view.findViewById(R.id.node_value);
         node_value.setText(value.getOr_name());
         node_cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                 node.setSelected(isChecked);
-                for (TreeNode n : node.getChildren()) {
-                    getTreeView().selectNode(n, isChecked);
-                }
+                if (isChecked)
+                    for (TreeNode n : node.getChildren()) {
+                        getTreeView().selectNode(n, isChecked);
+                    }
                 if (context != null)
                     context.onCheckedChanged(isChecked);
             }
         });
         node_cb.setChecked(node.isSelected());
-        int reid;
         if (node.isLeaf()) {//最底层
-            reid = R.drawable.xiaji_pass;
+            setLeafTag(false);
         } else {//非最底层
             if (node.getChildren().get(0).isExpanded())
-                reid = R.drawable.xiaji_pass;
+                setLeafTag(false);
             else
-                reid = R.drawable.xiaji;
+                setLeafTag(false);
         }
-        image.setImageResource(reid);
         return view;
     }
 
+    @Override
+    public void toggle(boolean active) {
+        if (!this.mNode.isLeaf())
+            setLeafTag(active);
+    }
+
+
+    private void setLeafTag(boolean active) {
+        int reid;
+        if (active) {//最底层
+            reid = R.drawable.xiaji_pass;
+        } else {//非最底层
+            reid = R.drawable.xiaji;
+        }
+        tagImage.setImageResource(reid);
+    }
+
     private boolean isSelected(TreeNode node) {
         if (node.isSelected()) return true;
         if (node.getParent() != null) {

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

@@ -2,15 +2,38 @@ package com.xzjmyk.pm.activity.ui.erp.fragment;
 
 
 import android.os.Bundle;
+import android.os.Looper;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.ScrollView;
+import android.widget.TextView;
 
+import com.lidroid.xutils.ViewUtils;
+import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
+import com.xzjmyk.pm.activity.ui.erp.view.oacalender.CalenderView;
+import com.xzjmyk.pm.activity.util.TimeUtils;
+
+import java.util.Date;
 
 /**
  * 个人考勤
  */
 public class AttendanceFragment extends EasyFragment {
+    @ViewInject(R.id.calender)
+    private CalenderView calender;
+    @ViewInject(R.id.month_sv)
+    private ScrollView month_sv;
+    @ViewInject(R.id.day_lv)
+    private ListView day_lv;
 
+    private WorkAdapter adapter;
+    private Date selectDate = null;
 
 
     @Override
@@ -20,8 +43,102 @@ public class AttendanceFragment extends EasyFragment {
 
     @Override
     protected void onCreateView(Bundle savedInstanceState, boolean createView) {
+        ViewUtils.inject(getmRootView());
+        initView();
+        initEvent();
+    }
+
+    private void initView() {
+
+    }
 
+    private void initEvent() {
+        calender.setOnDateChangeListener(new CalenderView.OnDateSelectListener() {
+            @Override
+            public void selected(boolean isClickAgen, Date date) {
+                selectDate = date;
+                showMessage(isClickAgen);
+                LogUtil.d("selectDate=" + TimeUtils.f_long_2_str(selectDate.getTime()));
+                LogUtil.d("xiancheng==" + (Looper.getMainLooper() == Looper.myLooper()));
+            }
+        });
+        calender.setOnMonthChangeListener(new CalenderView.OnMonthChangeListener() {
+            @Override
+            public void selected(String yyyyMM) {
+                LogUtil.d("yyyyMM=" + yyyyMM);
+            }
+        });
     }
 
 
+    /**
+     * 显示日历下面数据
+     *
+     * @param isMonth 是否显示全月   全月数据  、当天数据
+     */
+    private void showMessage(boolean isMonth) {
+        if (isMonth) {
+            month_sv.setVisibility(View.VISIBLE);
+            day_lv.setVisibility(View.GONE);
+        } else {
+            month_sv.setVisibility(View.GONE);
+            day_lv.setVisibility(View.VISIBLE);
+        }
+    }
+
+
+    private void setDate2Adapter() {
+        if (adapter == null) {
+            adapter = new WorkAdapter();
+            day_lv.setAdapter(adapter);
+        } else {
+            adapter.notifyDataSetChanged();
+        }
+    }
+
+
+    class WorkAdapter extends BaseAdapter {
+        @Override
+        public int getCount() {
+            return 0;
+        }
+
+        @Override
+        public Object getItem(int i) {
+            return null;
+        }
+
+        @Override
+        public long getItemId(int i) {
+            return 0;
+        }
+
+        @Override
+        public View getView(int i, View view, ViewGroup viewGroup) {
+            ViewHoder hoder = null;
+            if (view == null) {
+                view = LayoutInflater.from(ct).inflate(R.layout.item_attendance, null);
+                hoder = new ViewHoder();
+                hoder.title_tv = (TextView) view.findViewById(R.id.title_tv);
+                hoder.work_tv = (TextView) view.findViewById(R.id.work_tv);
+                hoder.work_tag_tv = (TextView) view.findViewById(R.id.work_tag_tv);
+                hoder.off_tv = (TextView) view.findViewById(R.id.off_tv);
+                hoder.off_tag_tv = (TextView) view.findViewById(R.id.off_tag_tv);
+                view.setTag(hoder);
+            } else {
+                hoder = (ViewHoder) view.getTag();
+            }
+            initItemView(hoder);
+            return view;
+        }
+
+        private void initItemView(ViewHoder hoder) {
+
+        }
+
+        class ViewHoder {
+            TextView title_tv, work_tv, work_tag_tv, off_tv, off_tag_tv;
+        }
+    }
+
 }

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

@@ -16,16 +16,23 @@ import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.AdapterView;
+import android.widget.ImageView;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.iflytek.cloud.speech.RecognizerResult;
+import com.iflytek.cloud.speech.SpeechError;
+import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.adapter.FriendSortAdapter;
+import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
+import com.xzjmyk.pm.activity.audio.voicerecognition.VoiceToWord;
 import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.sortlist.BaseComparator;
 import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
@@ -71,7 +78,7 @@ import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
 /**
  * Created by pengminggong on 2016/10/12.
  */
-public class ContactFragment extends EasyFragment implements View.OnClickListener {
+public class ContactFragment extends EasyFragment implements View.OnClickListener , RecognizerDialogListener {
     @ViewInject(R.id.sidebar)
     private SideBar sidebar;
     @ViewInject(R.id.text_dialog)
@@ -113,6 +120,7 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
             }
         }
     };
+    private ImageView voice_search;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -196,6 +204,16 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
                 }
             }
         });
+
+        final VoiceToWord voice = new VoiceToWord(ct,"534e3fe2");
+        voice.setRecognizerDialogListener(this);  //自己调用自己
+        voice_search.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+//                voice_search.setImageResource(R.drawable.btn_yuyin_pressed);
+                voice.GetWordFromVoice();
+            }
+        });
         //搜索框处理
         if (search_edit == null) return;
         search_edit.addTextChangedListener(new TextWatcher() {
@@ -242,6 +260,7 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
         View headview = LayoutInflater.from(ct).inflate(R.layout.header_fragment_contact, null);
         refreshListView.addHeaderView(headview);
         search_edit = (ClearEditText) headview.findViewById(R.id.search_edit);
+        voice_search = (ImageView) headview.findViewById(R.id.voice_search_iv);
         headview.findViewById(R.id.company).setOnClickListener(this);//企业结构
         headview.findViewById(R.id.group).setOnClickListener(this);//商务群
         headview.findViewById(R.id.uu_friend).setOnClickListener(this);//我的好友
@@ -568,4 +587,19 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
                 break;
         }
     }
+
+    @Override
+    public void onResult(RecognizerResult recognizerResult, boolean b) {
+        String text = JsonParser.parseIatResult(recognizerResult.getResultString());
+        System.out.println(text);
+        Toast.makeText(ct, text, Toast.LENGTH_LONG).show();
+
+        voice_search.setImageResource(R.drawable.btn_yuyin_nor);
+        search_edit.setText(search_edit.getText().toString() + text);
+    }
+
+    @Override
+    public void onError(SpeechError speechError) {
+
+    }
 }

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

@@ -15,7 +15,8 @@ import java.util.ArrayList;
 
 public class FlightsModel implements Parcelable {
     private int id;              //id
-    private int type;           //类型  1、正常班次(可有排版 可删除)  2.默认班次 (有排版  无删除) 3.自由排班
+    private String code;//编号
+    private int type;         //类型  1、正常班次(可有排版 可删除)  2.默认班次 (有排版  无删除) 3.自由排班
     private String name;     //规则名称
     private int count;         //成员个数
     private ArrayList<Integer> day;
@@ -30,6 +31,7 @@ public class FlightsModel implements Parcelable {
 
     protected FlightsModel(Parcel in) {
         id = in.readInt();
+        code = in.readString();
         type = in.readInt();
         name = in.readString();
         count = in.readInt();
@@ -41,6 +43,7 @@ public class FlightsModel implements Parcelable {
     @Override
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeInt(id);
+        dest.writeString(code);
         dest.writeInt(type);
         dest.writeString(name);
         dest.writeInt(count);
@@ -66,6 +69,14 @@ public class FlightsModel implements Parcelable {
         }
     };
 
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
     public int getId() {
         return id;
     }
@@ -137,14 +148,15 @@ public class FlightsModel implements Parcelable {
             builder.append(FlightsUtil.getDay(day) + " ");
         }
         if (!StringUtils.isEmpty(timeModel.getWd_ondutyone()) && !StringUtils.isEmpty(timeModel.getWd_offdutyone())) {
-            builder.append(timeModel.getWd_ondutyone() + "-" + timeModel.getWd_offdutyone());
+            builder.append(timeModel.getWd_ondutyone() + "-" + timeModel.getWd_offdutyone() + " ");
         }
         if (!StringUtils.isEmpty(timeModel.getWd_ondutytwo()) && !StringUtils.isEmpty(timeModel.getWd_offdutytwo())) {
-            builder.append(timeModel.getWd_ondutytwo() + "-" + timeModel.getWd_offdutytwo());
+            builder.append(timeModel.getWd_ondutytwo() + "-" + timeModel.getWd_offdutytwo() + " ");
         }
         if (!StringUtils.isEmpty(timeModel.getWd_ondutythree()) && !StringUtils.isEmpty(timeModel.getWd_offdutythree())) {
-            builder.append(timeModel.getWd_ondutythree() + "-" + timeModel.getWd_offdutythree());
+            builder.append(timeModel.getWd_ondutythree() + "-" + timeModel.getWd_offdutythree() + " ");
         }
+
         return builder.toString();
     }
 }

+ 30 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/HrorgsModel.java

@@ -0,0 +1,30 @@
+package com.xzjmyk.pm.activity.ui.erp.model.oa;
+
+import com.zhy.tree.bean.TreeNodeId;
+import com.zhy.tree.bean.TreeNodeLabel;
+import com.zhy.tree.bean.TreeNodePid;
+
+/**
+ * Created by Bitliker on 2017/2/7.
+ */
+
+public class HrorgsModel {
+    @TreeNodeId
+    private int _id;//当前id
+    @TreeNodePid
+    private int parentId;//父类id
+    @TreeNodeLabel
+    private String name;  ///显示名称
+    private String code;
+
+    private long length;
+    private String desc;
+
+    public HrorgsModel(int _id, int parentId, String name, String code) {
+        super();
+        this._id = _id;
+        this.parentId = parentId;
+        this.name = name;
+        this.code = code;
+    }
+}

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

@@ -28,6 +28,7 @@ import java.util.Map;
 public class FlightsPresernter implements HttpHandler.OnResultListener {
 
     private final int WORK_DATA = 0x11;
+    private final int WORK_DELETE = 0x12;
     private IFlightsView iFlightsView;
 
     public FlightsPresernter(IFlightsView iFlightsView) {
@@ -52,6 +53,17 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
                 param, bundle, this);
     }
 
+    public void deleteWork(FlightsModel model, int position) {
+        showLoading();
+        Map<String, Object> param = new HashMap<>();
+        param.put("caller", "WorkDate");
+        param.put("id", model.getId());
+        Bundle bundle = new Bundle();
+        bundle.putInt("position", position);
+        HttpHandler.getInstance().loadERPByNet(0x12, "mobile/deleteWorkDate.action",
+                param, bundle, this);
+    }
+
     private void showLoading() {
         if (iFlightsView != null) iFlightsView.showLoading();
 
@@ -77,6 +89,11 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
                 JSONArray array = JSON.parseObject(message).getJSONArray("listdata");
                 handlerWork(array);
                 break;
+            case WORK_DELETE:
+                dimssLoading();
+                int position = bundle.getInt("position");
+                iFlightsView.deleteModel(position);
+                break;
         }
     }
 
@@ -87,7 +104,7 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
 
     private void handlerWork(JSONArray array) {
         if (ListUtils.isEmpty(array)) {
-            //TODO 返回为空
+            iFlightsView.showModel(new ArrayList<FlightsModel>());
             return;
         }
         JSONObject object = null;
@@ -100,6 +117,7 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
         iFlightsView.showModel(models);
     }
 
+
     private FlightsModel handlerFlights(JSONObject object) {
         FlightsModel model = new FlightsModel();
         FlightsTimeModel timeModel = new FlightsTimeModel();
@@ -118,6 +136,7 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
         hrorgsModel.setEmployeecode(FlightsUtil.getNull(object, "wd_defaultorcode"));
         hrorgsModel.setEmployeeNames(FlightsUtil.getNull(object, "wd_defaultor"));
         model.setId(object.containsKey("id") ? object.getIntValue("id") : 0);
+        model.setCode(object.containsKey("wd_code") ? object.getString("wd_code") : "");
         model.setTimeModel(timeModel);
         model.setDay(FlightsUtil.getDay(FlightsUtil.getNull(object, "wd_day")));
         model.setEmployeesModel(employeesModel);
@@ -135,7 +154,6 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
             model.setCount(conut == null ? 0 : conut.length);
         } catch (Exception e) {
         }
-
         return model;
     }
 

+ 43 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SearchPresenter.java

@@ -0,0 +1,43 @@
+package com.xzjmyk.pm.activity.ui.erp.presenter;
+
+import android.content.Intent;
+
+import com.xzjmyk.pm.activity.ui.erp.presenter.imp.ISearchView;
+
+/**
+ * 地址搜索
+ * Created by Bitliker on 2017/2/6.
+ * 参数
+ * type(搜索方式int 1.搜索附近 2.搜索地名)
+ * 1.radius(范围 int)
+ * 2.keyWork(搜索值)
+ * <p>
+ * 公共:
+ * 1、title(标题String)
+ * 2、style(主题 int)
+ * 3、latlng(对比距离的位置,如没有则表示当前位置)
+ * 4、resultCode(返回码 int)
+ * 5、resultName(返回key String )
+ * 6、isKm(是否使用km距离计算 boolean)
+ */
+
+public class SearchPresenter {
+
+    private ISearchView iSearchView;
+
+    public SearchPresenter(ISearchView iSearchView) {
+        if (iSearchView == null)//防止传入一个为空的isearchview
+            new NullPointerException("ISearchView 不能为null");
+        this.iSearchView = iSearchView;
+    }
+
+    /**
+     * 初始化数据
+     *
+     * @param intent 转入的控制参数
+     */
+    public void start(Intent intent) {
+
+    }
+
+}

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

@@ -10,4 +10,5 @@ import java.util.List;
 
 public interface IFlightsView extends HttpImp {
     void showModel(List<FlightsModel> models);
+    void deleteModel(int position);
 }

+ 14 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/ISearchView.java

@@ -0,0 +1,14 @@
+package com.xzjmyk.pm.activity.ui.erp.presenter.imp;
+
+import com.baidu.mapapi.search.core.PoiInfo;
+
+import java.util.List;
+
+/**
+ * Created by Bitliker on 2017/2/6.
+ */
+
+public interface ISearchView extends HttpImp {
+
+    void showPoiList(List<PoiInfo> infos);
+}

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

@@ -33,7 +33,6 @@ import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
 import android.text.style.ForegroundColorSpan;
 import android.text.style.UnderlineSpan;
-import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.Patterns;
 import android.view.Gravity;

+ 3 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/ReckonAutoUtil.java

@@ -42,7 +42,9 @@ public class ReckonAutoUtil {
             if (e.getLatLng() == null) continue;//定位不存在
             //获取当前与目的地的距离
 //            if (e.getStatus() == 2) continue;
-            float distance = Float.valueOf(BaiduMapUtil.getInstence().getDistance(e.getLatLng()));
+//            float distance = Float.valueOf(BaiduMapUtil.getInstence().getDistance(e.getLatLng()));
+            float distance = BaiduMapUtil.getInstence().autoDistance(e.getLatLng());
+            if (distance == -1f) return null;
             if (e.getStatus() != 2 && distance > companyDistance && !StringUtils.isEmpty(e.getRealTime())) {
                 //1.判断进行中的外勤计划,如果离开了签到最后一次,结束该计划
                 log("符合外勤签退");

+ 8 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/CalendarFragmet.java

@@ -7,7 +7,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import com.gxut.bitliker.oa.R;
+import com.xzjmyk.pm.activity.R;
 
 import java.util.Date;
 import java.util.HashSet;
@@ -18,7 +18,7 @@ import java.util.Set;
  */
 
 public class CalendarFragmet extends Fragment {
-    private OACalendarView calendarView;
+    private MyCalendarView calendarView;
     private Date date;
 
     /**
@@ -36,18 +36,18 @@ public class CalendarFragmet extends Fragment {
     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.item_calendar, container, false);
-        calendarView = (OACalendarView) view.findViewById(R.id.calender);
+        View view = inflater.inflate(R.layout.fragment_calendar, container, false);
+        calendarView = (MyCalendarView) view.findViewById(R.id.calender);
         date = (Date) getArguments().getSerializable("DATA");
         calendarView.setCurDate(date);
         Set<Integer> dada = new HashSet<>();
         calendarView.setDecoratDays(dada);
-        calendarView.setDateListener(new OACalendarView.OnSelectDateListener() {
+        calendarView.setDateListener(new MyCalendarView.OnSelectDateListener() {
             @Override
-            public void result(Date date) {
+            public void result(boolean isClickAgen, Date date) {
                 CalendarFragmet.this.date=date;
                 if (onDateListener != null)
-                    onDateListener.result(date);
+                    onDateListener.result(isClickAgen,date);
             }
         });
         return view;
@@ -70,6 +70,6 @@ public class CalendarFragmet extends Fragment {
     private OnDateListener onDateListener;
 
     public interface OnDateListener {
-        void result(Date date);
+        void result(boolean isClickAgen, Date date);
     }
 }

+ 3 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/CalenderView.java

@@ -103,10 +103,10 @@ public class CalenderView extends ViewPager {
             fragmet = (CalendarFragmet) object;
             fragmet.setOnDateListener(new CalendarFragmet.OnDateListener() {
                 @Override
-                public void result(Date date) {
+                public void result(boolean isClickAgen, Date date) {
                     CalenderView.this.date[position] = date;
                     if (onDateChangeListener != null)
-                        onDateChangeListener.selected(date);
+                        onDateChangeListener.selected(isClickAgen,date);
                 }
             });
             super.setPrimaryItem(container, position, object);
@@ -135,7 +135,7 @@ public class CalenderView extends ViewPager {
     private OnDateSelectListener onDateChangeListener;
 
     public interface OnDateSelectListener {
-        void selected(Date date);
+        void selected(boolean isClickAgen, Date date);
 
     }
 

+ 32 - 13
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/OACalendarView.java → WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/MyCalendarView.java

@@ -8,7 +8,7 @@ import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
 
-import com.gxut.bitliker.oa.util.DisplayUtil;
+import com.xzjmyk.pm.activity.util.DisplayUtil;
 
 import java.util.Calendar;
 import java.util.Date;
@@ -20,14 +20,13 @@ import java.util.regex.Pattern;
 /**
  * Created by pengminggong on 2016/9/20.
  */
-public class OACalendarView extends View implements View.OnTouchListener {
+public class MyCalendarView extends View implements View.OnTouchListener {
     //日期记录
     private Date curDate; // 当前日历显示的月
     private Date downDate; // 手指按下状态时临时日期
     //索引
-    private String yeasMonth = "";//年月  yyyymm
     private int todayIndex; // 今天的索引
-    private int downIndex=-1; // 按下的格子索引
+    private int downIndex = -1; // 按下的格子索引
     private int startIndex; // 开始的格子索引(当月)
     private int endIndex; // 开始的格子索引(当月)
     //装饰物 decorat
@@ -39,11 +38,11 @@ public class OACalendarView extends View implements View.OnTouchListener {
     private Surface surface;
     private int[] date; // 日历显示格子数目
 
-    public OACalendarView(Context context) {
+    public MyCalendarView(Context context) {
         this(context, null);
     }
 
-    public OACalendarView(Context context, AttributeSet attrs) {
+    public MyCalendarView(Context context, AttributeSet attrs) {
         super(context, attrs);
         surface = new Surface();
         curDate = new Date();
@@ -158,11 +157,7 @@ public class OACalendarView extends View implements View.OnTouchListener {
                 break;
             case MotionEvent.ACTION_UP:
                 if (Math.abs(event.getX() - x) < 10 && Math.abs(event.getY() - y) < 10) {//为点击事件
-                    if (setReckon()) {
-                        if (dateListener != null)
-                            this.dateListener.result(downDate);
-                        invalidate();
-                    }
+                    reckonClick();
                 } else {
                     return true;
                 }
@@ -295,6 +290,29 @@ public class OACalendarView extends View implements View.OnTouchListener {
         }
     }
 
+    /*计算判断的点击的索引*/
+    private void reckonClick() {
+        int indexX = (int) Math.floor(x / surface.cellWidth);
+        int indexY = (int) Math.floor((y - surface.weekHeight) / surface.cellHeight);
+        //当前点击的索引
+        int downIndex = indexY * 7 + indexX;
+        if (downIndex < startIndex || downIndex > endIndex) {
+            return;
+        }
+        calendar.setTime(curDate);
+        calendar.set(Calendar.DAY_OF_MONTH, date[downIndex]);
+        downDate = calendar.getTime();
+        boolean isClickAgen = this.downIndex == downIndex;
+        if (this.downIndex != downIndex) {//可以点击
+            this.downIndex = downIndex;
+        } else {
+            this.downIndex = -1;
+        }
+        if (dateListener != null)
+            this.dateListener.result(isClickAgen, downDate);
+        invalidate();
+    }
+
     /*计算判断的点击的索引*/
     private boolean setReckon() {
         int indexX = (int) Math.floor(x / surface.cellWidth);
@@ -430,9 +448,10 @@ public class OACalendarView extends View implements View.OnTouchListener {
 
     public interface OnSelectDateListener {
         /**
-         * @param date 日期对象
+         * @param isClickAgen
+         * @param date        日期对象
          */
-        void result(Date date);
+        void result(boolean isClickAgen, Date date);
     }
 
 }

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

@@ -37,7 +37,7 @@ import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.circle.BusinessCircleActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.BaseInfoActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.oa.DepartmentActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectDepartmentActivity;
 import com.xzjmyk.pm.activity.ui.erp.model.Master;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
@@ -273,7 +273,7 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
         findViewById(R.id.test_rl).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivity(new Intent(ct, DepartmentActivity.class));
+                startActivity(new Intent(ct, SelectDepartmentActivity.class));
             }
         });
 

+ 134 - 46
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/OfficeAddressSettingsActivity.java

@@ -20,6 +20,7 @@ import com.alibaba.fastjson.JSON;
 import com.baidu.mapapi.search.core.PoiInfo;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.oa.OfficeAddressBean;
 import com.xzjmyk.pm.activity.bean.oa.SelectBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.LocationSearchActivity;
@@ -32,6 +33,9 @@ import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.view.MyListView;
 
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -47,6 +51,7 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
     private static final int GET_SIGN_DDRESSS = 11901;
     private static final int SAVE_ADDRESS_REQUEST = 12001;
     private static final int WORK_RANGE_REQUESTCODE = 12002;
+    private static final int ADDRESS_DELETE_REQUEST = 12101;
     private TextView sign_range;  //打卡范围
     private TextView work_range;  //办公范围
     private MyListView address_lv;  //地址列表
@@ -59,9 +64,16 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
     private List<String> address_location; //办公地址详细
     private List<String> address_longitude; //经度
     private List<String> address_latitud; //纬度
+    private List<String> address_id; //地址id
     private String caller = "comAddressSet";
-    private int saved_num;
+    private int saved_num = 0;
     private int save_address_size;
+    private int default_sign_range = 300; //默认打卡范围
+    private int default_work_range = 500; //默认办公范围
+    private int delete_position = 0;      //记录删除的位置position
+    private OfficeAddressBean mOfficeAddressBean;
+    private int listdada_size;
+
     private Handler handler = new Handler(){
         @Override
         public void handleMessage(Message msg) {
@@ -81,16 +93,29 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
                         if (!StringUtils.isEmpty(msg.getData().getString("result"))){
                             String save_address_result = msg.getData().getString("result");
                             LogUtil.prinlnLongMsg("save_address_result", save_address_result);
-                            for (int i = 1; i <= address_names.size(); i++) {
-                                if (saved_num == address_names.size())
-                                {
-                                    progressDialog.dismiss();
-                                }
-                                Toast.makeText(ct,"办公地址" + i + "保存成功",Toast.LENGTH_SHORT).show();
-                            }
-
-                            saved_num++;
+//                            if (saved_num == address_names.size() - 1 )
+//                            {//TODO 有待优化
+                                progressDialog.dismiss();
+                                Toast.makeText(ct, "办公地址保存成功", Toast.LENGTH_SHORT).show();
+//                            }
+//                            saved_num++;
+                        }
+                    }
+                    break;
+                case ADDRESS_DELETE_REQUEST:
+                    if (msg.getData() != null){
+                        if (!StringUtils.isEmpty(msg.getData().getString("result"))){
+                            address_names.remove(delete_position);
+                            address_location.remove(delete_position);
+                            address_longitude.remove(delete_position);
+                            address_latitud.remove(delete_position);
+                            address_id.remove(delete_position);
+                            listdada_size--;
+                            myadapter.notifyDataSetChanged();
+                            ToastMessage("删除成功");
                         }
+                    }else {
+                        ToastMessage("删除失败");
                     }
                     break;
                 default:
@@ -98,13 +123,13 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
                         if (!StringUtils.isEmpty(msg.getData().getString("result"))) {
                             ToastMessage(msg.getData().getString("result"));
                         }
+                        progressDialog.dismiss();
                     }
                     break;
             }
         }
     };
 
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -125,7 +150,11 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
         address_location = new ArrayList<>();
         address_latitud = new ArrayList<>();
         address_longitude = new ArrayList<>();
+        address_id = new ArrayList<>();
+
+        mOfficeAddressBean = new OfficeAddressBean();
         myadapter = new OfficeAddressAdapter();
+        myadapter.setmOfficeAddressBean(mOfficeAddressBean);
         address_lv.setAdapter(myadapter);
     }
 
@@ -133,39 +162,73 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
         //初次进来获取考勤地址设置接口请求
         String url = Constants.getAppBaseUrl(getApplicationContext()) + "/mobile/getcomaddressset.action";
         Map<String,Object> param = new HashMap<>();
-        //TODO 传入的参数还未添加
         LinkedHashMap headers = new LinkedHashMap();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
         ViewUtil.httpSendRequest(getApplicationContext(), url, param, handler, headers, GET_SIGN_DDRESSS, null, null, "post");
 
-        saved_num = 1;
     }
 
     private void doShowSignAddress(String get_sign_address_result) {
-        String first_sign_range = JSON.parseObject(get_sign_address_result).getString("CS_VALIDRANGE");
-        String first_work_range = JSON.parseObject(get_sign_address_result).getString("CS_INNERDISTANCE");
-        String first_cs_latitude = JSON.parseObject(get_sign_address_result).getString("CS_LATITUDE");
-        String first_cs_longitude = JSON.parseObject(get_sign_address_result).getString("CS_LONGITUDE");
-        String first_cs_workaddr = JSON.parseObject(get_sign_address_result).getString("CS_WORKADDR");
-        String first_cs_shortname = JSON.parseObject(get_sign_address_result).getString("CS_SHORTNAME");
-        if (!StringUtils.isEmpty(first_sign_range) && !StringUtils.isEmpty(first_work_range) && !StringUtils.isEmpty(first_cs_latitude) &&
-                !StringUtils.isEmpty(first_cs_longitude) && !StringUtils.isEmpty(first_cs_workaddr) && !StringUtils.isEmpty(first_cs_shortname)){
-            sign_range.setText(first_sign_range + "米");
-            work_range.setText(first_work_range + "米");
-
-            address_names.add(first_cs_shortname);
-            address_location.add(first_cs_workaddr);
-            address_longitude.add(first_cs_longitude);
-            address_latitud.add(first_cs_latitude);
-        }else {
-            sign_range.setText("300米");
-            work_range.setText("500米");
+        try {
+            JSONObject resultJsonObject = new JSONObject(get_sign_address_result);
+            if (resultJsonObject != null){
+                mOfficeAddressBean = JSON.parseObject(resultJsonObject.toString(),OfficeAddressBean.class);
+                if (!ListUtils.isEmpty(mOfficeAddressBean.getListdata())){
+                    listdada_size = mOfficeAddressBean.getListdata().size();
+                    for (int i = 0; i < listdada_size; i++) {
+                        if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(i).getCS_SHORTNAME())){
+                            address_names.add(mOfficeAddressBean.getListdata().get(i).getCS_SHORTNAME());
+                        }else {
+                            address_names.add("");
+                        }
+
+                        if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(i).getCS_WORKADDR())){
+                            address_location.add(mOfficeAddressBean.getListdata().get(i).getCS_WORKADDR());
+                        }else {
+                            address_location.add("");
+                        }
+
+                        if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(i).getCS_LATITUDE())){
+                            address_latitud.add(mOfficeAddressBean.getListdata().get(i).getCS_LATITUDE());
+                        }else {
+                            address_latitud.add("");
+                        }
+
+                        if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(i).getCS_LONGITUDE())){
+                            address_longitude.add(mOfficeAddressBean.getListdata().get(i).getCS_LONGITUDE());
+                        }else {
+                            address_longitude.add("");
+                        }
+
+                        if (mOfficeAddressBean.getListdata().get(i).getCS_ID() != 0){
+                            address_id.add(mOfficeAddressBean.getListdata().get(i).getCS_ID() + "");
+                        }else {
+                            address_id.add("-1");
+                        }
+                    }
+                    myadapter.setAddress_names(address_names);
+                    myadapter.notifyDataSetChanged();
+
+                    if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(0).getCS_VALIDRANGE())){
+                        sign_range.setText(mOfficeAddressBean.getListdata().get(0).getCS_VALIDRANGE() + "米");
+                    }else {
+                        sign_range.setText(default_sign_range + "米");
+                    }
+
+                    if (mOfficeAddressBean.getListdata().get(0).getCS_INNERDISTANCE() > 0){
+                        work_range.setText(mOfficeAddressBean.getListdata().get(0).getCS_INNERDISTANCE() + "米");
+                    }else {
+                        work_range.setText(default_work_range +  "米");
+                    }
+                }
+            }
+        } catch (JSONException e) {
+            e.printStackTrace();
         }
     }
 
     private void clickEvent(){
         sign_range.setOnClickListener(new View.OnClickListener() {
-
             @Override
             public void onClick(View v) {
                 String[] distance = getResources().getStringArray(R.array.sign_distance);
@@ -182,6 +245,7 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
                 doSelectRange(distance, requestCode);
             }
         });
+
         add_address.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -284,21 +348,32 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
         if (requestCode == ADDRESS_CHANGE && resultCode == ADDRESS_CHANGE) {//地址微调
             PoiInfo poi = data.getParcelableExtra("resultName");
             if (poi == null) return;
-            //TODO 将每次点击地址返回的值add到自定义列表中,
+            // 将每次点击地址返回的值add到自定义列表中,
             address_lv.setVisibility(View.VISIBLE);
             address_names.add(poi.name);
             address_location.add(poi.address);
             address_latitud.add(String.valueOf(poi.location.latitude));
             address_longitude.add(String.valueOf(poi.location.longitude));
-
+            LogUtil.prinlnLongMsg("getpoi",JSON.toJSONString(poi));
         }
         myadapter.setAddress_names(address_names);
         myadapter.notifyDataSetChanged();
     }
+
+    //地点显示列表适配器
     public class OfficeAddressAdapter extends BaseAdapter{
+        private OfficeAddressBean mOfficeAddressBean;
         private List<String> address_names;
         private int mPosition;
 
+        public OfficeAddressBean getmOfficeAddressBean() {
+            return mOfficeAddressBean;
+        }
+
+        public void setmOfficeAddressBean(OfficeAddressBean mOfficeAddressBean) {
+            this.mOfficeAddressBean = mOfficeAddressBean;
+        }
+
         public List<String> getAddress_names() {
             return address_names;
         }
@@ -308,12 +383,12 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
         }
         @Override
         public int getCount() {
-            return address_names == null ? 0 :address_names.size();
+                return address_names == null ? 0 :address_names.size();
         }
 
         @Override
         public Object getItem(int position) {
-            return address_names.get(position);
+            return mOfficeAddressBean.getListdata() == null ? 0 : mOfficeAddressBean.getListdata().size();
         }
 
         @Override
@@ -333,23 +408,32 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
             }else {
                 viewHolder = (ViewHolder) convertView.getTag();
             }
-            //ToDo 带回地址的显示
+
+            // 带回地址的显示
             if (!ListUtils.isEmpty(address_names) && !TextUtils.isEmpty(address_names.get(position))){
                 viewHolder.item_address_tv.setText(address_names.get(position));
             }
-            //TODo 地址的删除操作
+            // 地址的删除操作
             viewHolder.office_address_delete_im.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
                     new AlertDialog.Builder(mContext)
                             .setTitle("温馨提示")
-                            .setMessage("确认删除该条已选办公地址?")
-                            .setNegativeButton("取消",null)
+                            .setMessage("\t\t确认删除该条办公地址?")
+                            .setNegativeButton("取消", null)
                             .setPositiveButton("确认", new DialogInterface.OnClickListener() {
                                 @Override
                                 public void onClick(DialogInterface dialog, int which) {
                                     mPosition = position;
-                                    doDeleteAddress();
+                                    if (mPosition < listdada_size) {
+                                        doDeleteAddress(mPosition);
+                                    } else {
+                                        address_names.remove(mPosition);
+                                        address_location.remove(mPosition);
+                                        address_longitude.remove(mPosition);
+                                        address_latitud.remove(mPosition);
+                                        myadapter.notifyDataSetChanged();
+                                    }
                                 }
                             }).show();
                 }
@@ -357,11 +441,15 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
             return convertView;
         }
 
-        private void doDeleteAddress() {
-            address_names.remove(mPosition);
-            // TODO
-
-            notifyDataSetChanged();
+        private void doDeleteAddress(int mPosition) {
+            delete_position = mPosition;
+            String url = Constants.getAppBaseUrl(getApplicationContext()) + "/mobile/deletecomaddressset.action";
+            Map<String , Object> param = new HashMap<>();
+            param.put("caller",caller);
+            param.put("id",CommonUtil.getNumByString(address_id.get(delete_position).toString()));
+            LinkedHashMap headers = new LinkedHashMap();
+            headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
+            ViewUtil.httpSendRequest(getApplicationContext(), url, param, handler, headers, ADDRESS_DELETE_REQUEST, null, null, "post");
         }
 
         class ViewHolder{

+ 3 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SignSeniorSettingActivity.java

@@ -93,6 +93,7 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
                         }else {
                             Toast.makeText(ct,"保存失败",Toast.LENGTH_LONG).show();
                         }
+                        progressDialog.dismiss();
                     }
 
                     break;
@@ -115,6 +116,7 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
                         if (!StringUtils.isEmpty(msg.getData().getString("result"))) {
                             ToastMessage(msg.getData().getString("result"));
                         }
+                        progressDialog.dismiss();
                     }
                     break;
             }
@@ -253,6 +255,7 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
 
     //保存操作
     private void doSaveSeniorSetting() {
+        progressDialog.show();
         String latetime = CommonUtil.getNumByString(late_time_tv.getText().toString()) + "";
         String seniouslatetime = CommonUtil.getNumByString(serious_late_time_tv.getText().toString()) + "" ;
         String leaveearlytime = CommonUtil.getNumByString(leave_early_tv.getText().toString()) + "";

+ 21 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SpeechrecognitionActivity.java

@@ -8,17 +8,19 @@ import android.widget.Toast;
 
 import com.iflytek.cloud.speech.RecognizerResult;
 import com.iflytek.cloud.speech.SpeechError;
+import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
 import com.xzjmyk.pm.activity.audio.voicerecognition.VoiceToWord;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
-import com.iflytek.cloud.ui.RecognizerDialogListener;
+
 /**
  * Created by FANGlh on 2017/1/11.
  * function:
  */
 public class SpeechrecognitionActivity extends BaseActivity implements RecognizerDialogListener{
 
+    private static final int DONETOWORD = 12001;
     private EditText identify_words_et;
     private Button speak_start_bt;
 
@@ -55,4 +57,22 @@ public class SpeechrecognitionActivity extends BaseActivity implements Recognize
     public void onError(SpeechError speechError) {
 
     }
+
+//    @Override
+//    public boolean onCreateOptionsMenu(Menu menu) {
+//        return super.onCreateOptionsMenu(menu);
+//    }
+//
+//    @Override
+//    public boolean onOptionsItemSelected(MenuItem item) {
+//        if (item.getItemId() == android.R.id.home){
+//            Intent getintent = getIntent();
+//            if (!StringUtils.isEmpty(getintent.getStringExtra("voice_request")) && "voice_request".equals(getintent.getStringExtra("voice_request"))){
+//                Intent intent = new Intent();
+//                intent.putExtra("voice_to_word",voicewords);
+//                setResult(RESULT_OK,intent);
+//            }
+//        }
+//        return super.onOptionsItemSelected(item);
+//    }
 }

+ 35 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -21,6 +21,7 @@ import android.widget.AdapterView;
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -29,6 +30,9 @@ import com.android.volley.VolleyError;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
 import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
+import com.iflytek.cloud.speech.RecognizerResult;
+import com.iflytek.cloud.speech.SpeechError;
+import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.roamer.slidelistview.SlideBaseAdapter;
 import com.roamer.slidelistview.SlideListView;
 import com.roamer.slidelistview.SlideListView.SlideMode;
@@ -36,6 +40,8 @@ import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
+import com.xzjmyk.pm.activity.audio.voicerecognition.VoiceToWord;
 import com.xzjmyk.pm.activity.bean.AttentionUser;
 import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.bean.message.SubscriptionMessage;
@@ -89,7 +95,7 @@ import java.util.Map;
  * @desc:消息列表
  * @author:Administrator on 2016/2/17 17:33
  */
-public class MessageFragment extends EasyFragment {
+public class MessageFragment extends EasyFragment implements RecognizerDialogListener {
     private boolean mNeedUpdate = true;
     private ClearEditText mClearEditText;
     private PullToRefreshSlideListView mPullToRefreshListView;
@@ -130,6 +136,22 @@ public class MessageFragment extends EasyFragment {
 
     public OnRefreshUIListener refreshRedUIListener = null;
     private ArrayList<SubscriptionMessage> SubscriptionMessages;
+    private ImageView voice_search;
+
+    @Override
+    public void onResult(RecognizerResult recognizerResult, boolean b) {
+        String text = JsonParser.parseIatResult(recognizerResult.getResultString());
+        System.out.println(text);
+        Toast.makeText(ct, text, Toast.LENGTH_LONG).show();
+
+        voice_search.setImageResource(R.drawable.btn_yuyin_nor);
+        mClearEditText.setText(mClearEditText.getText().toString() + text);
+    }
+
+    @Override
+    public void onError(SpeechError speechError) {
+
+    }
 
     public interface OnRefreshUIListener {
         void updata(int num);
@@ -206,6 +228,17 @@ public class MessageFragment extends EasyFragment {
     private void initView() {
         mNetTextView = (DrawableCenterTextView) findViewById(R.id.message_net_set);
         mClearEditText = (ClearEditText) findViewById(R.id.search_edit);
+        voice_search = (ImageView) findViewById(R.id.voice_search_iv);
+
+        final VoiceToWord voice = new VoiceToWord(ct,"534e3fe2");
+        voice.setRecognizerDialogListener(this);  //自己调用自己
+        voice_search.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+//                voice_search.setImageResource(R.drawable.btn_yuyin_pressed);
+                voice.GetWordFromVoice();
+            }
+        });
         mClearEditText.addTextChangedListener(new TextWatcher() {
             @Override
             public void onTextChanged(CharSequence s, int start, int before, int count) {
@@ -388,7 +421,7 @@ public class MessageFragment extends EasyFragment {
 
 
     /**
-     * TODO 获取关注列表(需调式查看访问数据内容)  更新朋友信息
+     *  获取关注列表(需调式查看访问数据内容)  更新朋友信息
      */
     private void upDataFriend() {
         isRefeshed = true;

+ 16 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/BaiduMapUtil.java

@@ -96,6 +96,22 @@ public class BaiduMapUtil {
         }
     }
 
+    public float autoDistance(LatLng a) {
+        if (a == null) return -1f;
+        BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
+        if (helper.getLatitude() == 0 || helper.getLongitude() == 0) return -1f;
+        double distance = Math.abs(DistanceUtil.getDistance(a,
+                new LatLng(helper.getLatitude(), helper.getLongitude())));
+        DecimalFormat df = new DecimalFormat(".##");
+        try {
+            return Float.valueOf(df.format(distance));
+        } catch (ClassCastException e) {
+            return -1f;
+        } catch (Exception e) {
+            return -1f;
+        }
+    }
+
     //与当前位置的距离
     public String getDistance(LatLng a) {
         if (a == null) return "0";

+ 3 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/wheel/DatePicker.java

@@ -292,7 +292,6 @@ public class DatePicker extends WheelPicker {
             yearView.setOnWheelViewListener(new WheelView.OnWheelViewListener() {
                 @Override
                 public void onSelected(boolean isUserScroll, int selectedIndex, String item) {
-                    Log.i("gongpengming", "进来了");
                     selectedYearIndex = selectedIndex;
                     int maxMonth = 1;
                     try {
@@ -300,8 +299,8 @@ public class DatePicker extends WheelPicker {
                         Calendar c = Calendar.getInstance();
                         int newYear = c.get(Calendar.YEAR);
                         if (newYear == year) {
-                            maxMonth = c.get(Calendar.MONTH) + 1;
-                            selectedMonthIndex = maxMonth;
+                            maxMonth = c.get(Calendar.MONTH)+1 ;
+                            selectedMonthIndex = maxMonth ;
                         } else {
                             maxMonth = 12;
                         }
@@ -309,7 +308,7 @@ public class DatePicker extends WheelPicker {
                         for (int i = 1; i <= maxMonth; i++) {
                             months.add(DateUtils.fillZero(i));
                         }
-                        selectedMonthIndex = Math.min(selectedMonthIndex, months.size());
+                        selectedMonthIndex = Math.min(selectedMonthIndex, months.size()-1);
                         monthView.setItems(months, selectedMonthIndex);
                     } catch (Exception e) {
                         if (e != null)

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/wheel/TimePicker.java

@@ -85,8 +85,8 @@ public class TimePicker extends WheelPicker {
      * @param minute the minute
      */
     public void setSelectedItem(int hour, int minute) {
-        selectedHour = String.valueOf(hour);
-        selectedMinute = String.valueOf(minute);
+        selectedHour = (hour < 10 ? "0" : "") + hour;
+        selectedMinute = (minute < 10 ? "0" : "") + minute;
     }
 
     /**

+ 0 - 1
WeiChat/src/main/java/com/xzjmyk/pm/basepedo/ui/MyPedometerActivity.java

@@ -169,7 +169,6 @@ public class MyPedometerActivity extends BaseActivity implements Handler.Callbac
 
     @Override
     public void onBackPressed() {
-
         if (isServiceRunning(uustep_service_name)){
             unbindService(conn);
             startService(new Intent(mContext, StepService.class));

BIN=BIN
WeiChat/src/main/res/drawable-hdpi/btn_yuyin_nor.png


BIN=BIN
WeiChat/src/main/res/drawable-hdpi/btn_yuyin_pressed.png


BIN=BIN
WeiChat/src/main/res/drawable-xhdpi/btn_yuyin_nor.png


BIN=BIN
WeiChat/src/main/res/drawable-xhdpi/btn_yuyin_pressed.png


BIN=BIN
WeiChat/src/main/res/drawable-xxhdpi/btn_yuyin_nor.png


BIN=BIN
WeiChat/src/main/res/drawable-xxhdpi/btn_yuyin_pressed.png


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

@@ -13,7 +13,8 @@
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height_min"
         android:background="@color/oa_item_bg"
-        android:paddingLeft="10dp">
+        android:paddingLeft="10dp"
+        android:paddingRight="10dp">
 
         <TextView
             android:id="@+id/rule_name_tag"

+ 38 - 2
WeiChat/src/main/res/layout/activity_add_work_daily.xml

@@ -47,6 +47,15 @@
                     android:paddingLeft="10dp"
                     android:layout_marginTop="8dp"
                     />
+                    <ImageView
+                        android:id="@+id/voice_summary_iv"
+                        android:layout_width="30dp"
+                        android:layout_height="30dp"
+                        android:src="@drawable/btn_yuyin_nor"
+                        android:layout_gravity="right"
+                        android:visibility="visible"
+                        android:layout_marginRight="20dp"
+                        />
                 <TextView
                     android:id="@+id/summary_limit_tv"
                     android:layout_width="wrap_content"
@@ -68,6 +77,7 @@
                     whatever:customRegexp="^[\\s\\S]{0,500}$"
                     whatever:testErrorString="字数超限500了喔,亲!"
                     />
+
                 <View
                     android:layout_width="match_parent"
                     android:layout_height="8dp"
@@ -89,6 +99,16 @@
                         android:text="工作计划"
                         android:paddingLeft="10dp"
                         android:layout_marginTop="8dp"/>
+
+                    <ImageView
+                        android:id="@+id/voice_plan_iv"
+                        android:layout_width="30dp"
+                        android:layout_height="30dp"
+                        android:src="@drawable/btn_yuyin_nor"
+                        android:layout_gravity="right"
+                        android:visibility="visible"
+                        android:layout_marginRight="20dp"
+                        />
                     <TextView
                         android:id="@+id/plan_limit_tv"
                         android:layout_width="wrap_content"
@@ -132,15 +152,25 @@
                         android:textSize="16sp"
                         android:layout_marginTop="8dp"
                         />
+                    <ImageView
+                        android:id="@+id/voice_experience_iv"
+                        android:layout_width="30dp"
+                        android:layout_height="30dp"
+                        android:src="@drawable/btn_yuyin_nor"
+                        android:layout_gravity="right"
+                        android:visibility="visible"
+                        android:layout_marginRight="10dp"
+                        android:layout_alignParentRight="true"
+                        />
                     <ImageView
                         android:id="@+id/add_work_daily_sharing_experience_im"
                         android:layout_width="25dp"
                         android:layout_height="30dp"
                         android:src="@drawable/ex_icon_share_nor"
-                        android:layout_alignParentRight="true"
                         android:layout_marginTop="0dp"
                         android:layout_marginRight="10dp"
                         android:visibility="visible"
+                        android:layout_toLeftOf="@+id/voice_experience_iv"
                         />
 
                     <TextView
@@ -170,10 +200,16 @@
 
                 <Button
                     android:id="@+id/add_work_daily_submit_iv"
-                    style="@style/from_button_base_bule"
                     android:layout_marginTop="10dp"
                     android:layout_marginLeft="20dp"
                     android:layout_marginRight="20dp"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginBottom="30dp"
+                    android:background="@drawable/bg_bule_btn"
+                    android:padding="10dp"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/text_main"
                     android:text="提交" />
             </LinearLayout>
         </LinearLayout>

+ 99 - 77
WeiChat/src/main/res/layout/activity_flights_date.xml

@@ -8,91 +8,113 @@
     android:orientation="vertical"
     tools:context="com.xzjmyk.pm.activity.ui.erp.activity.oa.FlightsDateActivity">
 
-    <CheckBox
-        android:id="@+id/checkBox1"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/item_height_min"
-        android:background="@color/oa_item_bg"
-        android:button="@drawable/oa_checkbox"
-        android:padding="10dp"
-        android:text="每周一"
-        android:textColor="@color/text_hine"
-        android:textSize="@dimen/text_main" />
-
-    <CheckBox
-        android:id="@+id/checkBox2"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/item_height_min"
-        android:layout_marginTop="2px"
+    <LinearLayout
         android:background="@color/oa_item_bg"
-        android:button="@drawable/oa_checkbox"
-        android:padding="10dp"
-        android:text="每周二"
-        android:textColor="@color/text_hine"
-        android:textSize="@dimen/text_main" />
-
-    <CheckBox
-        android:id="@+id/checkBox3"    android:layout_marginTop="2px"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/item_height_min"
-        android:background="@color/oa_item_bg"
-        android:button="@drawable/oa_checkbox"
-        android:padding="10dp"
-        android:text="每周三"
-        android:textColor="@color/text_hine"
-        android:textSize="@dimen/text_main" />
-
-    <CheckBox
-        android:id="@+id/checkBox4"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/item_height_min"
-        android:layout_marginTop="2px"
-        android:background="@color/oa_item_bg"
-        android:button="@drawable/oa_checkbox"
-        android:padding="10dp"
-        android:text="每周四"
-        android:textColor="@color/text_hine"
-        android:textSize="@dimen/text_main" />
-
-    <CheckBox
-        android:id="@+id/checkBox5"
+        android:paddingLeft="10dp"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/item_height_min"
-        android:background="@color/oa_item_bg"
-        android:button="@drawable/oa_checkbox"
-        android:padding="10dp"
-        android:text="每周五"
-        android:layout_marginTop="2px"
-        android:textColor="@color/text_hine"
-        android:textSize="@dimen/text_main" />
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
 
-    <CheckBox
-        android:id="@+id/checkBox6"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/item_height_min"
-        android:layout_marginTop="2px"
-        android:background="@color/oa_item_bg"
-        android:button="@drawable/oa_checkbox"
-        android:padding="10dp"
-        android:text="每周六"
-        android:textColor="@color/text_hine"
-        android:textSize="@dimen/text_main" />
+        <CheckBox
+            android:id="@+id/checkBox1"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/item_height_min"
+            android:button="@drawable/oa_checkbox"
+            android:padding="10dp"
+            android:text="每周一"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_main" />
+<View
+    android:layout_width="match_parent"
+    android:layout_height="2px"
+    android:background="@color/item_line"/>
+        <CheckBox
+            android:id="@+id/checkBox2"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/item_height_min"
+            android:layout_marginTop="2px"
+            android:button="@drawable/oa_checkbox"
+            android:padding="10dp"
+            android:text="每周二"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_main" />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:background="@color/item_line"/>
+        <CheckBox
+            android:id="@+id/checkBox3"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/item_height_min"
+            android:layout_marginTop="2px"
+            android:button="@drawable/oa_checkbox"
+            android:padding="10dp"
+            android:text="每周三"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_main" />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:background="@color/item_line"/>
+        <CheckBox
+            android:id="@+id/checkBox4"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/item_height_min"
+            android:layout_marginTop="2px"
+            android:button="@drawable/oa_checkbox"
+            android:padding="10dp"
+            android:text="每周四"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_main" />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:background="@color/item_line"/>
+        <CheckBox
+            android:id="@+id/checkBox5"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/item_height_min"
+            android:layout_marginTop="2px"
+            android:button="@drawable/oa_checkbox"
+            android:padding="10dp"
+            android:text="每周五"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_main" />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:background="@color/item_line"/>
+        <CheckBox
+            android:id="@+id/checkBox6"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/item_height_min"
+            android:layout_marginTop="2px"
+            android:button="@drawable/oa_checkbox"
+            android:padding="10dp"
+            android:text="每周六"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_main" />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:background="@color/item_line"/>
+        <CheckBox
+            android:id="@+id/checkBox7"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/item_height_min"
+            android:layout_marginTop="2px"
+            android:button="@drawable/oa_checkbox"
+            android:padding="10dp"
+            android:text="每周七"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_main" />
+    </LinearLayout>
 
-    <CheckBox
-        android:id="@+id/checkBox7"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/item_height_min"
-        android:layout_marginTop="2px"
-        android:background="@color/oa_item_bg"
-        android:button="@drawable/oa_checkbox"
-        android:padding="10dp"
-        android:text="每周七"
-        android:textColor="@color/text_hine"
-        android:textSize="@dimen/text_main" />
 
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent">
+
         <Button
             android:id="@+id/click_btn"
             android:layout_width="match_parent"

+ 5 - 10
WeiChat/src/main/res/layout/activity_flihts_time.xml

@@ -17,12 +17,6 @@
             android:id="@+id/listView"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"/>
-        <!--<com.xzjmyk.pm.activity.view.MyListView-->
-            <!--android:id="@+id/listView"-->
-            <!--android:layout_width="match_parent"-->
-            <!--android:layout_height="match_parent"-->
-            <!--android:divider="@color/item_line"-->
-            <!--android:dividerHeight="2px" />-->
 
         <TextView
             android:id="@+id/add_tv"
@@ -49,8 +43,9 @@
                 android:layout_alignParentRight="true"
                 android:background="@null"
                 android:gravity="center_vertical"
-                android:textColor="@color/text_main"
-                android:textSize="@dimen/text_main" />
+                android:textColor="@color/text_hine"
+                android:paddingRight="10dp"
+                android:textSize="@dimen/text_hine" />
 
             <TextView
                 android:layout_width="wrap_content"
@@ -80,8 +75,8 @@
                 android:drawableRight="@drawable/oa_next"
                 android:gravity="center_vertical"
                 android:hint="@string/select_must"
-                android:textColor="@color/text_main"
-                android:textSize="@dimen/text_main" />
+                android:textColor="@color/text_hine"
+                android:textSize="@dimen/text_hine" />
 
             <TextView
                 android:layout_width="wrap_content"

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

@@ -5,8 +5,7 @@
     android:layout_height="match_parent"
     android:focusable="true"
     android:focusableInTouchMode="true"
-    android:orientation="vertical"
-    tools:context=".ui.erp.activity.oa.LocationMapActivity">
+    android:orientation="vertical">
 
     <RelativeLayout
         android:id="@+id/search_rl"
@@ -92,6 +91,5 @@
         android:divider="@color/item_line"
         android:dividerHeight="1dp"
         android:focusableInTouchMode="false"
-        android:scrollingCache="false"
-        />
+        android:scrollingCache="false" />
 </LinearLayout>

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

@@ -393,7 +393,7 @@
                         android:gravity="center"
                         android:text="考勤统计"
                         android:textColor="@color/white"
-                        android:visibility="invisible"/>
+                        android:visibility="visible"/>
 
                     <TextView
                         android:layout_width="0dp"

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

@@ -47,7 +47,6 @@
                     android:id="@+id/text_step"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="1600"
                     android:textColor="#288af8"
                     android:textSize="18sp"
                     />

+ 95 - 0
WeiChat/src/main/res/layout/activity_search_location.xml

@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:focusable="true"
+    android:focusableInTouchMode="true"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        android:id="@+id/search_rl"
+        android:layout_width="match_parent"
+        android:layout_height="48dp"
+        android:background="@drawable/bg_bar"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:orientation="horizontal"
+        android:paddingBottom="5dp"
+        android:paddingLeft="15dp"
+        android:paddingRight="15dp"
+        android:paddingTop="5dp">
+
+        <com.xzjmyk.pm.activity.view.ClearEditText
+            android:id="@+id/search_edit"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@drawable/search_input"
+            android:drawableLeft="@drawable/search"
+            android:drawableRight="@drawable/search_clear"
+            android:hint="@string/search"
+            android:textColor="@color/dark_grey"
+            android:textColorHint="@color/grey"
+            android:textSize="15sp" />
+    </RelativeLayout>
+
+    <com.baidu.mapapi.map.MapView
+        android:id="@+id/bmapView"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="3"
+        android:clickable="false" />
+
+    <LinearLayout
+        android:id="@+id/qzone_map_ll"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:visibility="gone">
+
+        <TextView
+            android:id="@+id/hidden_location_tv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="5dp"
+            android:layout_marginTop="5dp"
+            android:padding="5dp"
+            android:text="不显示位置"
+            android:textColor="@color/titleBlue"
+            android:textSize="@dimen/text_main"
+            android:visibility="visible" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="8dp"
+            android:background="@color/light_gray"
+            android:visibility="visible" />
+
+        <TextView
+            android:id="@+id/location_city_tv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="5dp"
+            android:layout_marginTop="5dp"
+            android:padding="5dp"
+            android:text=""
+            android:textSize="@dimen/text_main" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="8dp"
+            android:background="@color/light_gray" />
+    </LinearLayout>
+
+    <com.handmark.pulltorefresh.library.PullToRefreshListView
+        android:id="@+id/listview"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="5"
+        android:divider="@color/item_line"
+        android:dividerHeight="1dp"
+        android:focusableInTouchMode="false"
+        android:scrollingCache="false" />
+</LinearLayout>

+ 17 - 0
WeiChat/src/main/res/layout/activity_select_department.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/activity_department"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    tools:context="com.xzjmyk.pm.activity.ui.erp.activity.oa.DepartmentActivity">
+
+    <ListView
+        android:id="@+id/context_lv"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"/>
+
+    <include layout="@layout/include_select"/>
+</LinearLayout>

+ 3 - 3
WeiChat/src/main/res/layout/activity_statistics.xml

@@ -19,6 +19,7 @@
             android:layout_weight="1"
             android:gravity="center"
             android:text="团队考勤"
+            android:textColor="@color/darkorange"
             android:textSize="16dp" />
 
         <View
@@ -33,7 +34,6 @@
             android:layout_height="match_parent"
             android:layout_weight="1"
             android:gravity="center"
-            android:textColor="@color/darkorange"
             android:text="我的考勤"
             android:textSize="16dp" />
     </LinearLayout>
@@ -51,7 +51,7 @@
             android:layout_height="4px"
             android:layout_marginRight="20dp"
             android:layout_weight="1"
-            android:background="@color/item_line" />
+            android:background="@color/darkorange" />
 
         <View
             android:id="@+id/attendance_tag"
@@ -59,7 +59,7 @@
             android:layout_height="4px"
             android:layout_marginLeft="20dp"
             android:layout_weight="1"
-            android:background="@color/darkorange" />
+            android:background="@color/item_line" />
     </LinearLayout>
 
     <FrameLayout

+ 11 - 0
WeiChat/src/main/res/layout/activity_work_daily.xml

@@ -31,6 +31,17 @@
             android:textColor="@color/dark_grey"
             android:textColorHint="@color/grey"
             android:textSize="15sp" />
+        <ImageView
+            android:id="@+id/voice_search_iv"
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:background="@drawable/btn_yuyin_nor"
+            android:visibility="visible"
+            android:layout_marginRight="25dp"
+            android:layout_alignParentRight="true"
+            android:layout_alignRight="@+id/work_daily_search_edit"
+            android:layout_marginTop="3dp"
+            />
 
     </RelativeLayout>
 

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

@@ -6,9 +6,10 @@
     <ImageView
         android:id="@+id/empty_img"
         android:layout_width="50dp"
-        android:layout_height="50dp"
+        android:layout_height="60dp"
         android:layout_centerInParent="true"
-        android:src="@drawable/location_empty" />
+        android:src="@drawable/location_empty"
+        android:paddingBottom="10dp"/>
 
     <TextView
         android:layout_marginTop="10dp"

+ 30 - 5
WeiChat/src/main/res/layout/fragment_attendance.xml

@@ -1,13 +1,38 @@
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context="com.xzjmyk.pm.activity.ui.erp.fragment.AttendanceFragment">
 
-    <!-- TODO: Update blank fragment layout -->
-    <TextView
+    <com.xzjmyk.pm.activity.ui.erp.view.oacalender.CalenderView
+        android:id="@+id/calender"
+        android:layout_width="match_parent"
+        android:layout_height="230dp" />
+
+    <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:text="@string/hello_blank_fragment" />
+        android:layout_below="@id/calender">
+
+        <ScrollView
+            android:id="@+id/month_sv"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone">
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+
+            </RelativeLayout>
+        </ScrollView>
 
-</FrameLayout>
+        <ListView
+            android:id="@+id/day_lv"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:divider="@color/item_line"
+            android:dividerHeight="2px"
+            android:visibility="gone" />
+    </FrameLayout>
+</RelativeLayout>

+ 11 - 0
WeiChat/src/main/res/layout/fragment_calendar.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <com.xzjmyk.pm.activity.ui.erp.view.oacalender.MyCalendarView
+        android:id="@+id/calender"
+        android:layout_width="wrap_content"
+        android:layout_height="230dp" />
+</LinearLayout>

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

@@ -487,7 +487,7 @@
             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"

+ 12 - 0
WeiChat/src/main/res/layout/fragment_message.xml

@@ -28,6 +28,18 @@
             android:textColor="@color/dark_grey"
             android:textColorHint="@color/grey"
             android:textSize="15sp" />
+
+        <ImageView
+            android:id="@+id/voice_search_iv"
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:background="@drawable/btn_yuyin_nor"
+            android:visibility="visible"
+            android:layout_marginRight="25dp"
+            android:layout_alignParentRight="true"
+            android:layout_alignRight="@+id/search_edit"
+            android:layout_marginTop="3dp"
+            />
     </RelativeLayout>
 
     <com.xzjmyk.pm.activity.view.DrawableCenterTextView

+ 12 - 0
WeiChat/src/main/res/layout/header_fragment_contact.xml

@@ -27,6 +27,18 @@
             android:textColor="@color/dark_grey"
             android:textColorHint="@color/grey"
             android:textSize="15sp" />
+
+        <ImageView
+            android:id="@+id/voice_search_iv"
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:background="@drawable/btn_yuyin_nor"
+            android:visibility="visible"
+            android:layout_marginRight="25dp"
+            android:layout_alignParentRight="true"
+            android:layout_alignRight="@+id/search_edit"
+            android:layout_marginTop="3dp"
+            />
     </RelativeLayout>
 
     <LinearLayout

+ 2 - 2
WeiChat/src/main/res/layout/include_select.xml

@@ -13,7 +13,7 @@
         android:paddingLeft="20dp"
         android:paddingRight="20dp"
         android:text="确定"
-        android:textColor="@color/wheat"
+        android:textColor="@color/white"
         android:textSize="@dimen/text_main" />
 
 
@@ -22,8 +22,8 @@
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:layout_marginLeft="10dp"
+        android:padding="8dp"
         android:button="@drawable/oa_checkbox"
-        android:drawablePadding="10dp"
         android:gravity="center"
         android:text="全选"
         android:textColor="@color/text_main"

+ 62 - 0
WeiChat/src/main/res/layout/item_attendance.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/title_tv"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/item_color1"
+        android:padding="10dp"
+        android:text="班次"
+        android:textColor="@color/text_hine"
+        android:textSize="@dimen/text_main" />
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/item_color2"
+        android:padding="10dp">
+
+        <ImageView
+            android:id="@+id/tag"
+            android:layout_width="4dp"
+            android:layout_height="50dp"
+            android:background="@color/item_line" />
+
+        <TextView
+            android:id="@+id/work_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:layout_toRightOf="@id/tag"
+            android:text="09:20" />
+
+        <TextView
+            android:id="@+id/work_tag_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:layout_toRightOf="@id/work_tv"
+            android:text="09:20" />
+
+        <TextView
+            android:id="@+id/off_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@id/tag"
+            android:layout_alignLeft="@id/work_tv"
+            android:layout_toRightOf="@id/tag"
+            android:text="09:20" />
+
+        <TextView
+            android:id="@+id/off_tag_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignLeft="@id/work_tag_tv"
+            android:layout_alignTop="@id/off_tv"
+            android:text="09:20" />
+    </RelativeLayout>
+</LinearLayout>

+ 6 - 8
WeiChat/src/main/res/layout/item_flight_time.xml

@@ -7,9 +7,8 @@
 
     <TextView
         android:id="@+id/title_tv"
-        android:layout_width="0dp"
+        android:layout_width="wrap_content"
         android:layout_height="match_parent"
-        android:layout_weight="2"
         android:gravity="center"
         android:text="上班时间1"
         android:textColor="@color/text_hine"
@@ -27,13 +26,14 @@
         android:layout_weight="2"
         android:background="@drawable/shape_from_edit"
         android:gravity="center"
-        android:text="上班时间1"
         android:textColor="@color/text_hine"
         android:textSize="@dimen/text_hine" />
 
     <ImageView
         android:layout_width="0dp"
-        android:layout_height="match_parent"
+        android:layout_height="2px"
+        android:layout_marginTop="16dp"
+        android:background="@color/item_line"
         android:layout_weight="2" />
 
     <TextView
@@ -43,14 +43,12 @@
         android:layout_weight="2"
         android:background="@drawable/shape_from_edit"
         android:gravity="center"
-        android:text="上班时间1"
         android:textColor="@color/text_hine"
         android:textSize="@dimen/text_hine" />
 
     <ImageView
         android:id="@+id/img"
-        android:layout_width="0dp"
+        android:layout_width="wrap_content"
         android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:src="@drawable/oa_next" />
+        android:src="@drawable/search_clear" />
 </LinearLayout>

+ 0 - 2
WeiChat/src/main/res/layout/item_select_active.xml

@@ -33,8 +33,6 @@
             android:layout_centerVertical="true"
             android:layout_marginRight="8dp"
             android:button="@drawable/oa_checkbox"
-            android:clickable="false"
-            android:focusable="false"
             android:focusableInTouchMode="false" />
 
         <ImageView

+ 25 - 0
WeiChat/src/main/res/layout/list_item.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="40dip" >
+
+    <ImageView
+        android:id="@+id/id_treenode_icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:layout_marginLeft="5dp"
+        android:layout_marginRight="5dp"
+        android:src="@drawable/oa_next" />
+
+    <TextView
+        android:id="@+id/id_treenode_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:layout_toRightOf="@id/id_treenode_icon"
+        android:text="@string/app_name"
+        android:textSize="18dip" />
+
+</RelativeLayout>

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

@@ -43,12 +43,6 @@
         <item>10分钟</item>
         <item>11分钟</item>
         <item>12分钟</item>
-        <item>1分钟</item>
-        <item>1分钟</item>
-        <item>1分钟</item>
-        <item>1分钟</item>
-        <item>1分钟</item>
-        <item>1分钟</item>
         <item>13分钟</item>
         <item>14分钟</item>
         <item>15分钟</item>
@@ -112,6 +106,7 @@
     <string name="my_rule_setting">我的考勤规则</string>
 
     <string name="open_location">定位失败,请确认允许程序使用定位权限</string>
+    <string name="allow_location">打开"定位服务"来允许"UU互联"确定你的位置</string>
     <string name="end_less_start">结束时间不能小于或等于开始时间</string>
     <string name="delete_item">确定要删除吗</string>
     <string name="select_must">选择(必填)</string>
@@ -158,7 +153,7 @@
     <string name="send_mail">发送短信</string>
     <string name="add_plan">请添加工作计划!</string>
     <string name="add_learned">请添加心得体会!</string>
-    <string name="networks_out">网络未连接,请检查网络!</string>
+    <string name="networks_out">当前网络不可用,请稍后重试!</string>
     <string name="session_out">会话已断开</string>
     <string name="crm_sale_num">****元  (第**名)</string>
     <string name="not_format_phone">手机格式不正确!</string>
@@ -626,7 +621,4 @@
     <string name="title_activity_process_msg">ProcessMsgActivity</string>
     <string name="title_activity_select_calendar">按时间请假</string>
 
-    <!-- TODO: Remove or change this placeholder text -->
-    <string name="hello_blank_fragment">Hello blank fragment</string>
-
 </resources>

+ 3 - 3
libedittextformlibrary/src/main/java/com/andreabaccega/formedittextvalidator/DomainValidator.java

@@ -1,13 +1,13 @@
 package com.andreabaccega.formedittextvalidator;
 
-import java.util.regex.Pattern;
-
 import android.os.Build;
 import android.util.Patterns;
 
+import java.util.regex.Pattern;
+
 public class DomainValidator extends PatternValidator{
 	public DomainValidator(String _customErrorMessage) {
-		//TODO: Fix the pattern for api level < 8
+		// Fix the pattern for api level < 8
 		super(_customErrorMessage, Build.VERSION.SDK_INT>=8?Patterns.DOMAIN_NAME:Pattern.compile(".*"));
 	}
 }

+ 3 - 3
libedittextformlibrary/src/main/java/com/andreabaccega/formedittextvalidator/WebUrlValidator.java

@@ -1,10 +1,10 @@
 package com.andreabaccega.formedittextvalidator;
 
-import java.util.regex.Pattern;
-
 import android.os.Build;
 import android.util.Patterns;
 
+import java.util.regex.Pattern;
+
 /**
  * Validates a web url in the format:
  * scheme + authority + path
@@ -13,7 +13,7 @@ import android.util.Patterns;
  */
 public class WebUrlValidator extends PatternValidator { 
 	public WebUrlValidator(String _customErrorMessage) {
-		//TODO: Fix the pattern for api level < 8
+		// Fix the pattern for api level < 8
 		super(_customErrorMessage, Build.VERSION.SDK_INT>=8?Patterns.WEB_URL:Pattern.compile(".*"));
 	}
 }

+ 0 - 1
library-swipemenu_lv/src/main/java/com/baoyz/swipemenulistview/SwipeMenuLayout.java

@@ -102,7 +102,6 @@ public class SwipeMenuLayout extends FrameLayout {
 			@Override
 			public boolean onFling(MotionEvent e1, MotionEvent e2,
 					float velocityX, float velocityY) {
-				// TODO
 				if (Math.abs(e1.getX() - e2.getX()) > MIN_FLING
 						&& velocityX < MAX_VELOCITYX) {
 					isFling = true;

+ 1 - 1
pullToRefershLibraryMy/src/main/java/com/handmark/pulltorefresh/library/PullToRefreshBase.java

@@ -1566,7 +1566,7 @@ public abstract class PullToRefreshBase<T extends View> extends LinearLayout imp
 	 * @author Chris Banes
 	 */
 	public static interface OnRefreshListener2<V extends View> {
-		// TODO These methods need renaming to START/END rather than DOWN/UP
+		// These methods need renaming to START/END rather than DOWN/UP
 
 		/**
 		 * onPullDownToRefresh will be called only when the user has Pulled from