Browse Source

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

raomeng 8 years ago
parent
commit
7332ea25d7
81 changed files with 3583 additions and 298 deletions
  1. 11 5
      WeiChat/src/main/AndroidManifest.xml
  2. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectCollisionActivity.java
  3. 6 15
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java
  4. 112 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingDetailActivity.java
  5. 212 110
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingListActivity.java
  6. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/SelectPContactsActivity.java
  7. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/SelectPContactsPresenter.java
  8. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/SelectCollisionAdapter.java
  9. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/SelectPCollisionAdapter.java
  10. 55 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SelectCollisionPresenter.java
  11. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/ISelectActiveView.java
  12. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  13. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/pageforms/FormDetailActivity.java
  14. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskAddB2BActivity.java
  15. BIN
      WeiChat/src/main/res/drawable-xxhdpi/booking_business.png
  16. BIN
      WeiChat/src/main/res/drawable-xxhdpi/booking_personal.png
  17. BIN
      WeiChat/src/main/res/drawable-xxhdpi/booking_service.png
  18. BIN
      WeiChat/src/main/res/drawable-xxhdpi/booking_share.png
  19. 4 3
      WeiChat/src/main/res/layout/activity_booking_detail.xml
  20. 14 11
      WeiChat/src/main/res/layout/activity_booking_list.xml
  21. 20 4
      WeiChat/src/main/res/layout/activity_contacts.xml
  22. 10 3
      WeiChat/src/main/res/layout/item_contact_layout.xml
  23. 1 1
      WeiChat/src/main/res/layout/pop_crm_list.xml
  24. 1 1
      WeiChat/src/main/res/values/strings.xml
  25. 1 4
      app_core/common/src/main/java/com/core/api/wxapi/WBShareActivity.java
  26. 2 1
      app_core/common/src/main/java/com/core/app/MyApplication.java
  27. 2 2
      app_core/common/src/main/java/com/core/model/SelectCollisionTurnBean.java
  28. 1 2
      app_core/common/src/main/java/com/core/model/SelectEmUser.java
  29. 1 0
      app_core/common/src/main/java/com/core/net/http/ViewUtil.java
  30. 1 1
      app_core/common/src/main/java/com/core/widget/view/Activity/SelectActivity.java
  31. 5 5
      app_core/common/src/main/java/com/core/widget/view/selectcalendar/SelectCalendarActivity.java
  32. BIN
      app_core/common/src/main/res/drawable-xxhdpi/book_business.png
  33. BIN
      app_core/common/src/main/res/drawable-xxhdpi/book_personal.png
  34. BIN
      app_core/common/src/main/res/drawable-xxhdpi/book_service.png
  35. BIN
      app_core/common/src/main/res/drawable-xxhdpi/book_share.png
  36. 15 3
      app_core/common/src/main/res/layout/activity_contacts.xml
  37. 1 4
      app_core/common/src/main/res/layout/activity_select.xml
  38. 15 2
      app_core/common/src/main/res/layout/item_booking_list.xml
  39. 10 4
      app_core/common/src/main/res/layout/item_contact_layout.xml
  40. 1 1
      app_core/common/src/main/res/values/strings.xml
  41. 3 3
      app_core/network/build.gradle
  42. 3 1
      app_core/network/src/main/java/com/me/network/app/http/HttpClient.java
  43. 3 3
      app_core/network/src/main/java/com/me/network/app/http/impl/RetrofitImpl.java
  44. 6 0
      app_core/network/src/main/java/com/me/network/app/http/interceptor/LogInterceptor.java
  45. 2 0
      app_modular/appbooking/build.gradle
  46. 6 2
      app_modular/appbooking/src/main/AndroidManifest.xml
  47. 245 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBCompanyListActivity.java
  48. 602 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingAddActivity.java
  49. 677 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingDetailActivity.java
  50. 0 19
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BbookingAddActivity.java
  51. 44 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/MuilSelectBeanActivity.java
  52. 61 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/BBSharesListActivity.java
  53. 168 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/MuiltSelectShareActivity.java
  54. 0 15
      app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/SharesListActivity.java
  55. 17 1
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/BookAdapter.java
  56. 105 0
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemListTypeAdapter.java
  57. 150 0
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/MuiltBookAdapter.java
  58. 46 0
      app_modular/appbooking/src/main/java/com/modular/booking/model/BookingModel.java
  59. 16 0
      app_modular/appbooking/src/main/res/drawable/shape_items_type.xml
  60. 21 0
      app_modular/appbooking/src/main/res/layout/activity_bbcompany_list.xml
  61. 193 1
      app_modular/appbooking/src/main/res/layout/activity_bbooking_add.xml
  62. 258 0
      app_modular/appbooking/src/main/res/layout/activity_bbooking_detail.xml
  63. 9 0
      app_modular/appbooking/src/main/res/layout/activity_muil_select_bean.xml
  64. 4 2
      app_modular/appbooking/src/main/res/layout/activity_shares_list.xml
  65. 101 0
      app_modular/appbooking/src/main/res/layout/item_booking_list_muilt.xml
  66. 80 0
      app_modular/appbooking/src/main/res/layout/item_list_type.xml
  67. 9 0
      app_modular/appbooking/src/main/res/values/strings.xml
  68. 4 0
      app_modular/appcontact/src/main/AndroidManifest.xml
  69. 32 3
      app_modular/appcontact/src/main/java/com/uas/appcontact/adapter/ContactsAdapter.java
  70. 11 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/model/contacts/ContactsModel.java
  71. 152 9
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/ContactsActivity.java
  72. 19 15
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/AboutActivity.java
  73. 2 2
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java
  74. 4 2
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ComplaintDetailActivity.java
  75. 5 1
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/BusinessDetailInfoActivity.java
  76. 2 2
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/TaskAddErpActivity.java
  77. 2 2
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/AddFlihtsActivity.java
  78. 2 2
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/AddMeetingActivity.java
  79. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/AddFlihtsPresenter.java
  80. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/view/IAddFlihtsView.java
  81. 2 2
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/PlatWDdetailyActivity.java

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

@@ -686,7 +686,7 @@
             android:screenOrientation="portrait"
             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
         <activity
-            android:name=".WBShareActivity"
+            android:name="com.core.api.wxapi.WBShareActivity"
             android:configChanges="keyboardHidden|orientation"
             android:screenOrientation="portrait">
             <intent-filter>
@@ -882,12 +882,13 @@
             android:name=".ui.erp.activity.oa.SelectCollisionActivity"
             android:configChanges="keyboardHidden|orientation"
             android:label="@string/select_join_number"
-            android:windowSoftInputMode="stateUnspecified|adjustNothing">
+            android:windowSoftInputMode="stateUnspecified|adjustNothing" >
             <intent-filter>
                 <action android:name="com.modular.main.SelectCollisionActivity" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
+  
 
 
         <!-- 消息红点模块 -->
@@ -983,13 +984,18 @@
         <activity
             android:name=".ui.erp.activity.secretary.SelectPContactsActivity"
             android:windowSoftInputMode="adjustPan" />
-        <activity android:name=".ui.erp.activity.secretary.BookingDetailActivity" />
-        <activity android:name=".ui.erp.activity.secretary.BookingListActivity">
+        <activity android:name=".ui.erp.activity.secretary.BookingDetailActivity" >
             <intent-filter>
-                <action android:name="com.modular.secretary.BookingListActivity" />
+                <action android:name="com.modular.booking.BookingDetailActivity" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
+        <activity android:name=".ui.erp.activity.secretary.BookingListActivity" >
+            <intent-filter>
+                <action android:name="com.modular.booking.BookingListActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>  
+        </activity>
         <activity
             android:name=".ui.erp.activity.secretary.BookingAddActivity"
             android:windowSoftInputMode="adjustPan" />

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

@@ -22,8 +22,8 @@ import com.core.widget.VoiceSearchView;
 import com.core.widget.listener.EditChangeListener;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.adapter.oa.SelectCollisionAdapter;
 import com.xzjmyk.pm.activity.ui.erp.presenter.SelectCollisionPresenter;

+ 6 - 15
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java

@@ -60,8 +60,7 @@ import java.util.regex.Pattern;
  * @author:Arison on 2017/6/22
  */
 public class BookingAddActivity extends OABaseActivity implements HttpImp, View.OnClickListener {
-
-
+    
     private TextView tvBookObject;
     private RelativeLayout companyAddRl;
     private RelativeLayout rlObject;
@@ -72,7 +71,7 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
     private TextView tvBookAddress;
     private double latitude;
     private double longitude;
-    private int imId;
+    private String imId;
     private String startTime;
     private String endTime;
     private EditText et_book_content;
@@ -122,7 +121,7 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
 
                 longitude = Double.valueOf(model.getAb_longitude());
                 latitude = Double.valueOf(model.getAb_latitude());
-                imId = Integer.valueOf(model.getAb_bmanid());
+                imId = model.getAb_bmanid();
 
                 startTime = model.getAb_starttime();
                 endTime = model.getAb_endtime();
@@ -152,9 +151,7 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
         });
     }
 
-    private EditText getEtBookContent() {
-        return (EditText) findViewById(R.id.et_book_content);
-    }
+  
 
     @Override
     public void onClick(View view) {
@@ -226,12 +223,6 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
                 tvBookAddress.setText(poi.address + poi.name);
                 latitude = poi.location.latitude;
                 longitude = poi.location.longitude;
-//                SelectAimModel entity = data.getParcelableExtra("data");
-//                tvBookAddress.setText(entity.getAddress());
-//                if (entity.getLatLng() != null) {
-//                    latitude = entity.getLatLng().latitude;
-//                    longitude = entity.getLatLng().longitude;
-//                }
                 break;
             case 0x24://时间
 
@@ -246,7 +237,7 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
                 // SelectEmUser model = data.getParcelableExtra("data");
                 ContactsModel model = data.getParcelableExtra("data");
                 LogUtil.d("Test",JSON.toJSONString(model));
-                imId = Integer.valueOf(model.getImid());
+                imId = model.getImid();
                 phone = model.getPhone();
                 tvBookObject.setText(model.getName());
                 break;
@@ -404,7 +395,7 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
                         String resutl = JSON.parseObject(msg.getData().getString("result")).getString("result");
                         if (resutl.equals("true")) {
                             ToastMessage("预约成功!");
-                            if (imId == 0) {
+                            if (!StringUtil.isEmpty(imId)) {
                                 invite(phone, "6e554e51-08de-443c-9b6c-f0d6d0d07bb4");
                                 invite(phone, "fd4ac30e-b176-4410-ac0e-e39c8b71dfe0");
                             } else {

+ 112 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingDetailActivity.java

@@ -1,22 +1,31 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.secretary;
 
 import android.content.ComponentName;
+import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.graphics.drawable.BitmapDrawable;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
 import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.WindowManager;
 import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
+import android.widget.AdapterView;
 import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.PopupWindow;
 import android.widget.RelativeLayout;
+import android.widget.SimpleAdapter;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -25,12 +34,15 @@ import com.common.LogUtil;
 import com.common.data.CalendarUtil;
 import com.common.data.DateFormatUtil;
 import com.common.data.StringUtil;
+import com.common.system.DisplayUtil;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.base.HttpImp;
 import com.core.base.OABaseActivity;
 import com.core.model.Friend;
 import com.core.model.OAConfig;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.core.model.XmppMessage;
 import com.core.net.http.ViewUtil;
 import com.core.utils.helper.AvatarHelper;
@@ -40,13 +52,12 @@ import com.core.xmpp.dao.ChatMessageDao;
 import com.core.xmpp.dao.FriendDao;
 import com.core.xmpp.listener.ChatMessageListener;
 import com.core.xmpp.model.ChatMessage;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.modular.booking.model.BookingModel;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectCollisionActivity;
-import com.modular.booking.model.BookingModel;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -55,6 +66,8 @@ import java.util.UUID;
 
 import de.hdodenhof.circleimageview.CircleImageView;
 
+import static com.core.utils.HeightUtils.setListViewHeightBasedOnChildren1;
+
 
 /**
   * @desc:预约详情
@@ -75,8 +88,9 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
     private TextView tvContent;
     private TextView tv_topic;
     private ImageView ivResult;
-    
     private LinearLayout ll_bottom;
+    private LinearLayout ll_refuse;
+
     BookingModel model;
     private boolean isMenuShuffle=false;
     private CoreService mService;
@@ -103,8 +117,10 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
     };
     private void initView() {
         getSupportActionBar().setTitle(getString(R.string.booking_title));
+        
         rvTop = (RelativeLayout) findViewById(R.id.rv_top);
         llLeft = (LinearLayout) findViewById(R.id.ll_left);
+        ll_refuse = (LinearLayout) findViewById(R.id.ll_refuse);
         ivMe = (CircleImageView) findViewById(R.id.iv_me);
         tvMe = (TextView) findViewById(R.id.tv_me);
         ivResultInfo = (ImageView) findViewById(R.id.iv_resultInfo);
@@ -129,8 +145,14 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
             tvTime.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)+"-"+
                     model.getAb_endtime().substring(11,16));
             tvAddress.setText(model.getAb_address());
-            tvContent.setText(model.getAb_content());
+          
             tv_topic.setText(model.getAb_type());
+            if (!StringUtil.isEmpty(model.getAb_reason())){
+                ll_refuse.setVisibility(View.VISIBLE);
+                tvContent.setText(model.getAb_reason());
+            }else{
+                ll_refuse.setVisibility(View.GONE);
+            }
             AvatarHelper.getInstance().display(model.getAb_bmanid(), ivTarget, true, true);
             AvatarHelper.getInstance().display(model.getAb_recordid(), ivMe, true, true);
             ivResultInfo.clearAnimation();
@@ -283,7 +305,8 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
         if (button.getText().equals("拒绝")){
             String content=model.getAb_bman()+"拒绝了您"+time+"的预约计划";
             sendMessage(model.getAb_bmanid(),model.getAb_bman(),model.getAb_recordid(),content);
-            map="{\"ab_confirmstatus \":\"已拒绝\",\"ab_bmanid\":\""+model.getAb_bmanid()+"\"}";
+            showPopupWindow(button);
+            return;
         }
         if (button.getText().equals("取消")){
             if (MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAb_bmanid())){
@@ -295,6 +318,8 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
             }
             map="{\"ab_confirmstatus\":\"已取消\",\"ab_sharestatus\":\"未共享\",\"ab_bmanid\":\"" + model.getAb_bmanid() + "\"}";
         }
+        
+        
         String url = Constants.IM_BASE_URL + "user/appUpdateBooking";
         Map<String, Object> params = new HashMap<>();
         params.put("token", MyApplication.getInstance().mAccessToken);
@@ -379,6 +404,7 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
     public void shareBooking(String id,String imids){
         showLoading();
         String map="{\"ab_bmanid\":\"" + model.getAb_bmanid() + "\",\"as_planid\":\""+id+"\",\"as_userids\":\""+imids+"\"}";
+        LogUtil.d("HttpLogs","map:"+map);
         String url = Constants.IM_BASE_URL + "user/appSharePlan";
         Map<String, Object> params = new HashMap<>();
         params.put("token", MyApplication.getInstance().mAccessToken);
@@ -454,4 +480,84 @@ public class BookingDetailActivity extends OABaseActivity implements HttpImp,Vie
         super.onDestroy();
         unbindService(mConnection);
     }
+
+
+    private PopupWindow popupWindow = null;
+
+    public void showPopupWindow(View parent) {
+        View view = null;
+        WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
+        if (popupWindow == null) {
+            LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            view = layoutInflater.inflate(R.layout.pop_crm_list, null);
+            ListView plist = (ListView) view.findViewById(R.id.mList);
+            final SimpleAdapter adapter = new SimpleAdapter(
+                    this,
+                    getPopData(),
+                    R.layout.item_pop_list,
+                    new String[]{"item_name"}, new int[]{R.id.tv_item_name});
+            plist.setAdapter(adapter);
+            plist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+                @Override
+                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                    position = position + 1;
+                    String  map="";
+                    switch (position) {
+                        case 1:
+            
+                            break;
+                        case 2:
+                         //ab_reason  工作繁忙
+                            map="{\"ab_confirmstatus\":\"已拒绝\",\"ab_reason\":\"工作繁忙\",\"ab_bmanid\":\""+model.getAb_bmanid()+"\"}";
+                            break;
+                        case 3:
+                            //ab_reason  没有必要
+                            map="{\"ab_confirmstatus\":\"已拒绝\",\"ab_reason\":\"没有必要\",\"ab_bmanid\":\""+model.getAb_bmanid()+"\"}";
+                            break;
+                        case 4:
+                            //ab_reason  其它
+                            map="{\"ab_confirmstatus\":\"已拒绝\",\"ab_reason\":\"其它\",\"ab_bmanid\":\""+model.getAb_bmanid()+"\"}";
+                            break;
+                    }
+                    String url = Constants.IM_BASE_URL + "user/appUpdateBooking";
+                    Map<String, Object> params = new HashMap<>();
+                    params.put("token", MyApplication.getInstance().mAccessToken);
+                    params.put("map", map);
+                    params.put("id", model.getAb_id());
+                    LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+                    headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+                    ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, 0x01, null, null, "post");
+                    
+                }
+            });
+
+            popupWindow = new PopupWindow(view, parent.getWidth(), setListViewHeightBasedOnChildren1(plist) + DisplayUtil.dip2px(this, 10));
+        }
+        popupWindow.setFocusable(true);
+        popupWindow.setOutsideTouchable(true);
+        popupWindow.setBackgroundDrawable(new BitmapDrawable());
+        DisplayUtil.backgroundAlpha(this, 0.5f);
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                DisplayUtil.backgroundAlpha(activity, 1f);
+            }
+        });
+        int[] location = new int[2];
+        parent.getLocationOnScreen(location);
+        popupWindow.showAtLocation(parent, Gravity.NO_GRAVITY, location[0],
+                location[1] - popupWindow.getHeight() - 5);
+    }
+
+
+    private List<Map<String, Object>> getPopData() {
+        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
+        String[] lists = getResources().getStringArray(R.array.booking_reject);
+        for (String str : lists) {
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("item_name", str);
+            list.add(map);
+        }
+        return list;
+    }
 }

+ 212 - 110
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingListActivity.java

@@ -33,6 +33,10 @@ import com.core.widget.MyListView;
 import com.core.widget.view.selectcalendar.OACalendarView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.modular.booking.activity.business.BBookingAddActivity;
+import com.modular.booking.activity.business.BBookingDetailActivity;
+import com.modular.booking.activity.shares.BBSharesListActivity;
+import com.modular.booking.activity.shares.MuiltSelectShareActivity;
 import com.modular.booking.adapter.BookAdapter;
 import com.modular.booking.model.BookingModel;
 import com.xzjmyk.pm.activity.R;
@@ -69,11 +73,21 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
     @ViewInject(R.id.sv_top)
     CustomerScrollView sv_top;
 
+    private TextView tvPersonalNum;
+    private TextView mBookPersonal;
+    private TextView tvBusinessNum;
+    private TextView mBookBusiness;
+    private TextView mBookService;
+    private TextView mBookShares;
+
     private EmptyLayout emptyLayout;
     private Date curDate;
     private int posItem;
 
     private ArrayList<BookingModel> mDatas = new ArrayList<>();
+    private ArrayList<BookingModel> mShareDatas = new ArrayList<>();
+    private ArrayList<BookingModel> mShareMuiltDatas = new ArrayList<>();
+
     private BookAdapter mAdapter;
     private OACalendarView calendarView;
     private OACalenderViewPagerAdapter pagerAdapter;//当前Viewpager适配器
@@ -92,36 +106,22 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
     @Override
     protected void onResume() {
         super.onResume();
-//        Intent intent = getIntent();
-//        if (intent != null) {
-//            String cDate = intent.getStringExtra("curDate");
-//            if (!StringUtil.isEmpty(cDate)) {
-//                getIntent().getExtras().putString("curDate","");
-//                Lg.d(cDate);
-//                curDate = DateFormatUtil.getDate4StrDate(cDate, "yyyy-MM-dd");
-////                if (pagerAdapter != null) {
-////                    Lg.d("adapter !null");
-////                    Lg.d("cview:"+calendarView);
-////                    pagerAdapter.setDate(curDate);
-////                   
-////                } 
-//            }
-//        }
         initData(curDate);
     }
 
 
-
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.menu_nearby, menu);
+        getMenuInflater().inflate(R.menu.menu_about, menu);
         return super.onCreateOptionsMenu(menu);
     }
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == R.id.search) {
-            startActivity(new Intent(mContext, BookingAddActivity.class));
+        if (item.getItemId() == R.id.app_about) {
+            Intent intent = new Intent(mContext, MuiltSelectShareActivity.class);
+            intent.putExtra("model", mShareMuiltDatas);
+            startActivity(intent);
         }
 
         if (item.getItemId() == android.R.id.home) {
@@ -137,7 +137,11 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
     private void initEvent() {
         tv_book_me.setOnClickListener(this);
         tv_book_shared.setOnClickListener(this);
-        
+        mBookBusiness.setOnClickListener(this);
+        mBookPersonal.setOnClickListener(this);
+        mBookService.setOnClickListener(this);
+        mBookShares.setOnClickListener(this);
+
         viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
             @Override
             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
@@ -145,7 +149,7 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
 
             @Override
             public void onPageSelected(int position) {
-                LogUtil.d("----------------------------------------------------"+position);
+                LogUtil.d("----------------------------------------------------" + position);
                 Calendar c = Calendar.getInstance();
                 c.setTime(curDate);
                 int day = c.get(Calendar.DAY_OF_MONTH);
@@ -171,10 +175,14 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                 Bundle bundle = new Bundle();
                 bundle.putParcelable("model", viewHolder.model);
                 bundle.putBoolean("isShared", tv_book_shared.isSelected());
-                
-                startActivity(new Intent(mContext, BookingDetailActivity.class)
-                        .putExtras(bundle)
-                );
+                if ("个人".equals(viewHolder.model.getKind())) {
+                    startActivity(new Intent(mContext, BookingDetailActivity.class)
+                            .putExtras(bundle));
+                } else {
+                    startActivity(new Intent(mContext, BBookingDetailActivity.class)
+                            .putExtras(bundle));
+                }
+
             }
         });
 
@@ -187,21 +195,27 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
     }
 
     private void initView() {
-        tv_book_me.setSelected(true);
+        tvPersonalNum = (TextView) findViewById(R.id.tv_personal_num);
+        tvBusinessNum = (TextView) findViewById(R.id.tv_business_num);
+        mBookPersonal = (TextView) findViewById(R.id.mBookPersonal);
+        mBookBusiness = (TextView) findViewById(R.id.mBookBusiness);
+        mBookService = (TextView) findViewById(R.id.mBookService);
+        mBookShares = (TextView) findViewById(R.id.mBookShares);
+
         Intent intent = getIntent();
         if (intent != null) {
             String cDate = intent.getStringExtra("curDate");
             if (!StringUtil.isEmpty(cDate)) {
-                getIntent().getExtras().putString("curDate","");
+                getIntent().getExtras().putString("curDate", "");
                 curDate = DateFormatUtil.getDate4StrDate(cDate, "yyyy-MM-dd");
-            }else{
+            } else {
                 curDate = new Date(System.currentTimeMillis());
             }
-        }else{
+        } else {
             curDate = new Date(System.currentTimeMillis());
         }
-     
 
+        tv_book_me.setSelected(true);
         posItem = OACalenderViewPagerAdapter.MAX_NUM / 2;
         //设置为空显示列表
         emptyLayout = new EmptyLayout(ct, lv_book);
@@ -213,7 +227,7 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
         LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) viewPager.getLayoutParams(); // 取控件mGrid当前的布局参数   搜索
         linearParams.height = (getResources().getDisplayMetrics().heightPixels * 1 / 3);// 当控件的高强制设成50象素
         viewPager.setLayoutParams(linearParams); // 使设置好的布局参数应用到控件myGrid
-        pagerAdapter = new OACalenderViewPagerAdapter(ct,curDate);
+        pagerAdapter = new OACalenderViewPagerAdapter(ct, curDate);
         viewPager.setAdapter(pagerAdapter);
 
         viewPager.setCurrentItem(OACalenderViewPagerAdapter.MAX_NUM / 2);
@@ -225,6 +239,20 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
+            case R.id.mBookPersonal:
+                startActivity(new Intent(mContext, BookingAddActivity.class));
+                break;
+            case R.id.mBookBusiness:
+                startActivity(new Intent(mContext, BBookingAddActivity.class));
+                break;
+            case R.id.mBookService:
+                ToastMessage("暂未开放!");
+                break;
+            case R.id.mBookShares:
+                Intent intent = new Intent(mContext, BBSharesListActivity.class);
+                intent.putExtra("model", mShareDatas);
+                startActivity(intent);
+                break;
             case R.id.tv_book_me:
                 tv_book_shared.setSelected(false);
                 tv_book_me.setSelected(true);
@@ -232,7 +260,6 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                     mAdapter.setType(1);
                 }
                 loadListData();
-
                 break;
             case R.id.tv_book_shared:
                 tv_book_shared.setSelected(true);
@@ -241,7 +268,6 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                     mAdapter.setType(2);
                 }
                 loadListData();
-
                 break;
         }
     }
@@ -287,8 +313,8 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
         Map<String, Object> params = new HashMap<>();
         params.put("token", MyApplication.getInstance().mAccessToken);
         params.put("userid", MyApplication.getInstance().mLoginUser.getUserId());
-        params.put("telephone",MyApplication.getInstance().mLoginUser.getTelephone());
-        params.put("yearmonth",DateFormatUtil.getStrDate4Date(curDate, "yyyyMM"));
+        params.put("telephone", MyApplication.getInstance().mLoginUser.getTelephone());
+        params.put("yearmonth", DateFormatUtil.getStrDate4Date(curDate, "yyyyMM"));
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, 0x01, null, null, "post");
@@ -304,6 +330,7 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                 case 0x01:
                     try {
                         String result = msg.getData().getString("result");
+
                         if (!ListUtils.isEmpty(mDatas)) {
                             mDatas.clear();
                         }
@@ -312,17 +339,81 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                             emptyLayout.showEmpty();
                             return;
                         }
-                        if (tv_book_me.isSelected()) {
-                           
-                            JSONArray jsonArray = JSON.parseArray(JSON.parseObject(result).getString("bookinglist"));
-                            if (jsonArray != null) {
-                                Set<Integer> tags = new HashSet<>();
-                                for (int i = 0; i < jsonArray.size(); i++) {
-                                    JSONObject object = jsonArray.getJSONObject(i);
+                        mShareMuiltDatas.clear();
+//                        if (tv_book_me.isSelected()) {
+                        JSONArray jsonArray = JSON.parseArray(JSON.parseObject(result).getString("bookinglist"));
+                        JSONArray buinessArray = JSON.parseArray(JSON.parseObject(result).getString("businessList"));
+                        if (jsonArray != null) {
+                            Set<Integer> tags = new HashSet<>();
+                            for (int i = 0; i < jsonArray.size(); i++) {
+                                JSONObject object = jsonArray.getJSONObject(i);
+                                BookingModel model = new BookingModel();
+                                model.setAb_address(object.getString("ab_address"));
+                                model.setAb_bman(object.getString("ab_bman"));
+                                model.setAb_bmanid(object.getString("ab_bmanid"));
+                                model.setAd_reason(object.getString("ad_reason"));
+                                model.setAb_reason(object.getString("ab_reason"));
+                                model.setAb_confirmstatus(object.getString("ab_confirmstatus"));
+                                model.setAb_content(object.getString("ab_content"));
+                                model.setAb_endtime(object.getString("ab_endtime"));
+                                model.setAb_id(object.getString("ab_id"));
+                                model.setAb_latitude(object.getString("ab_latitude"));
+                                model.setAb_longitude(object.getString("ab_longitude"));
+                                model.setAb_recorddate(object.getString("ab_recorddate"));
+                                model.setAb_recordid(object.getString("ab_recordid"));
+                                model.setAb_recordman(object.getString("ab_recordman"));
+                                model.setAb_sharestatus(object.getString("ab_sharestatus"));
+                                model.setAb_starttime(object.getString("ab_starttime"));
+                                model.setAb_type(object.getString("ab_type"));
+                                model.setKind(object.getString("kind"));
+                                tags.add(Integer.valueOf(model.getAb_starttime().substring(8, 10)));
+                                if (model.getAb_starttime().contains(DateFormatUtil.getStrDate4Date(curDate, "yyyy-MM-dd"))) {
+                                    mDatas.add(model);
+                                    mShareMuiltDatas.add(model);
+                                }
+                            }
+
+                            if (buinessArray != null) {
+                                for (int i = 0; i < buinessArray.size(); i++) {
+                                    JSONObject object = buinessArray.getJSONObject(i);
+                                    BookingModel bModel = new BookingModel();
+                                    bModel.setAb_address(object.getString("ab_address"));
+                                    bModel.setAb_bman(object.getString("ab_bman"));
+                                    bModel.setAb_bmanid(object.getString("ab_bmanid"));
+                                    bModel.setAd_reason(object.getString("ad_reason"));
+                                    bModel.setAb_reason(object.getString("ab_reason"));
+                                    bModel.setAb_confirmstatus(object.getString("ab_confirmstatus"));
+                                    bModel.setAb_content(object.getString("ab_content"));
+                                    bModel.setAb_endtime(object.getString("ab_endtime"));
+                                    bModel.setAb_id(object.getString("ab_id"));
+                                    bModel.setAb_latitude(object.getString("ab_latitude"));
+                                    bModel.setAb_longitude(object.getString("ab_longitude"));
+                                    bModel.setAb_recorddate(object.getString("ab_recorddate"));
+                                    bModel.setAb_recordid(object.getString("ab_recordid"));
+                                    bModel.setAb_recordman(object.getString("ab_recordman"));
+                                    bModel.setAb_sharestatus(object.getString("ab_sharestatus"));
+                                    bModel.setAb_starttime(object.getString("ab_starttime"));
+                                    bModel.setAb_type(object.getString("ab_type"));
+                                    bModel.setKind(object.getString("kind"));
+                                    tags.add(Integer.valueOf(bModel.getAb_starttime().substring(8, 10)));
+                                    if (bModel.getAb_starttime().contains(DateFormatUtil.getStrDate4Date(curDate, "yyyy-MM-dd"))) {
+                                        mDatas.add(bModel);
+                                        mShareMuiltDatas.add(bModel);
+                                    }
+                                }
+                            }
+
+                            if (DateFormatUtil.getStrDate4Date(curDate, "yyyy-MM-dd").equals(DateFormatUtil.getStrDate4Date(new Date(), "yyyy-MM-dd"))) {
+                                JSONArray tenArray = JSON.parseArray(JSON.parseObject(result).getString("tenlist"));
+
+                                for (int i = 0; i < tenArray.size(); i++) {
+                                    JSONObject object = tenArray.getJSONObject(i);
                                     BookingModel model = new BookingModel();
                                     model.setAb_address(object.getString("ab_address"));
                                     model.setAb_bman(object.getString("ab_bman"));
                                     model.setAb_bmanid(object.getString("ab_bmanid"));
+                                    model.setAd_reason(object.getString("ad_reason"));
+                                    model.setAb_reason(object.getString("ab_reason"));
                                     model.setAb_confirmstatus(object.getString("ab_confirmstatus"));
                                     model.setAb_content(object.getString("ab_content"));
                                     model.setAb_endtime(object.getString("ab_endtime"));
@@ -335,64 +426,93 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                                     model.setAb_sharestatus(object.getString("ab_sharestatus"));
                                     model.setAb_starttime(object.getString("ab_starttime"));
                                     model.setAb_type(object.getString("ab_type"));
-                                    tags.add(Integer.valueOf(model.getAb_starttime().substring(8, 10)));
-                                    if (model.getAb_starttime().contains(DateFormatUtil.getStrDate4Date(curDate, "yyyy-MM-dd"))) {
-                                        mDatas.add(model);
-                                    }
+                                    model.setKind(object.getString("kind"));
+                                    mDatas.add(model);
+                                    mShareMuiltDatas.add(model);
                                 }
-
-                               if (DateFormatUtil.getStrDate4Date(curDate, "yyyy-MM-dd").equals(DateFormatUtil.getStrDate4Date(new Date(), "yyyy-MM-dd"))){
-                                   JSONArray tenArray = JSON.parseArray(JSON.parseObject(result).getString("tenlist"));
-                                   for (int i = 0; i < tenArray.size(); i++) {
-                                       JSONObject object = tenArray.getJSONObject(i);
-                                       BookingModel model = new BookingModel();
-                                       model.setAb_address(object.getString("ab_address"));
-                                       model.setAb_bman(object.getString("ab_bman"));
-                                       model.setAb_bmanid(object.getString("ab_bmanid"));
-                                       model.setAb_confirmstatus(object.getString("ab_confirmstatus"));
-                                       model.setAb_content(object.getString("ab_content"));
-                                       model.setAb_endtime(object.getString("ab_endtime"));
-                                       model.setAb_id(object.getString("ab_id"));
-                                       model.setAb_latitude(object.getString("ab_latitude"));
-                                       model.setAb_longitude(object.getString("ab_longitude"));
-                                       model.setAb_recorddate(object.getString("ab_recorddate"));
-                                       model.setAb_recordid(object.getString("ab_recordid"));
-                                       model.setAb_recordman(object.getString("ab_recordman"));
-                                       model.setAb_sharestatus(object.getString("ab_sharestatus"));
-                                       model.setAb_starttime(object.getString("ab_starttime"));
-                                       model.setAb_type(object.getString("ab_type"));
-                                       mDatas.add(model);
-                                   }
-                               }
-                                
-                                
-                                if (mAdapter != null) {
-                                    mAdapter.setCurrentDate(curDate);
-                                    mAdapter.notifyDataSetChanged();
-                                } else {
-                                    mAdapter = new BookAdapter(mContext, mDatas);
-                                    mAdapter.setCurrentDate(curDate);
-                                    lv_book.setAdapter(mAdapter);
+                                JSONArray btenArray = JSON.parseArray(JSON.parseObject(result).getString("businesstenlist"));
+                                for (int i = 0; i < btenArray.size(); i++) {
+                                    JSONObject object = btenArray.getJSONObject(i);
+                                    BookingModel model = new BookingModel();
+                                    model.setAb_address(object.getString("ab_address"));
+                                    model.setAb_bman(object.getString("ab_bman"));
+                                    model.setAb_bmanid(object.getString("ab_bmanid"));
+                                    model.setAd_reason(object.getString("ad_reason"));
+                                    model.setAb_reason(object.getString("ab_reason"));
+                                    model.setAb_confirmstatus(object.getString("ab_confirmstatus"));
+                                    model.setAb_content(object.getString("ab_content"));
+                                    model.setAb_endtime(object.getString("ab_endtime"));
+                                    model.setAb_id(object.getString("ab_id"));
+                                    model.setAb_latitude(object.getString("ab_latitude"));
+                                    model.setAb_longitude(object.getString("ab_longitude"));
+                                    model.setAb_recorddate(object.getString("ab_recorddate"));
+                                    model.setAb_recordid(object.getString("ab_recordid"));
+                                    model.setAb_recordman(object.getString("ab_recordman"));
+                                    model.setAb_sharestatus(object.getString("ab_sharestatus"));
+                                    model.setAb_starttime(object.getString("ab_starttime"));
+                                    model.setAb_type(object.getString("ab_type"));
+                                    model.setKind(object.getString("kind"));
+                                    mDatas.add(model);
+                                    mShareMuiltDatas.add(model);
                                 }
-                                calendarView.setDecoratDays(tags);
+                            }
+
+
+                            if (mAdapter != null) {
+                                mAdapter.setCurrentDate(curDate);
+                                mAdapter.notifyDataSetChanged();
+                            } else {
+                                mAdapter = new BookAdapter(mContext, mDatas);
+                                mAdapter.setCurrentDate(curDate);
+                                lv_book.setAdapter(mAdapter);
+                            }
+                            calendarView.setDecoratDays(tags);
 //                                Calendar c = Calendar.getInstance();
 //                                c.setTime(curDate);
 //                                int day = c.get(Calendar.DAY_OF_MONTH);
- //                               calendarView.setDownIndex(day);
-                                if (mDatas.size() == 0) {
-                                    emptyLayout.showEmpty();
-                                }
+                            //                               calendarView.setDownIndex(day);
+                            if (mDatas.size() == 0) {
+                                emptyLayout.showEmpty();
+                            }
+                        }
+//                        } else {
+                        mShareDatas.clear();
+                        JSONArray shareArray = JSON.parseArray(JSON.parseObject(result).getString("sharelist"));
+                        JSONArray businessshare = JSON.parseArray(JSON.parseObject(result).getString("businessshare"));
+                        if (shareArray != null) {
+                            for (int i = 0; i < shareArray.size(); i++) {
+                                JSONObject object = shareArray.getJSONObject(i);
+                                BookingModel model = new BookingModel();
+                                model.setAb_address(object.getString("ab_address"));
+                                model.setAb_bman(object.getString("ab_bman"));
+                                model.setAb_bmanid(object.getString("ab_bmanid"));
+                                model.setAd_reason(object.getString("ad_reason"));
+                                model.setAb_reason(object.getString("ab_reason"));
+                                model.setAb_confirmstatus(object.getString("ab_confirmstatus"));
+                                model.setAb_content(object.getString("ab_content"));
+                                model.setAb_endtime(object.getString("ab_endtime"));
+                                model.setAb_id(object.getString("ab_id"));
+                                model.setAb_latitude(object.getString("ab_latitude"));
+                                model.setAb_longitude(object.getString("ab_longitude"));
+                                model.setAb_recorddate(object.getString("ab_recorddate"));
+                                model.setAb_recordid(object.getString("ab_recordid"));
+                                model.setAb_recordman(object.getString("ab_recordman"));
+                                model.setAb_sharestatus(object.getString("ab_sharestatus"));
+                                model.setAb_starttime(object.getString("ab_starttime"));
+                                model.setAb_type(object.getString("ab_type"));
+                                model.setKind(object.getString("kind"));
+                                mShareDatas.add(model);
                             }
-                        } else {
-                            JSONArray jsonArray = JSON.parseArray(JSON.parseObject(result).getString("sharelist"));
-                            if (jsonArray != null) {
-                                Set<Integer> tags = new HashSet<>();
-                                for (int i = 0; i < jsonArray.size(); i++) {
-                                    JSONObject object = jsonArray.getJSONObject(i);
+
+                            if (businessshare != null) {
+                                for (int i = 0; i < businessshare.size(); i++) {
+                                    JSONObject object = businessshare.getJSONObject(i);
                                     BookingModel model = new BookingModel();
                                     model.setAb_address(object.getString("ab_address"));
                                     model.setAb_bman(object.getString("ab_bman"));
                                     model.setAb_bmanid(object.getString("ab_bmanid"));
+                                    model.setAd_reason(object.getString("ad_reason"));
+                                    model.setAb_reason(object.getString("ab_reason"));
                                     model.setAb_confirmstatus(object.getString("ab_confirmstatus"));
                                     model.setAb_content(object.getString("ab_content"));
                                     model.setAb_endtime(object.getString("ab_endtime"));
@@ -405,26 +525,8 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
                                     model.setAb_sharestatus(object.getString("ab_sharestatus"));
                                     model.setAb_starttime(object.getString("ab_starttime"));
                                     model.setAb_type(object.getString("ab_type"));
-                                    tags.add(Integer.valueOf(model.getAb_starttime().substring(8, 10)));
-                                    if (model.getAb_starttime().contains(DateFormatUtil.getStrDate4Date(curDate, "yyyy-MM-dd"))) {
-                                        mDatas.add(model);
-                                    }
-                                }
-                                if (mAdapter != null) {
-                                    mAdapter.setCurrentDate(curDate);
-                                    mAdapter.notifyDataSetChanged();
-                                } else {
-                                    mAdapter = new BookAdapter(mContext, mDatas);
-                                    mAdapter.setCurrentDate(curDate);
-                                    lv_book.setAdapter(mAdapter);
-                                }
-                                calendarView.setDecoratDays(tags);
-//                                Calendar c = Calendar.getInstance();
-//                                c.setTime(curDate);
-//                                int day = c.get(Calendar.DAY_OF_MONTH);
-//                                calendarView.setDownIndex(day);
-                                if (mDatas.size() == 0) {
-                                    emptyLayout.showEmpty();
+                                    model.setKind(object.getString("kind"));
+                                    mShareDatas.add(model);
                                 }
                             }
                         }

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/SelectPContactsActivity.java

@@ -30,8 +30,8 @@ import com.core.utils.sortlist.BaseSortModel;
 import com.core.utils.sortlist.SideBar;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.adapter.oa.SelectPCollisionAdapter;
 import com.xzjmyk.pm.activity.ui.erp.presenter.imp.ISelectActiveView;

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/SelectPContactsPresenter.java

@@ -39,8 +39,8 @@ import com.core.xmpp.CoreService;
 import com.core.xmpp.dao.FriendDao;
 import com.core.xmpp.dao.NewFriendDao;
 import com.core.xmpp.model.AddAttentionResult;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.uas.appcontact.model.contacts.Contacts;
 import com.uas.appcontact.utils.ContactsUtils;
 import com.xzjmyk.pm.activity.R;

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

@@ -13,7 +13,7 @@ import com.common.data.StringUtil;
 import com.core.app.MyApplication;
 import com.core.utils.helper.AvatarHelper;
 import com.core.utils.sortlist.BaseSortModel;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectEmUser;
 import com.xzjmyk.pm.activity.R;
 
 import java.util.List;

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

@@ -15,7 +15,7 @@ import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
 import com.core.utils.helper.AvatarHelper;
 import com.core.utils.sortlist.BaseSortModel;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectEmUser;
 import com.xzjmyk.pm.activity.R;
 
 import java.util.List;

+ 55 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SelectCollisionPresenter.java

@@ -9,7 +9,10 @@ import android.text.TextUtils;
 import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.common.thread.ThreadPool;
@@ -22,8 +25,12 @@ import com.core.utils.CompanyHandlerInfoUtil;
 import com.core.utils.sortlist.BaseComparator;
 import com.core.utils.sortlist.BaseSortModel;
 import com.core.utils.sortlist.PingYinUtil;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
 import com.uas.appcontact.model.contacts.ContactsModel;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.db.dao.ContactsDao;
@@ -67,11 +74,17 @@ public class SelectCollisionPresenter {
             iSelectActiveView.showSureText(selectBean.getSureText());
         if (ListUtils.isEmpty(selects)) {
             if (selectBean.getTitle().equals(StringUtil.getMessage(R.string.select_share_friend))) {//分享好友
-                //企业架构+UU好友
-                loadShareFriendInThread();
+                loadShareFriendInThread(); //企业架构+UU好友
             } else {
-                //企业架构
-                loadDataInThread();
+                switch (selectBean.getResultCode()) {
+                    case 0x001:
+                        
+                        loadBookingCPersons(selectBean.getTitle());
+                        break;
+                    default:
+                        loadDataInThread(); //企业架构
+                        break;
+                }
             }
         } else {
             setUser2Sort(selects, true);
@@ -336,4 +349,40 @@ public class SelectCollisionPresenter {
     }
 
 
+    public void loadBookingCPersons(String name) {
+        iSelectActiveView.showLoading();
+        //https://account.ubtob.com/api/userspace/userSpaceDetail/keyword?keyword=优软科技有限&pageNumber=1
+        HttpClient httpClient = new HttpClient.Builder("https://account.ubtob.com").build();
+        httpClient.Api().send(new HttpClient.Builder()
+                        .url("api/userspace/employees")
+                .add("name",name)
+                        .add("pageNumber","1")
+                .method(Method.GET)
+                        .build(),
+                new ResultSubscriber<>(new ResultListener<Object>() {
+                    @Override
+                    public void onResponse(Object o) {
+                        iSelectActiveView.dimssLoading();
+                        LogUtil.d("ResultSubscriber",""+o.toString());
+                        if (JSONUtil.validate(o.toString())){
+                            JSONArray jsonArray=JSON.parseObject(o.toString()).getJSONArray("listdata");
+                            if (!ListUtils.isEmpty(jsonArray)){
+                                SelectEmUser user = null;
+                                List<SelectEmUser> users = new ArrayList<>();
+                                for (int i=0;i<jsonArray.size();i++){
+                                    user=new SelectEmUser();
+                                    user.setImId(Integer.valueOf(jsonArray.getJSONObject(i).getString("imid")));
+                                    user.setEmName(jsonArray.getJSONObject(i).getString("username"));//员工名
+                                   // user.setPosition(jsonArray.getJSONObject(i).getString("address"));//公司
+                                    user.setEmCode(selectBean.getTitle());//公司名
+                                    user.setDepart(jsonArray.getJSONObject(i).getString("usertel"));//手机号
+                                    users.add(user);
+                                }
+                                setUser2Sort(users,false);
+                            }
+                        }
+                    }
+                }));
+
+    }
 }

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

@@ -2,7 +2,7 @@ package com.xzjmyk.pm.activity.ui.erp.presenter.imp;
 
 import com.core.base.HttpImp;
 import com.core.utils.sortlist.BaseSortModel;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectEmUser;
 
 import java.util.List;
 

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

@@ -275,7 +275,7 @@ public class MessageFragment extends EasyFragment implements IMessageView, View.
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.booking_rl:
-                startActivity(new Intent("com.modular.secretary.BookingListActivity"));
+                startActivity(new Intent("com.modular.booking.BookingListActivity"));
                 tv_book_num.setVisibility(View.GONE);
                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), Constants.SET_BOOKING, true);
                 break;

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/pageforms/FormDetailActivity.java

@@ -48,8 +48,8 @@ import com.core.widget.MyListView;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.uas.appworks.OA.platform.adapter.PlatComAfAdapter;
 import com.uas.appworks.OA.platform.model.PlatComAfBean;
 import com.xzjmyk.pm.activity.R;

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskAddB2BActivity.java

@@ -43,8 +43,8 @@ import com.iflytek.cloud.SpeechError;
 import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectCollisionActivity;
 import com.xzjmyk.pm.activity.ui.erp.view.DateTimePickerDialog;

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


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


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


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


+ 4 - 3
WeiChat/src/main/res/layout/activity_booking_detail.xml

@@ -152,23 +152,24 @@
                         android:textColor="@color/black" />
                 </LinearLayout>
                 <LinearLayout
+                    android:id="@+id/ll_refuse"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal"
-                    android:visibility="gone"
+                    android:orientation="vertical"
                     android:padding="7dp">
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginLeft="20dp"
+                        android:layout_marginBottom="7dp"
                         android:text="@string/booking_content" />
 
                     <TextView
                         android:id="@+id/tv_content"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginLeft="10dp"
+                        android:layout_marginLeft="20dp"
                         android:text="###########################################
 ###########################################################################"
                         android:textColor="@color/black" />

+ 14 - 11
WeiChat/src/main/res/layout/activity_booking_list.xml

@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <com.core.widget.CustomerScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/sv_top"
@@ -53,13 +53,14 @@
                 android:layout_width="0dp"
                 android:layout_height="match_parent">
                 <TextView
-                    android:id="@+id/tv_signin_num"
+                    android:id="@+id/tv_personal_num"
                     android:layout_width="10dp"
                     android:layout_height="10dp"
                     android:layout_marginRight="10dp"
                     android:background="@drawable/hongdian"
                     android:layout_gravity="top|right"
                     android:gravity="center"
+                    android:visibility="gone"
                     android:text=""
                     android:textColor="@android:color/white"
                     android:textSize="10.0dip"
@@ -67,11 +68,11 @@
                     android:layout_alignParentEnd="true"
                     android:layout_alignTop="@+id/signin" />
                 <TextView
-                    android:id="@+id/mbook"
+                    android:id="@+id/mBookPersonal"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:drawablePadding="@dimen/drawable_padding"
-                    android:drawableTop="@drawable/oa_1"
+                    android:drawableTop="@drawable/booking_personal"
                     android:layout_centerInParent="true"
                     android:text="@string/booking_personal"
                     android:textColor="@color/white"
@@ -82,12 +83,13 @@
                 android:layout_width="0dp"
                 android:layout_height="match_parent">
                 <TextView
-                    android:id="@+id/tv_signout_num"
+                    android:id="@+id/tv_business_num"
                     android:layout_width="10dp"
                     android:layout_height="10dp"
                     android:layout_marginRight="10dp"
                     android:background="@drawable/hongdian"
                     android:layout_gravity="top|right"
+                    android:visibility="gone"
                     android:layout_alignParentRight="true"
                     android:gravity="center"
                     android:text=""
@@ -95,37 +97,38 @@
                     android:textSize="10.0dip"
                     />
                 <TextView
-                    android:id="@+id/outoffice"
+                    android:id="@+id/mBookBusiness"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="2dp"
                     android:gravity="center"
+                    
                     android:drawablePadding="@dimen/drawable_padding"
-                    android:drawableTop="@drawable/oa_2"
+                    android:drawableTop="@drawable/booking_business"
                     android:layout_centerInParent="true"
                     android:text="@string/booking_business"
                     android:textColor="@color/white" />
             </RelativeLayout>
 
             <TextView
-                android:id="@+id/worklog"
+                android:id="@+id/mBookService"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="2dp"
                 android:layout_weight="1"
                 android:drawablePadding="@dimen/drawable_padding"
-                android:drawableTop="@drawable/oa_4"
+                android:drawableTop="@drawable/booking_service"
                 android:gravity="center"
                 android:text="@string/booking_service"
                 android:textColor="@color/white" />
             <TextView
-                android:id="@+id/erp"
+                android:id="@+id/mBookShares"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="2dp"
                 android:layout_weight="1"
                 android:drawablePadding="@dimen/drawable_padding"
-                android:drawableTop="@drawable/oa_5"
+                android:drawableTop="@drawable/booking_share"
                 android:gravity="center"
                 android:text="@string/booking_shared"
                 android:textColor="@color/white" />

+ 20 - 4
WeiChat/src/main/res/layout/activity_contacts.xml

@@ -3,8 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context="com.xzjmyk.pm.activity.com.uas.appcontact.ui.activity.ContactsActivity">
+    android:layout_height="match_parent">
     <com.core.widget.VoiceSearchView
         android:id="@+id/voiceSearchView"
         android:layout_width="match_parent"
@@ -13,7 +12,8 @@
         xmlns:ptr="http://schemas.android.com/apk/res-auto"
         android:id="@+id/mList"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_above="@+id/include_tag"
         android:layout_below="@+id/voiceSearchView"
         android:divider="#00000000"
         android:dividerHeight="0dip"
@@ -26,5 +26,21 @@
         ptr:ptrOverScroll="false"
         ptr:ptrScrollingWhileRefreshingEnabled="true"
         ptr:ptrShowIndicator="false" />
-    
+    <LinearLayout
+        android:id="@+id/include_tag"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:clickable="true"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
+        android:orientation="vertical">
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:background="@color/item_line" />
+
+        <include layout="@layout/include_select" />
+    </LinearLayout>
 </RelativeLayout>

+ 10 - 3
WeiChat/src/main/res/layout/item_contact_layout.xml

@@ -16,14 +16,21 @@
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height"
         android:padding="10dp">
-
+        <CheckBox
+            android:id="@+id/cb"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="8dp"
+            android:button="@drawable/oa_checkbox"
+            android:focusableInTouchMode="false" />
         <ImageView
             android:id="@+id/head_img"
             android:layout_width="40dp"
             android:layout_height="40dp"
             android:layout_marginRight="8dp"
-  
-            android:padding="5dp"
+             android:layout_toRightOf="@+id/cb"
+              android:padding="5dp"
             android:src="@drawable/default_ptr_flip" />
 
         <TextView

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

@@ -9,7 +9,7 @@
     app:sl_dy="3dp"
     app:sl_shadowColor="@color/shadow"
     app:sl_shadowRadius="3dp">
-
+ 
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"

+ 1 - 1
WeiChat/src/main/res/values/strings.xml

@@ -1829,7 +1829,7 @@
     <string name="booking_time">时间</string>
     <string name="booking_address">地址</string>
     <string name="booking_topic">主题</string>
-    <string name="booking_content">内容</string>
+    <string name="booking_content">拒绝理由</string>
     <string name="booking_change">变更</string>
     <string name="booking_object">对象</string>
     <string name="booking_object_name">预约对象</string>

+ 1 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/WBShareActivity.java → app_core/common/src/main/java/com/core/api/wxapi/WBShareActivity.java

@@ -1,9 +1,6 @@
-package com.xzjmyk.pm.activity;
+package com.core.api.wxapi;
 
 import com.umeng.socialize.media.WBShareCallBackActivity;
 
-/**
- * Created by wangfei on 15/12/3.
- */
 public class WBShareActivity extends WBShareCallBackActivity{
 }

+ 2 - 1
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -43,6 +43,7 @@ import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
 import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
 import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
 import com.umeng.analytics.MobclickAgent;
+import com.umeng.socialize.Config;
 import com.umeng.socialize.PlatformConfig;
 import com.uuzuche.lib_zxing.activity.ZXingLibrary;
 
@@ -126,7 +127,7 @@ public class MyApplication extends BaseApplication {
         CustomActivityOnCrash.setEnableAppRestart(true);
         //设置重新启动的activity
         //  CustomActivityOnCrash.setRestartActivityClass(SplashActivity.class);
-
+        Config.REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";
         INSTANCE = this;
         ZXingLibrary.initDisplayOpinion(this);
         mRequestQueue = Volley.newRequestQueue(this);

+ 2 - 2
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/model/SelectCollisionTurnBean.java → app_core/common/src/main/java/com/core/model/SelectCollisionTurnBean.java

@@ -1,10 +1,10 @@
-package com.uas.appworks.OA.erp.model;
+package com.core.model;
 
 import android.os.Parcel;
 import android.os.Parcelable;
 
 import com.core.app.MyApplication;
-import com.uas.appworks.R;
+import com.core.app.R;
 
 import java.util.List;
 

+ 1 - 2
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/model/SelectEmUser.java → app_core/common/src/main/java/com/core/model/SelectEmUser.java

@@ -1,10 +1,9 @@
-package com.uas.appworks.OA.erp.model;
+package com.core.model;
 
 import android.os.Parcel;
 import android.os.Parcelable;
 
 import com.common.LogUtil;
-import com.core.model.EmployeesEntity;
 
 /**
  * 通用选择员工和选择部门通用实体类

+ 1 - 0
app_core/common/src/main/java/com/core/net/http/ViewUtil.java

@@ -540,6 +540,7 @@ public class ViewUtil {
             if (loginERPDialog != null) {
                 select = loginERPDialog.getSelectedIndex();
             }
+            if (ct==null)return;
             loginERPDialog = new MaterialDialog.Builder(ct)
                     .title(ct.getString(R.string.user_dialog_company))
                     .items(items)

+ 1 - 1
app_core/common/src/main/java/com/core/widget/view/Activity/SelectActivity.java

@@ -63,7 +63,7 @@ import java.util.List;
  */
 public class SelectActivity extends BaseActivity {
 
-    private ListView list;//列表控件
+    private ListView list;
     private ListAdapter adapter;
     private EmptyLayout emptyLayout;
 

+ 5 - 5
app_core/common/src/main/java/com/core/widget/view/selectcalendar/SelectCalendarActivity.java

@@ -107,7 +107,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
     private String first_start_time;
     private String first_end_time;
     private Boolean breastfeeding = false;
-    private int imId;
+    private String imId;
     private int type;//0:默认erp:1:小秘书
     private ArrayList<DataState> totals = new ArrayList<>();
     private Handler mHandler = new Handler() {
@@ -158,7 +158,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                                 initGridData();
                             }
 
-                            if (imId != 0) {
+                            if (StringUtil.isEmpty(imId)) {
                                 getBookingTime(imId);
                             }
                         }
@@ -343,7 +343,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                     Log.d("currentSelectDate2", currentSelectDate);
                 }
             }
-            imId = intent.getIntExtra("imId", 0);
+            imId = intent.getStringExtra("imId");
         }
         initListener();
 
@@ -1128,7 +1128,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
      * @desc:获取总的时间段
      * @author:Arison on 2017/6/28
      */
-    private void getBookingTotalTime(int imId) {
+    private void getBookingTotalTime(String imId) {
         if (type == 1) {
             String url = Constants.IM_BASE_URL + "user/appUsertime";
             Map<String, Object> params = new HashMap<>();
@@ -1145,7 +1145,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
      * @desc:获取预约时间
      * @author:Arison on 2017/6/28
      */
-    public void getBookingTime(int imId) {
+    public void getBookingTime(String imId) {
         if (type == 1) {
             String url = Constants.IM_BASE_URL + "user/appBusytime";
             String ym;

BIN
app_core/common/src/main/res/drawable-xxhdpi/book_business.png


BIN
app_core/common/src/main/res/drawable-xxhdpi/book_personal.png


BIN
app_core/common/src/main/res/drawable-xxhdpi/book_service.png


BIN
app_core/common/src/main/res/drawable-xxhdpi/book_share.png


+ 15 - 3
app_core/common/src/main/res/layout/activity_contacts.xml

@@ -3,8 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     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.activity.contanct.ContactsActivity">
+    android:layout_height="match_parent">
     <com.core.widget.VoiceSearchView
         android:id="@+id/voiceSearchView"
         android:layout_width="match_parent"
@@ -14,6 +13,7 @@
         android:id="@+id/mList"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        
         android:layout_below="@+id/voiceSearchView"
         android:divider="#00000000"
         android:dividerHeight="0dip"
@@ -26,5 +26,17 @@
         ptr:ptrOverScroll="false"
         ptr:ptrScrollingWhileRefreshingEnabled="true"
         ptr:ptrShowIndicator="false" />
-    
+    <LinearLayout
+        android:id="@+id/include_tag"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:orientation="vertical">
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:background="@color/item_line" />
+
+        <include layout="@layout/include_select" />
+    </LinearLayout>
 </RelativeLayout>

+ 1 - 4
app_core/common/src/main/res/layout/activity_select.xml

@@ -5,14 +5,12 @@
     android:layout_height="match_parent"
     android:focusable="true"
     android:focusableInTouchMode="true"
-    android:orientation="vertical"
-    tools:context="com.xzjmyk.pm.activity.ui.message.SelectActivity">
+    android:orientation="vertical">
 
     <com.core.widget.VoiceSearchView
         android:id="@+id/voiceSearchView"
         android:layout_width="match_parent"
         android:layout_height="48dp" />
-
     <ListView
         android:id="@+id/listview"
         android:layout_width="match_parent"
@@ -20,5 +18,4 @@
         android:divider="@color/item_line"
         android:dividerHeight="1px"
         android:listSelector="@color/item_color1" />
-
 </LinearLayout>

+ 15 - 2
app_core/common/src/main/res/layout/item_booking_list.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
+    android:layout_height="wrap_content"
     android:background="@drawable/selector_oa_itembg"
     android:descendantFocusability="blocksDescendants"
     android:padding="10dp">
@@ -14,7 +14,19 @@
         android:layout_alignParentRight="true"
         android:layout_centerVertical="true"
         android:src="@drawable/oa_doit" />
-
+    <CheckBox
+        android:id="@+id/cb"
+        android:layout_width="15dp"
+        android:layout_height="15dp"
+        android:layout_centerVertical="true"
+        android:layout_marginRight="8dp"
+        android:button="@drawable/oa_checkbox"
+        android:focusableInTouchMode="false" />
+<LinearLayout
+    android:layout_toRightOf="@+id/cb"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
     <LinearLayout
         android:id="@+id/title_ll"
         android:layout_width="match_parent"
@@ -85,4 +97,5 @@
         android:layout_marginTop="10dp"
         android:ellipsize="end"
         android:lines="1" />
+</LinearLayout>
 </RelativeLayout>

+ 10 - 4
app_core/common/src/main/res/layout/item_contact_layout.xml

@@ -4,8 +4,7 @@
     android:layout_height="wrap_content"
     android:background="@drawable/selector_me_menu_item_bg"
     android:orientation="vertical">
-
-
+    
     <View
         android:id="@+id/tag_view"
         android:layout_width="match_parent"
@@ -16,13 +15,20 @@
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height"
         android:padding="10dp">
-
+        <CheckBox
+            android:id="@+id/cb"
+            android:layout_width="15dp"
+            android:layout_height="15dp"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="8dp"
+            android:button="@drawable/oa_checkbox"
+            android:focusableInTouchMode="false" />
         <ImageView
             android:id="@+id/head_img"
             android:layout_width="40dp"
             android:layout_height="40dp"
             android:layout_marginRight="8dp"
-  
+            android:layout_toRightOf="@+id/cb"
             android:padding="5dp"
             android:src="@drawable/default_ptr_flip" />
 

+ 1 - 1
app_core/common/src/main/res/values/strings.xml

@@ -1829,7 +1829,7 @@
     <string name="booking_time">时间</string>
     <string name="booking_address">地址</string>
     <string name="booking_topic">主题</string>
-    <string name="booking_content">内容</string>
+    <string name="booking_content">拒绝理由</string>
     <string name="booking_change">变更</string>
     <string name="booking_object">对象</string>
     <string name="booking_object_name">预约对象</string>

+ 3 - 3
app_core/network/build.gradle

@@ -23,10 +23,11 @@ dependencies {
     androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
-    compile fileTree(dir: 'libs', include: ['*.jar'])
     testCompile deps.junit
     compile deps.appcompatV7
     
+    compile project(":common")
+    
     compile deps.rxjava
     compile deps.rxandroid
     compile deps.okhttp
@@ -34,6 +35,5 @@ dependencies {
     compile deps.converterGson
     compile deps.adapterRxjava
     compile deps.fastjson
-    testCompile deps.junit
-    compile deps.appcompatV7
+
 }

+ 3 - 1
app_core/network/src/main/java/com/me/network/app/http/HttpClient.java

@@ -119,6 +119,8 @@ public class HttpClient {
         //默认的参数
         public Builder() {
             this.method = Method.GET;
+            this.params.put("client","Android Client");
+            this.headers.put("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
         }
 
         public Builder(String url) {
@@ -226,7 +228,7 @@ public class HttpClient {
         }
 
         public HttpClient build() {
-            HttpClient client = newInstance(this);
+            HttpClient client = build(false);
             return client;
         }
 

+ 3 - 3
app_core/network/src/main/java/com/me/network/app/http/impl/RetrofitImpl.java

@@ -71,13 +71,13 @@ public class RetrofitImpl extends HttpBase {
 		LogInterceptor logInterceptor = new LogInterceptor();
 		logInterceptor.setBuilder(mbuilder);
 		okBuilder.addInterceptor(logInterceptor);
-		if(mbuilder.getCacheFileSize()!=0){
+		if (mbuilder.getCacheFileSize() != 0) {
 			okBuilder.cache(new Cache(mbuilder.getCacheFile(), mbuilder.getCacheFileSize()));
-			okBuilder.addInterceptor(new CacheInterceptor(String.valueOf(mbuilder.getCacheTime()),mbuilder.getCacheType()));
+			okBuilder.addInterceptor(
+					new CacheInterceptor(String.valueOf(mbuilder.getCacheTime()), mbuilder.getCacheType()));
 		}
 
 
-
 		OkHttpClient client = okBuilder.build();
 		retrofit = new Retrofit.Builder().client(client)
 				.baseUrl(mbuilder.getBaseUrl())

+ 6 - 0
app_core/network/src/main/java/com/me/network/app/http/interceptor/LogInterceptor.java

@@ -1,5 +1,7 @@
 package com.me.network.app.http.interceptor;
 
+import com.alibaba.fastjson.JSON;
+import com.common.LogUtil;
 import com.me.network.app.http.HttpClient;
 
 import java.io.IOException;
@@ -86,6 +88,10 @@ public class LogInterceptor implements Interceptor {
 			 Logger.i("params:" + JSON.toJSONString(postParam));
 			 Logger.init("PRETTYLOGGER")
 					 .methodCount(1);*/
+			 LogUtil.d("HttpLogs","URL:" + JSON.toJSONString(response.request().url().toString()));
+			 LogUtil.d("HttpLogs","HEADER:"+ JSON.toJSONString(response.request().headers().toMultimap()));
+			 LogUtil.d("HttpLogs","PARAMS:" + JSON.toJSONString(postParam));
+			 LogUtil.d("HttpLogs","TEXT:" + content);
 		}
     
 		return response.newBuilder()

+ 2 - 0
app_modular/appbooking/build.gradle

@@ -24,6 +24,8 @@ dependencies {
     testCompile deps.junit
 
     compile project(':common')
+    compile project(':appcontact')
+
 
     compile 'com.android.support.constraint:constraint-layout:+'
 }

+ 6 - 2
app_modular/appbooking/src/main/AndroidManifest.xml

@@ -3,8 +3,12 @@
     package="com.modular.booking">
 
     <application>
-        <activity android:name=".activity.business.BbookingAddActivity" />
-        <activity android:name=".activity.shares.SharesListActivity"></activity>
+        <activity android:name=".activity.business.BBookingAddActivity" />
+        <activity android:name=".activity.shares.BBSharesListActivity" />
+        <activity android:name=".activity.business.BBCompanyListActivity" />
+        <activity android:name=".activity.business.MuilSelectBeanActivity" />
+        <activity android:name=".activity.business.BBookingDetailActivity" />
+        <activity android:name=".activity.shares.MuiltSelectShareActivity"></activity>
     </application>
 
 </manifest>

+ 245 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBCompanyListActivity.java

@@ -0,0 +1,245 @@
+package com.modular.booking.activity.business;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.CheckBox;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.common.data.StringUtil;
+import com.core.base.BaseActivity;
+import com.core.model.OAConfig;
+import com.core.model.SelectBean;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
+import com.core.utils.CommonUtil;
+import com.core.widget.VoiceSearchView;
+import com.core.widget.view.EmptyLayout;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.impl.RetrofitImpl;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.booking.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+  * @desc:查询公司列表
+  * @author:Arison on 2017/9/8
+  */
+public class BBCompanyListActivity extends BaseActivity {
+    
+    private ListView list;
+    private List<SelectBean> formBean=new ArrayList<>();//数据来源
+    private VoiceSearchView search_edit;
+    private ListAdapter adapter;
+    private EmptyLayout emptyLayout;
+    private boolean isSingle=true;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_bbcompany_list);
+        initView();
+        initEvent();
+    }
+    
+    public void initView(){
+        getSupportActionBar().setTitle("企业");
+        list = (ListView) findViewById(R.id.listview);
+        search_edit = (VoiceSearchView) findViewById(R.id.voiceSearchView);
+        emptyLayout = new EmptyLayout(ct, list);
+        emptyLayout.setShowLoadingButton(false);
+        emptyLayout.setShowEmptyButton(false);
+        emptyLayout.setShowErrorButton(false);
+        emptyLayout.setEmptyViewRes(R.layout.view_empty);
+        adapter = new ListAdapter(formBean);
+        list.setAdapter(adapter);
+    }
+    
+    public void initEvent(){
+        search_edit.setText(CommonUtil.getSharedPreferences(mContext,"erp_commpany"));
+        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                List<SelectBean> formBeaans=  adapter.getFormBeaan();
+                if (!ListUtils.isEmpty(formBeaans)){
+                    String json=formBeaans.get(position).getJson();
+                    String name= JSON.parseObject(json).getString("company");
+                    ToastMessage(name);
+//                    startActivityForResult(new Intent(mContext,MuilSelectBeanActivity.class)
+//                            .putExtra("name",name),0x01);
+                    Intent intent = new Intent("com.modular.main.SelectCollisionActivity");
+                    SelectCollisionTurnBean bean = new SelectCollisionTurnBean()
+                            .setResultCode(0x001)
+                            .setTitle(name)
+                            .setSingleAble(false);
+                    intent.putExtra(OAConfig.MODEL_DATA, bean);
+                    startActivityForResult(intent, 0x01);
+                }
+            }
+        });
+        search_edit.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+            }
+
+            @Override
+            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+            }
+
+            @Override
+            public void afterTextChanged(Editable editable) {
+                if (!StringUtil.isEmpty(editable.toString())){
+                    searchBykey(editable.toString());
+                }else{
+                    formBean.clear();
+                    if (adapter!=null) {
+                        adapter.notifyDataSetChanged();
+                    }
+                }
+                
+            }
+        });
+    }
+
+    class ListAdapter extends BaseAdapter {
+        private List<SelectBean> formBeaan;
+
+        public ListAdapter() {
+        }
+
+        public ListAdapter(List<SelectBean> formBeaan) {
+            this.formBeaan = formBeaan;
+        }
+
+        public void setFormBeaan(List<SelectBean> formBeaan) {
+            this.formBeaan = formBeaan;
+        }
+
+        public List<SelectBean> getFormBeaan() {
+            return formBeaan;
+        }
+
+        @Override
+        public int getCount() {
+            return formBeaan == null ? 0 : formBeaan.size();
+        }
+
+        @Override
+        public Object getItem(int i) {
+            return formBeaan.get(i);
+        }
+
+        @Override
+        public long getItemId(int i) {
+            return i;
+        }
+
+        //临时变量
+        SelectBean chche = null;
+
+        @Override
+        public View getView(int i, View view, ViewGroup viewGroup) {
+           ListAdapter.ViewHoler holer = null;
+            if (view == null) {
+                view = LayoutInflater.from(ct).inflate(R.layout.select_list_item, null);
+                holer = new ListAdapter.ViewHoler();
+                holer.select_scb = (CheckBox) view.findViewById(R.id.select_scb);
+                holer.name_tv = (TextView) view.findViewById(R.id.name_tv);
+                view.setTag(holer);
+            } else {
+                holer = (ListAdapter.ViewHoler) view.getTag();
+            }
+            chche = formBeaan.get(i);
+            holer.name_tv.setText(StringUtil.isEmpty(chche.getName()) ? "" : chche.getName());
+            holer.select_scb.setChecked(chche.isClick());
+            if (isSingle) {
+                holer.select_scb.setVisibility(View.GONE);
+            } else {
+                holer.select_scb.setFocusable(false);
+                holer.select_scb.setClickable(false);
+            }
+            return view;
+        }
+
+        class ViewHoler {
+            CheckBox select_scb;
+            TextView name_tv;
+        }
+    }
+    
+    
+    public void searchBykey(String key){
+        LogUtil.d("ResultSubscriber","key:"+key);
+        HttpClient httpClient=new HttpClient.Builder("https://account.ubtob.com/")
+                .httpBase(RetrofitImpl.getInstance())
+                .build();
+
+        httpClient.Api().send(new HttpClient.Builder("api/userspace/userSpaceDetail/keyword")
+                .add("keyword",key)
+                .add("pageNumber","1")
+                .method(Method.GET)
+                .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                LogUtil.prinlnLongMsg("ResultSubscriber","result:"+ o);
+                if (JSONUtil.validate(o.toString())){
+                    formBean.clear();
+                JSONArray jsonArray= JSON.parseObject(o.toString()).getJSONArray("listdata");
+                if (ListUtils.isEmpty(jsonArray)){
+                    emptyLayout.showEmpty();
+                    adapter.notifyDataSetChanged();
+                    return;
+                }
+                for(int i=0;i<jsonArray.size();i++){
+                    JSONObject jsonObject=jsonArray.getJSONObject(i);
+                    SelectBean selectBean=new SelectBean();
+                    selectBean.setName(jsonObject.getString("company"));
+                    selectBean.setJson(jsonObject.toJSONString());
+                    formBean.add(selectBean);
+                }
+                if (adapter!=null){
+                    adapter.notifyDataSetChanged();
+                }
+                }
+                
+            }
+        }));
+                
+    }
+
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (data==null)return;
+        switch (requestCode){
+            case 0x01:
+            ArrayList<SelectEmUser> selectEmUsers=new ArrayList<>();
+            if (data.getParcelableArrayListExtra("data")==null){
+                setResult(0x02,new Intent().putParcelableArrayListExtra("data",selectEmUsers));
+                finish();
+            }else{
+                selectEmUsers=data.getParcelableArrayListExtra("data") ;
+                setResult(0x02,new Intent().putParcelableArrayListExtra("data",selectEmUsers));
+                finish();   
+            }
+            break;
+        }
+    }
+}

+ 602 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingAddActivity.java

@@ -0,0 +1,602 @@
+package com.modular.booking.activity.business;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.android.volley.AuthFailureError;
+import com.android.volley.Request;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.baidu.mapapi.search.core.PoiInfo;
+import com.common.LogUtil;
+import com.common.data.DateFormatUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.common.data.StringUtil;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
+import com.core.base.OABaseActivity;
+import com.core.model.SelectEmUser;
+import com.core.net.volley.ObjectResult;
+import com.core.net.volley.StringJsonObjectRequest;
+import com.core.utils.CommonUtil;
+import com.core.widget.NScrollerGridView;
+import com.core.widget.view.Activity.SearchLocationActivity;
+import com.core.widget.view.model.SearchPoiParam;
+import com.core.widget.view.selectcalendar.SelectCalendarActivity;
+import com.core.widget.view.selectcalendar.bean.DataState;
+import com.core.xmpp.model.AddAttentionResult;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.booking.R;
+import com.modular.booking.model.BookingModel;
+import com.uas.appcontact.model.contacts.ContactsModel;
+import com.uas.appcontact.ui.activity.ContactsActivity;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @desc:商务预约新增界面
+ * @author:Arison on 2017/9/7
+ */
+public class BBookingAddActivity extends OABaseActivity implements View.OnClickListener {
+    private TextView tvBookObject;
+    private RelativeLayout companyAddRl;
+    private RelativeLayout rlObject;
+    private TextView tvBookTimes;
+    private RelativeLayout remarkRl;
+    private RelativeLayout topic_rl;
+    private RelativeLayout rl_company;
+    private EditText tv_book_topic;
+    private TextView tvBookAddress;
+    private TextView tv_book_company;
+    private double latitude;
+    private double longitude;
+    private String imId;
+    private String startTime;
+    private String endTime;
+
+    private EditText et_book_content;
+    BookingModel model;
+    private Button bt_commit;
+    private NScrollerGridView gv_topic;
+    List<DataState> dataStates;
+    GridDataAdapter adapter;
+    private String phone;
+    private String[] mTypes = {"商务洽谈", "开会", "外出娱乐", "吃饭", "卡拉OK", "其它" };
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_bbooking_add);
+        initView();
+        initEvent();
+    }
+
+    private void initEvent() {
+        findViewById(R.id.submit_btn).setOnClickListener(this);
+        rlObject.setOnClickListener(this);
+        companyAddRl.setOnClickListener(this);
+        remarkRl.setOnClickListener(this);
+        rl_company.setOnClickListener(this);
+        topic_rl.setOnClickListener(this);
+
+        gv_topic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                GridDataAdapter.ViewModle modle = (GridDataAdapter.ViewModle) view.getTag();
+                tv_book_topic.setText(modle.tv_text.getText().toString());
+                tv_book_topic.setSelection(modle.tv_text.getText().toString().length());
+
+            }
+        });
+    }
+
+    public void initView() {
+        getSupportActionBar().setTitle(getString(R.string.booking_business));
+
+        tvBookObject = (TextView) findViewById(R.id.tv_book_object);
+        companyAddRl = (RelativeLayout) findViewById(R.id.company_add_rl);
+        tvBookTimes = (TextView) findViewById(R.id.tv_book_times);
+        remarkRl = (RelativeLayout) findViewById(R.id.remark_rl);
+        rlObject = (RelativeLayout) findViewById(R.id.rl_object);
+        rl_company = (RelativeLayout) findViewById(R.id.rl_company);
+        topic_rl = (RelativeLayout) findViewById(R.id.topic_rl);
+
+        tv_book_company = (TextView) findViewById(R.id.tv_book_company);
+        tvBookAddress = (TextView) findViewById(R.id.tv_book_address);
+        et_book_content = (EditText) findViewById(R.id.et_book_content);
+
+        tv_book_topic = (EditText) findViewById(R.id.tv_book_topic);
+        gv_topic = (NScrollerGridView) findViewById(R.id.gv_topic);
+        bt_commit = (Button) findViewById(R.id.submit_btn);
+        tv_book_topic.setText("商务洽谈");
+
+        if (getIntent() != null && getIntent().getExtras() != null) {
+            model = getIntent().getExtras().getParcelable("model");
+            if (model != null) {
+                tvBookObject.setText(model.getAb_bman());
+                tvBookTimes.setText(model.getAb_starttime().substring(0, 10) + " " + model.getAb_starttime().substring(11, 16) + "-"
+                        + model.getAb_endtime().substring(11, 16));
+                tvBookAddress.setText(model.getAb_address());
+                et_book_content.setText(model.getAb_content());
+                longitude = Double.valueOf(model.getAb_longitude());
+                latitude = Double.valueOf(model.getAb_latitude());
+                tv_book_topic.setText(model.getAb_type());
+                tv_book_company.setText(getIntent().getExtras().getString("companys"));
+                imId = getIntent().getExtras().getString("bmanid");
+                startTime = model.getAb_starttime();
+                endTime = model.getAb_endtime();
+                ((Button) findViewById(R.id.submit_btn)).setText(getString(R.string.booking_change));
+            }
+        }
+
+        dataStates = new ArrayList<>();
+        for (String str : mTypes) {
+            DataState dataState = new DataState();
+            dataState.setValue(str);
+            dataStates.add(dataState);
+        }
+
+        adapter = new GridDataAdapter(this, dataStates);
+        gv_topic.setAdapter(adapter);
+
+
+    }
+
+    @Override
+    public void onClick(View v) {
+        int i = v.getId();
+        if (i == R.id.submit_btn) {
+            if ("提交".equals(((Button)v).getText().toString())){
+                save();
+            }else if("变更".equals(((Button)v).getText().toString())){
+                update();
+            }
+        } else if (i == R.id.topic_rl) {
+           
+        } else if (i == R.id.company_add_rl) {
+            //时间
+            if (!StringUtil.isEmpty(tvBookObject.getText().toString())) {
+                startActivityForResult(new Intent(mContext, SelectCalendarActivity.class)
+                                .putExtra("startDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
+                                .putExtra("endDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
+                                .putExtra("hasMenu", false)
+                                .putExtra("imId", imId)
+                                .putExtra("type", 1)
+                        , 0x24);
+            } else {
+                ToastMessage("请先选择预约对象!");
+            }
+        } else if (i == R.id.remark_rl) {
+            //地址
+            Intent intent = new Intent(ct, SearchLocationActivity.class);
+            SearchPoiParam poiParam = new SearchPoiParam();
+            poiParam.setType(2);
+            poiParam.setTitle("地图搜索");
+            poiParam.setRadius(300);
+            //poiParam.setContrastLatLng(new LatLng(companyLocation.getLocation().longitude, companyLocation.getLocation().latitude));
+            poiParam.setResultCode(0x23);
+            poiParam.setDistanceTag(MyApplication.getInstance().getResources().getString(R.string.rice));
+            intent.putExtra("data", poiParam);
+            startActivityForResult(intent, 0x23);
+        } else if (i == R.id.rl_object) {
+            if (model != null) {
+                ToastMessage("预约对象不能更改!");
+            } else {
+                //"com.modular.contact.ContactsActivity"
+                Intent intent = new Intent(this, ContactsActivity.class);
+                intent.putExtra("type", 1);
+                intent.putExtra("title", getString(R.string.booking_object_name));
+                intent.putExtra("isSingleSelect", false);
+                startActivityForResult(intent, 0x01);
+            }
+        } else if (i == R.id.rl_company) {
+            Intent intent = new Intent(this, BBCompanyListActivity.class);
+            startActivityForResult(intent, 0x02);
+        }
+    }
+
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (data == null) return;
+        switch (requestCode) {
+            case 0x01://对象
+                ArrayList<ContactsModel> models = data.getParcelableArrayListExtra("data");
+                //拿到多个预约对象,需要下拉他们的企业信息
+                StringBuilder names = new StringBuilder("");
+                StringBuilder imids = new StringBuilder("");
+                StringBuilder phones = new StringBuilder("");
+                for (int i = 0; i < models.size(); i++) {
+                    if (i == models.size() - 1) {
+                        names.append(models.get(i).getName());
+                        imids.append(models.get(i).getImid());
+                        phones.append(models.get(i).getPhone());
+                    } else {
+                        names.append(models.get(i).getName() + ",");
+                        imids.append(models.get(i).getImid() + ",");
+                        phones.append(models.get(i).getPhone() + ",");
+                    }
+                }
+                comboxGetCompany(phones.toString());
+                if (StringUtil.isEmpty(tvBookObject.getText().toString())){
+                    tvBookObject.setText(names.toString());
+                }else{
+                    tvBookObject.setText(tvBookObject.getText().toString()+","+names.toString());
+                }
+                break;
+            case 0x02://企业
+                //逻辑说明
+                //预约对象有人,累加(重复的暂时不考虑)
+                //企业有已选择,累加(重复的暂时不考虑)
+                ArrayList<SelectEmUser> selectEmUsers = data.getParcelableArrayListExtra("data");
+                if (!ListUtils.isEmpty(selectEmUsers)) {
+                    StringBuilder nameBuilder = new StringBuilder("");
+                    StringBuilder companyBuilder = new StringBuilder("");
+                    StringBuilder imidBuilder = new StringBuilder("");
+                    StringBuilder phoneBuilder = new StringBuilder("");
+                    for (int i = 0; i < selectEmUsers.size(); i++) {
+                        if (i == selectEmUsers.size() - 1) {
+                            companyBuilder.append(selectEmUsers.get(i).getEmCode());
+                            imidBuilder.append(selectEmUsers.get(i).getImId());
+                            phoneBuilder.append(selectEmUsers.get(i).getDepart());
+                            nameBuilder.append(selectEmUsers.get(i).getEmName());
+                        } else {
+                            companyBuilder.append(selectEmUsers.get(i).getEmCode() + ",");
+                            imidBuilder.append(selectEmUsers.get(i).getImId() + ",");
+                            phoneBuilder.append(selectEmUsers.get(i).getDepart() + ",");
+                            nameBuilder.append(selectEmUsers.get(i).getEmName() + ",");
+                        }
+
+                    }
+                    
+                    String bookObject = tvBookObject.getText().toString();
+                    if (StringUtil.isEmpty(bookObject)){
+                        bookObject=bookObject+nameBuilder;
+                        imId =imId+ imidBuilder.toString();
+                        phone = phone+ phoneBuilder.toString();
+                        tv_book_company.setText(companyBuilder.toString());
+                    }else{
+                        bookObject = bookObject +","+ nameBuilder;
+                        imId = imId+","+ imidBuilder.toString();
+                        phone = phone+","+ phoneBuilder.toString();
+                        tv_book_company.setText(tv_book_company.getText().toString()+","+companyBuilder.toString());
+                    }
+                    tvBookObject.setText(bookObject);
+                }
+                break;
+            case 0x23://地址
+                PoiInfo poi = data.getParcelableExtra("resultKey");
+                if (poi == null) return;
+                tvBookAddress.setText(poi.address + poi.name);
+                latitude = poi.location.latitude;
+                longitude = poi.location.longitude;
+                break;
+            case 0x24://时间
+                startTime = data.getStringExtra("startDate");
+                endTime = data.getStringExtra("endDate");
+                String displayDate = startTime.substring(11, 16) + "-" + endTime.substring(11, 16);
+                tvBookTimes.setText(displayDate);
+                break;
+            case 0x11://主题
+
+                break;
+        }
+    }
+
+    //提交
+    public void save() {
+        if (!CommonUtil.isNetWorkConnected(ct)) {
+            ToastMessage(getString(R.string.networks_out));
+            bt_commit.setEnabled(true);
+            return;
+        }
+        if (StringUtil.isEmpty(tvBookObject.getText().toString())) {
+            ToastMessage("请选择预约对象!");
+            bt_commit.setEnabled(true);
+            return;
+        }
+        if (StringUtil.isEmpty(tvBookTimes.getText().toString())) {
+            ToastMessage("请选择预约时间段!");
+            bt_commit.setEnabled(true);
+            return;
+        }
+        if (StringUtil.isEmpty(tvBookAddress.getText().toString())) {
+            ToastMessage("请选择预约地址!");
+            bt_commit.setEnabled(true);
+            return;
+        }
+        //ab_bcompany
+        String map = "{" +
+                "\"ab_bman\":\"" + tvBookObject.getText().toString() + "\"," +
+                "\"ab_bmanid\":\"" + imId + "\"," +
+                "\"ab_bcompany\":\"" + tv_book_company.getText().toString() + "\"," +
+                "\"ab_btelephone\":\"" + phone + "\"," +
+                "\"ab_starttime\":\"" + startTime + "\"," +
+                "\"ab_endtime\":\"" + endTime + "\"," +
+                "\"ab_recordid\":\"" + MyApplication.getInstance().mLoginUser.getUserId() + "\"," +
+                "\"ab_recordman\":\"" + MyApplication.getInstance().mLoginUser.getNickName() + "\"," +
+//                "\"ab_content\":\"" + content + "\"," +
+                "\"ab_type\":\"" + tv_book_topic.getText().toString() + "\"," +
+                "\"ab_confirmstatus\":\"未确认\"," +
+                "\"ab_address\":\"" + tvBookAddress.getText().toString() + "\"," +
+                "\"ab_longitude\":\"" + longitude + "\",\n" +
+                "\"ab_latitude\":\"" + latitude + "\"" +
+                "}\n";
+        showLoading();
+        LogUtil.d("HttpLogs","map:"+map);
+        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL).isDebug(true).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("user/appSaveBusiness")
+                .header("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8")
+                .add("map", map)
+                .add("token", MyApplication.getInstance().mAccessToken)
+                .method(Method.POST)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                dimssLoading();
+                LogUtil.d("", "" + o.toString());
+                if (JSONUtil.validate(o.toString())) {
+                    String success = JSON.parseObject(o.toString()).getString("result");
+                    if ("true".equals(success)) {
+                        ToastMessage("预约计划生成!");
+                        try {
+                            if (!StringUtil.isEmpty(phone)) {
+                                for (int i=0;i<phone.split(",").length;i++){
+                                    LogUtil.d("HttpLogs","phone:"+phone.split(",")[i]);
+                                    LogUtil.d("HttpLogs","imid:"+imId.split(",")[i]);
+                                    if ("0".equals(imId.split(",")[i])||StringUtil.isEmpty(imId.split(",")[i])){
+                                        invite(phone.split(",")[i], "6e554e51-08de-443c-9b6c-f0d6d0d07bb4");
+                                        invite(phone.split(",")[i], "fd4ac30e-b176-4410-ac0e-e39c8b71dfe0");
+                                    }else{
+                                        invite(phone.split(",")[i], "8636ba7f-a1b4-4062-8571-782035101167");
+                                    }
+                                   
+                                }
+                            }
+                        } catch (Exception e) {
+                            
+                        }
+                        Intent intent = new Intent("com.modular.booking.BookingListActivity");
+                        intent.putExtra("curDate", startTime);
+                        startActivity(intent);
+                    }
+                }
+            }
+        }));
+
+
+    }
+
+    //变更
+    public void update() {
+        String map = "{" +
+                "\"ab_bman\":\"" + tvBookObject.getText().toString() + "\"," +
+                "\"ab_bmanid\":\"" + imId + "\"," +
+                "\"ab_bcompany\":\"" + tv_book_company.getText().toString() + "\"," +
+//                "\"ab_btelephone\":\"" + phone + "\"," +
+                "\"ab_starttime\":\"" + startTime + "\"," +
+                "\"ab_endtime\":\"" + endTime + "\"," +
+                "\"ab_recordid\":\"" + MyApplication.getInstance().mLoginUser.getUserId() + "\"," +
+                "\"ab_recordman\":\"" + MyApplication.getInstance().mLoginUser.getNickName() + "\"," +
+//                "\"ab_content\":\"" + content + "\"," +
+                "\"ab_type\":\"" + tv_book_topic.getText().toString() + "\"," +
+                "\"ab_confirmstatus\":\"未确认\"," +
+                "\"ab_address\":\"" + tvBookAddress.getText().toString() + "\"," +
+                "\"ab_longitude\":\"" + longitude + "\",\n" +
+                "\"ab_latitude\":\"" + latitude + "\"" +
+                "}\n";
+        LogUtil.d("HttpLogs","map:"+map);
+        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL).isDebug(true).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("/user/appUpdateBusiness")
+                .add("map", map)
+                .add("token", MyApplication.getInstance())
+                .add("id", model.getAb_id())
+                .method(Method.POST)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                if (JSONUtil.validate(o.toString())) {
+                    String success = JSON.parseObject(o.toString()).getString("result");
+                    if ("true".equals(success)) {
+                        ToastMessage("预约计划变更成功!");
+                        Intent intent = new Intent("com.modular.booking.BookingListActivity");
+
+                        intent.putExtra("curDate", startTime);
+                        startActivity(intent);
+                    }
+                }
+            }
+        }));
+    }
+
+
+    public void comboxGetCompany(String phones) {
+        HttpClient httpClient = new HttpClient.Builder("https://account.ubtob.com").isDebug(true).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .isDebug(true)
+                .url("api/userspace/userInfos")
+                .add("tel", phones)
+                .method(Method.GET)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                LogUtil.d("ResponseText", "o:" + o.toString());
+                if (JSONUtil.validate(o.toString())) {
+                    JSONArray datas = JSON.parseObject(o.toString()).getJSONArray("listdata");
+                    if (!ListUtils.isEmpty(datas)) {
+                        StringBuilder companyBuilder = new StringBuilder("");
+                        StringBuilder imidBuilder = new StringBuilder("");
+                        StringBuilder phoneBuilder = new StringBuilder("");
+                        StringBuilder nameBuilder = new StringBuilder("");
+                        for (int i = 0; i < datas.size(); i++) {
+                            JSONObject object = datas.getJSONObject(i);
+                            if (i == datas.size() - 1) {
+                                companyBuilder.append(object.getString("company"));
+                                imidBuilder.append(object.getString("imid"));
+                                phoneBuilder.append(object.getString("usertel"));
+                                nameBuilder.append(object.getString("username"));
+                            } else {
+                                companyBuilder.append(object.getString("company") + ",");
+                                imidBuilder.append(object.getString("imid") + ",");
+                                phoneBuilder.append(object.getString("usertel") + ",");
+                                nameBuilder.append(object.getString("username") + ",");
+                            }
+                        }
+                        
+                        if (StringUtil.isEmpty(tv_book_company.getText().toString())){
+                            tv_book_company.setText(companyBuilder.toString());
+                            imId = imidBuilder.toString();
+                            phone = phoneBuilder.toString();
+                        }else{
+                            tv_book_company.setText(tv_book_company.getText().toString()+","+companyBuilder.toString());
+                            imId =imId+","+ imidBuilder.toString();
+                            phone = phone+","+phoneBuilder.toString();
+                            imId= imId.replace("null","");
+                            phone = phone.replace("null","");
+                        }
+                        
+     
+                    }
+
+                }
+            }
+        }));
+    }
+
+    public class GridDataAdapter extends BaseAdapter {
+
+        private Context ct;
+        private List<DataState> mData = new ArrayList<>();
+        private LayoutInflater inflater;
+        private int selected = -1;
+
+        GridDataAdapter(Context ct, List<DataState> data) {
+            this.ct = ct;
+            this.mData = data;
+            this.inflater = LayoutInflater.from(ct);
+        }
+
+        @Override
+        public int getCount() {
+            return mData.size();
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return mData.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        public int getSelected() {
+            return selected;
+        }
+
+        public void setSelected(int selected) {
+            this.selected = selected;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            GridDataAdapter.ViewModle modle = null;
+
+            if (convertView == null) {
+                convertView = inflater.inflate(R.layout.item_simple_text, parent, false);
+                modle = new GridDataAdapter.ViewModle();
+                modle.tv_text = (TextView) convertView.findViewById(R.id.tv_text);
+                convertView.setTag(modle);
+            } else {
+                modle = (GridDataAdapter.ViewModle) convertView.getTag();
+            }
+            modle.tv_text.setText(mData.get(position).getValue());
+            if (mData.get(position).isClicked()) {
+                modle.clicked = true;
+                modle.tv_text.setTextColor(mContext.getResources().getColor(R.color.black));
+                modle.tv_text.setBackgroundResource(R.drawable.bg_select_blue);
+                if (selected == position) {
+                    modle.tv_text.setSelected(true);
+                    modle.tv_text.setTextColor(mContext.getResources().getColor(R.color.white));
+                } else {
+                    modle.tv_text.setSelected(false);
+                }
+            } else {
+                modle.clicked = false;
+                modle.tv_text.setTextColor(mContext.getResources().getColor(R.color.light_gray));
+                modle.tv_text.setBackgroundResource(R.drawable.bg_select_red);
+                modle.tv_text.setSelected(false);
+            }
+            return convertView;
+        }
+
+        class ViewModle {
+            TextView tv_text;
+            boolean clicked;
+        }
+    }
+
+
+
+    private void invite(String user, final String modeid) {
+        final String name = CommonUtil.getName();
+        final String phone = user.trim().replaceAll(" ", "");
+        if (!StringUtil.isMobileNumber(phone)) {
+            showToast("选择人员电话号码为空或是格式不正确", R.color.load_submit);
+            return;
+        }
+        StringJsonObjectRequest<AddAttentionResult> request = new StringJsonObjectRequest<AddAttentionResult>(
+                Request.Method.POST, "http://message.ubtob.com/sms/send", new Response.ErrorListener() {
+            @Override
+            public void onErrorResponse(VolleyError arg0) {
+                dimssLoading();
+            }
+        }, new StringJsonObjectRequest.Listener<AddAttentionResult>() {
+            @Override
+            public void onResponse(ObjectResult<AddAttentionResult> result) {
+                showToast("短信发送成功", R.color.load_submit);
+
+            }
+        }, AddAttentionResult.class, null) {
+            @Override
+            public byte[] getBody() throws AuthFailureError {
+                String param = "{\"receiver\":\"" + phone + "\",\"params\":[\"" + name + "\"],\"templateId\":\"" + modeid + "\"}";
+                LogUtil.i("param=" + param);
+                return param.getBytes();
+            }
+
+            @Override
+            public Map<String, String> getHeaders() {
+                HashMap<String, String> headers = new HashMap<String, String>();
+                headers.put("Accept", "application/json");
+                headers.put("Content-Type", "application/json; charset=UTF-8");
+                return headers;
+            }
+        };
+        MyApplication.getInstance().getFastVolley().addDefaultRequest("Volley", request);
+    }
+}

+ 677 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingDetailActivity.java

@@ -0,0 +1,677 @@
+package com.modular.booking.activity.business;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.WindowManager;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.AdapterView;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.PopupWindow;
+import android.widget.RelativeLayout;
+import android.widget.SimpleAdapter;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.CalendarUtil;
+import com.common.data.DateFormatUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.common.data.StringUtil;
+import com.common.system.DisplayUtil;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
+import com.core.base.OABaseActivity;
+import com.core.model.Friend;
+import com.core.model.OAConfig;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
+import com.core.model.XmppMessage;
+import com.core.utils.helper.AvatarHelper;
+import com.core.widget.MyListView;
+import com.core.xmpp.CoreService;
+import com.core.xmpp.ListenerManager;
+import com.core.xmpp.dao.ChatMessageDao;
+import com.core.xmpp.dao.FriendDao;
+import com.core.xmpp.listener.ChatMessageListener;
+import com.core.xmpp.model.ChatMessage;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.booking.R;
+import com.modular.booking.adapter.ItemListTypeAdapter;
+import com.modular.booking.model.BookingModel;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+import de.hdodenhof.circleimageview.CircleImageView;
+import rx.Observable;
+import rx.functions.Action1;
+
+import static com.core.utils.HeightUtils.setListViewHeightBasedOnChildren1;
+
+/**
+  * @desc:商务预约详情
+  * @author:Arison on 2017/9/11
+  */
+public class BBookingDetailActivity extends OABaseActivity implements View.OnClickListener{
+    
+   private MyListView mListDetail;
+   private RelativeLayout rvTop;
+   private LinearLayout llLeft;
+   private CircleImageView ivMe;
+   private TextView tvMe;
+   private ImageView ivResultInfo;
+   private LinearLayout llRight;
+   private CircleImageView ivTarget;
+   private TextView tvTarget;
+   private TextView tvTime;
+   private TextView tvAddress;
+   private TextView tvContent;
+   private TextView tv_topic;
+   private ImageView ivResult;
+   private LinearLayout ll_bottom;
+
+    private ItemListTypeAdapter mAdapter;
+    private BookingModel model;
+    private boolean isMenuShuffle=false;
+    private Animation animation;
+    private boolean isShared;
+    private LinearLayout ll_refuse;
+    private TextView tv_title;
+    private TextView tv_sender;
+    private CoreService mService;
+
+    private ServiceConnection mConnection = new ServiceConnection() {
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+            mService = null;
+        }
+
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder service) {
+            mService = ((CoreService.CoreServiceBinder) service).getService();
+
+        }
+    };
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        unbindService(mConnection);
+    }
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_bbooking_detail);
+        bindService(CoreService.getIntent(), mConnection, BIND_AUTO_CREATE);
+        initView();
+        initEvent();
+        initData();
+    }
+    Menu mMenu;
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        mMenu=menu;
+        Log.e("isMenuShuffle",isMenuShuffle + "");
+        if(isMenuShuffle)
+        {
+            menu.findItem(R.id.app_about).setVisible(true);
+        }else
+        {
+            menu.findItem(R.id.app_about).setVisible(false);
+        }
+        return super.onPrepareOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.menu_about, menu);
+        return true;
+    }
+
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        int i = item.getItemId();
+        if (i == R.id.app_about) {
+            Intent intent = new Intent("com.modular.main.SelectCollisionActivity");
+            SelectCollisionTurnBean bean = new SelectCollisionTurnBean()
+                    .setTitle(getString(R.string.select_share_friend))
+                    .setSingleAble(false);
+            intent.putExtra(OAConfig.MODEL_DATA, bean);
+            startActivityForResult(intent, 0x02);
+
+        } else if (i == android.R.id.home) {
+            onBackPressed();
+
+        }
+        return true;
+    }
+    
+    public void initView(){
+        getSupportActionBar().setTitle("商务预约");
+        mListDetail=(MyListView) findViewById(R.id.mListDetail);
+        rvTop = (RelativeLayout) findViewById(R.id.rv_top);
+        llLeft = (LinearLayout) findViewById(R.id.ll_left);
+        ivMe = (CircleImageView) findViewById(R.id.iv_me);
+        ll_refuse = (LinearLayout) findViewById(R.id.ll_refuse);
+        tvMe = (TextView) findViewById(R.id.tv_me);
+        tv_sender=(TextView) findViewById(R.id.tv_sender);
+        ivResultInfo = (ImageView) findViewById(R.id.iv_resultInfo);
+        llRight = (LinearLayout) findViewById(R.id.ll_right);
+        ivTarget = (CircleImageView) findViewById(R.id.iv_target);
+        tvTarget = (TextView) findViewById(R.id.tv_target);
+        tvTime = (TextView) findViewById(R.id.tv_time);
+        tvAddress = (TextView) findViewById(R.id.tv_address);
+        tvContent = (TextView) findViewById(R.id.tv_content);
+        tv_topic= (TextView) findViewById(R.id.tv_topic);
+        tv_title=(TextView)findViewById(R.id.tv_title);
+        ivResult = (ImageView) findViewById(R.id.iv_result);
+        ll_bottom= (LinearLayout) findViewById(R.id.ll_bottom);
+        
+        animation= AnimationUtils.loadAnimation(this, R.anim.anim_translate_bookingprogress);
+        if (getIntent()!=null&&getIntent().getExtras()!=null){
+            isShared=getIntent().getExtras().getBoolean("isShared");
+            model=getIntent().getExtras().getParcelable("model");
+            if ("个人".equals(model.getKind())){
+                updateUi(isShared);
+            }else{
+                getApiData();
+            }
+          
+        }
+
+    }
+
+    private void updateUi(boolean isShared) {
+        tvTime.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)+"-"+
+                model.getAb_endtime().substring(11,16));
+        tvAddress.setText(model.getAb_address());
+        if (!StringUtil.isEmpty(model.getAd_reason())){
+            ll_refuse.setVisibility(View.VISIBLE);
+            tvContent.setText(model.getAd_reason());
+        }else{
+            ll_refuse.setVisibility(View.GONE);
+        }
+        tv_topic.setText(model.getAb_type());
+        AvatarHelper.getInstance().display(model.getAb_bmanid(), ivTarget, true, true);
+        AvatarHelper.getInstance().display(model.getAb_recordid(), ivMe, true, true);
+        ivResultInfo.clearAnimation();
+        ll_bottom.setVisibility(View.GONE);
+        tv_sender.setText(model.getAb_recordman());
+        if ("已拒绝".equals(model.getAb_confirmstatus())){
+            ivResult.setImageDrawable(mContext. getResources().getDrawable(R.drawable.icon_jujue1));
+            ivResultInfo.setImageDrawable(mContext. getResources().getDrawable(R.drawable.icon_jujue));
+        }
+        if("未确认".equals(model.getAb_confirmstatus())||"待确认".equals(model.getAb_confirmstatus())){
+            ivResult.setImageDrawable(mContext. getResources().getDrawable(R.drawable.icon_weiqueren));
+            ivResultInfo.setImageDrawable(mContext. getResources().getDrawable(R.drawable.icon_send));
+            //开启动画
+            ll_bottom.setVisibility(View.VISIBLE);
+            ivResultInfo.startAnimation(animation);
+            if( MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAb_recordid())){
+                //发起人
+                ((Button)findViewById(R.id.bt_change)).setText("变更");
+                ((Button)findViewById(R.id.bt_change)).setTextColor(getResources().getColor(R.color.white));
+                ((Button)findViewById(R.id.bt_cancle)).setText("取消");
+            }else{
+                //被预约人
+                ((Button)findViewById(R.id.bt_change)).setText("确认");
+                ((Button)findViewById(R.id.bt_cancle)).setText("拒绝");
+            }
+        }
+        if("已确认".equals(model.getAb_confirmstatus())){
+            ivResult.setImageDrawable(mContext. getResources().getDrawable(R.drawable.icon_yiqueren));
+            ivResultInfo.setImageDrawable(mContext. getResources().getDrawable(R.drawable.icon_queren1));
+            isMenuShuffle=true;
+            if (model.getAb_sharestatus().equals("已共享")){
+                isMenuShuffle=true;
+            }
+            if( MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAb_recordid())){
+                ((Button)findViewById(R.id.bt_change)).setText("变更");
+                ((Button)findViewById(R.id.bt_cancle)).setText("取消");
+                ll_bottom.setVisibility(View.VISIBLE);
+
+            }else{
+                // ll_bottom.setVisibility(View.VISIBLE);
+                ((Button)findViewById(R.id.bt_change)).setText("变更");
+                ((Button)findViewById(R.id.bt_cancle)).setText("取消");
+                ((Button)findViewById(R.id.bt_change)).setVisibility(View.GONE);
+                ll_bottom.setVisibility(View.VISIBLE);
+            }
+        }
+        if("已取消".equals(model.getAb_confirmstatus())){
+            ivResult.setImageDrawable(mContext. getResources().getDrawable(R.drawable.icon_quxiao3));
+            ivResultInfo.setImageDrawable(mContext. getResources().getDrawable(R.drawable.icon_cancle3));
+
+        }
+        //共享状态
+        if (isShared){
+            tvTarget.setText(model.getAb_bman());
+            tvMe.setText(model.getAb_recordman());
+            ll_bottom.setVisibility(View.GONE);
+        }else{
+            if ( MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAb_recordid())){
+                //我是发起人
+                tvMe.setText(getString(R.string.me));
+                tvTarget.setText(model.getAb_bman());
+            }else{
+                //被约 
+                tvTarget.setText(getString(R.string.me));
+                tvMe.setText(model.getAb_recordman());
+            }
+        }
+
+        if(model.getAb_starttime().compareTo(DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))<0){
+            ll_bottom.setVisibility(View.GONE);
+            isMenuShuffle=false;
+        }
+    }
+
+    public void initEvent(){
+        findViewById(R.id.bt_change).setOnClickListener(this);
+        findViewById(R.id.bt_cancle).setOnClickListener(this);
+    }
+    
+    public void initData(){
+        
+        mAdapter=new ItemListTypeAdapter(mContext);
+        mListDetail.setAdapter(mAdapter);
+    }
+    private String companys;
+    private String  bmanid;
+    public void getApiData(){
+        HttpClient httpClient=new HttpClient.Builder("http://113.105.74.140:8092/").build();
+        httpClient.Api()
+                .send(new HttpClient.Builder().url("user/appBusinessDetail")
+                        .add("id", model.getAb_id())
+                        .add("userid",MyApplication.getInstance().mLoginUser.getUserId())
+                        .add("token", MyApplication.getInstance().mAccessToken)
+                        .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+                    
+                    @Override
+                    public void onResponse(Object o) {
+                        LogUtil.d("ResponseText"," onResponse o:"+o.toString());
+                        //mapdetail
+                        if (JSONUtil.validate(o.toString())){
+                            String detail= JSON.parseObject(o.toString()).getString("mapdetail");
+                            String baseInfo=JSON.parseObject(o.toString()).getString("map");
+                            JSONArray baseArray=JSON.parseArray(baseInfo);
+                            JSONObject baseObject=baseArray.getJSONObject(0);
+                            
+                            model= JSON.parseObject(baseObject.toJSONString(),BookingModel.class);
+//                            tvTime.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)
+//                            +"-"+model.getAb_endtime().substring(11,16));
+//                            tv_topic.setText(model.getAb_content());
+//                            tvAddress.setText(model.getAb_address());
+//                            rvTop.setVisibility(View.GONE);
+                            updateUi(isShared);
+                            JSONArray array=JSON.parseArray(detail);
+                            if (!ListUtils.isEmpty(array)){
+                                List<JSONObject> datas=new ArrayList<>();
+                                StringBuilder companysBuilder=new StringBuilder("");
+                                StringBuilder bmanidBuilder=new StringBuilder("");
+                                
+                                for (int i=0;i<array.size();i++) {
+                                    JSONObject object = array.getJSONObject(i);
+                                    companysBuilder.append(object.getString("ad_bcompany")+",");
+                                    bmanidBuilder.append(object.getString("ad_bmanid")+",");
+                                    datas.add(object);
+                                }
+                                companys=companysBuilder.toString();
+                                bmanid= bmanidBuilder.toString();
+                                mAdapter.setObjects(datas);
+                                mAdapter.notifyDataSetChanged();
+                                if(mAdapter.getCount()==0){
+                                    //个人预约界面保持一致
+                                    tv_title.setVisibility(View.GONE);
+                                    mListDetail.setVisibility(View.GONE);
+                                    rvTop.setVisibility(View.VISIBLE);
+                                    tvMe.setText(model.getAb_recordman());
+                                    tvTarget.setText(model.getAb_bman());
+                                    AvatarHelper.getInstance().display(model.getAb_bmanid(), ivTarget, true, true);
+                                    AvatarHelper.getInstance().display(model.getAb_recordid(), ivMe, true, true);
+                                }else{
+                                    tv_title.setVisibility(View.VISIBLE);
+                                    rvTop.setVisibility(View.GONE);
+                                    mListDetail.setVisibility(View.VISIBLE);
+                                }
+                            }
+                        }
+                    }
+                }));
+    }
+
+    @Override
+    public void onClick(View v) {
+        int i = v.getId();
+        if (i == R.id.bt_change) {
+            updateBookingState((Button) v);
+        } else if (i == R.id.bt_cancle) {
+            updateBookingState((Button) v);
+        }
+    }
+
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (data==null)return;
+        switch (requestCode){
+            case 0x02:
+                try {
+                    List<SelectEmUser> employeesList = data.getParcelableArrayListExtra("data");
+                    LogUtil.d("Test",JSON.toJSONString(employeesList));
+                    StringBuilder stringBuilder=new StringBuilder("");
+                    for(int i=0;i<employeesList.size();i++){
+                        if (i==employeesList.size()-1){
+                            stringBuilder.append(employeesList.get(i).getImId());
+                        }else{
+                            stringBuilder.append(employeesList.get(i).getImId());
+                            stringBuilder.append(",");
+                        }
+                    }
+                    LogUtil.d("Test",stringBuilder.toString());
+                    LogUtil.d("Test",model.getAb_id());
+                    if (!StringUtil.isEmpty(stringBuilder.toString())&&!StringUtil.isEmpty(model.getAb_id())){
+                        shareBooking(model.getAb_id(),stringBuilder.toString());
+                    }else {
+                        ToastMessage("共享失败!");
+                    }
+                } catch (Exception e) {
+
+                }
+                break;
+        }
+    }
+
+    public void shareBooking(String id,String imids){
+        showLoading();
+        //map包括planids 个人计划id,bplanids商务计划id,userids共享人员imid,多个id用逗号连接
+        String map="{\"planids\":\"" +"" + "\",\"bplanids\":\""+id+"\",\"userids\":\""+imids+"\"}";
+        LogUtil.d("HttpLogs","map:"+map);
+        HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL).isDebug(true).build();
+        httpClient.Api().send(new HttpClient.Builder()
+        .url("/user/appBatchShare")
+        .add("token", MyApplication.getInstance().mAccessToken)
+        .add("map", map)
+        .method(Method.POST)
+        .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+              dimssLoading();
+                if (JSONUtil.validate(o.toString())){
+                    String result=JSON.parseObject(o.toString()).getString("result");
+                    if ("success".equals(result)){
+                        ToastMessage("分享成功!");
+                    }
+                }
+            }
+        }));
+     
+    }
+    
+    //发送IM消息
+    public void sendMuiltMsg(String content){
+        if (!StringUtil.isEmpty(bmanid)){
+            String [] barray=bmanid.split(",");
+            for (int i=0;i<barray.length;i++){
+                sendMessage(model.getAb_recordid(),model.getAb_recordman(),barray[i],content);
+            }
+        }
+    }
+
+    public void updateBookingState(Button button){
+        // 发起人  可以变更和取消
+        //被预约人  不能变更和取消
+        String map="{\"ab_confirmstatus\":\"已确认\",\"ab_bmanid\":\""+model.getAb_bmanid()+"\"}";
+        String time=model.getAb_starttime().substring(0,16)+"-"+model.getAb_endtime().substring(11,16);
+        if (button.getText().equals("变更")){
+            String content=model.getAb_recordman()+"变更了您"+time+"的预约计划";
+            sendMuiltMsg(content);
+            Bundle bundle=new Bundle();
+            bundle.putParcelable("model",model);
+            if (!StringUtil.isEmpty(companys)){
+                bundle.putString("companys",companys.substring(0,companys.length()-1));
+            }
+            if (!StringUtil.isEmpty(bmanid)){
+                bundle.putString("bmanid",bmanid.substring(0,bmanid.length()-1));
+            }
+            startActivity(new Intent(mContext,BBookingAddActivity.class)
+                    .putExtras(bundle));
+            return;
+        }
+        showLoading();
+        if (button.getText().equals("确认")){
+            String content=model.getAb_bman()+"确认了您"+time+"的预约计划";
+         //   sendMessage(model.getAb_bmanid(),model.getAb_bman(),model.getAb_recordid(),content);
+            String action="已确认";
+            map="{\"ad_confirmstatus\":\""+action+"\",\"ad_bmanid\":\""+MyApplication.getInstance().getLoginUserId()+"\",\"ad_sharestatus\":\"" +"未共享"+ "\"}";
+            sendMuiltMsg(content);
+        }
+        if (button.getText().equals("拒绝")){
+            String content=model.getAb_bman()+"拒绝了您"+time+"的预约计划";
+            sendMuiltMsg(content);
+           // sendMessage(model.getAb_bmanid(),model.getAb_bman(),model.getAb_recordid(),content);
+            showPopupWindow(button);
+            return;
+        }
+        if (button.getText().equals("取消")){
+            if (MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAb_bmanid())){
+                String content=model.getAb_bman()+"取消了您"+time+"的预约计划";
+                ToastMessage("您不能取消!");
+                return;
+            //    sendMessage(model.getAb_bmanid(),model.getAb_bman(),model.getAb_recordid(),content);
+            }else{
+                String content=model.getAb_recordman()+"取消了您"+time+"的预约计划";
+                sendMuiltMsg(content);
+             //   sendMessage(model.getAb_recordid(),model.getAb_recordman(),model.getAb_bmanid(),content);
+            }
+            String action="已取消";
+            map="{\"ad_confirmstatus\":\""+action+"\",\"ad_bmanid\":\""+MyApplication.getInstance().getLoginUserId()+"\",\"ad_sharestatus\":\"" +"未共享"+ "\"}";
+        }
+        actionOrder(model.getAb_id(),map);
+    }
+    
+
+    
+    //确认和取消,拒绝
+    public void actionOrder(String id, String map){
+        LogUtil.d("HttpLogs","id:"+id);
+        LogUtil.d("HttpLogs","map:"+map);
+        HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL).isDebug(true).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("/user/appDoBusiness")
+                .header("Content-Type","application/x-www-form-urlencoded;charset=UTF-8")
+                .add("token", MyApplication.getInstance().mAccessToken)
+                .add("map", map)
+                .add("id",id)
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                dimssLoading();
+                if (JSONUtil.validate(o.toString())){
+                    String result=JSON.parseObject(o.toString()).getString("result");
+                    if ("true".equals(result)){
+                        ToastMessage("操作成功!");
+                        Observable.timer(2, TimeUnit.SECONDS).subscribe(new Action1<Long>() {
+                            @Override
+                            public void call(Long aLong) {
+                              startActivity(new Intent("com.modular.booking.BookingListActivity")
+                                .putExtra("curDate",model.getAb_starttime()));
+                              finish();
+                            }
+                        });
+                    }
+                }else{
+                    ToastMessage("接口异常");
+                }
+            }
+        }));
+        
+    }
+
+
+    private PopupWindow popupWindow = null;
+
+    public void showPopupWindow(View parent) {
+        dimssLoading();
+        View view = null;
+        WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
+        if (popupWindow == null) {
+            LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            view = layoutInflater.inflate(R.layout.pop_crm_list, null);
+            ListView plist = (ListView) view.findViewById(R.id.mList);
+            final SimpleAdapter adapter = new SimpleAdapter(
+                    this,
+                    getPopData(),
+                    R.layout.item_pop_list,
+                    new String[]{"item_name"}, new int[]{R.id.tv_item_name});
+            plist.setAdapter(adapter);
+            plist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+                @Override
+                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                    position = position + 1;
+                    String  map="";
+                    String action="已拒绝";
+                    switch (position) {
+                        case 1:
+
+                            break;
+                        case 2:
+                            map="{\"ad_confirmstatus\":\""+action+"\",\"ad_reason\":\"工作繁忙\",\"ad_bmanid\":\""+MyApplication.getInstance().getLoginUserId()+"\",\"ad_sharestatus\":\"" +"未共享"+ "\"}";
+                            //ab_reason  工作繁忙
+                         
+                            break;
+                        case 3:
+                            //ab_reason  没有必要
+                     
+                            map="{\"ad_confirmstatus\":\""+action+"\",\"ad_reason\":\"沒有必要\",\"ad_bmanid\":\""+MyApplication.getInstance().getLoginUserId()+"\",\"ad_sharestatus\":\"" +"未共享"+ "\"}";
+                            break;
+                        case 4:
+                            //ab_reason  其它
+                    
+                            map="{\"ad_confirmstatus\":\""+action+"\",\"ad_reason\":\"其它\",\"ad_bmanid\":\""+MyApplication.getInstance().getLoginUserId()+"\",\"ad_sharestatus\":\"" +"未共享"+ "\"}";
+                            break;
+                    }
+                     popupWindow.dismiss();
+                    actionOrder(model.getAb_id(),map);
+                }
+            });
+
+            popupWindow = new PopupWindow(view, parent.getWidth(), setListViewHeightBasedOnChildren1(plist) + DisplayUtil.dip2px(this, 10));
+        }
+        popupWindow.setFocusable(true);
+        popupWindow.setOutsideTouchable(true);
+        popupWindow.setBackgroundDrawable(new BitmapDrawable());
+        DisplayUtil.backgroundAlpha(this, 0.5f);
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                DisplayUtil.backgroundAlpha(activity, 1f);
+            }
+        });
+        int[] location = new int[2];
+        parent.getLocationOnScreen(location);
+        popupWindow.showAtLocation(parent, Gravity.NO_GRAVITY, location[0],
+                location[1] - popupWindow.getHeight() - 5);
+    }
+
+
+    private List<Map<String, Object>> getPopData() {
+        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
+        String[] lists = getResources().getStringArray(R.array.booking_reject);
+        for (String str : lists) {
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("item_name", str);
+            list.add(map);
+        }
+        return list;
+    }
+
+
+    private void sendMessage( final String ownerId,String ownerName, final String objectId,  final String text) {
+        ChatMessage message = new ChatMessage();
+        message.setType(XmppMessage.TYPE_TEXT);
+        message.setContent(text);
+        message.setFromUserName(ownerName);
+        message.setFromUserId(ownerId);
+        message.setTimeSend(CalendarUtil.getSecondMillion());
+        if (interprect(ownerId,objectId,message)) {
+            return;
+        }
+        Log.i("wang", "send message:" + JSON.toJSONString(message));
+        // mHasSend = true;
+        Log.d("roamer", "开始发送消息,ChatBottomView的回调 sendmessage");
+        message.setPacketId(UUID.randomUUID().toString().replaceAll("-", ""));
+        ChatMessageDao.getInstance().saveNewSingleChatMessage(ownerId, objectId, message);
+        if (message.getType() == XmppMessage.TYPE_VOICE || message.getType() == XmppMessage.TYPE_IMAGE
+                || message.getType() == XmppMessage.TYPE_VIDEO || message.getType() == XmppMessage.TYPE_FILE) {
+            if (!message.isUpload()) {
+                Log.d("roamer", "去更新服务器的数据");
+                // UploadEngine.uploadImFile(mFriend.getUserId(), message, mUploadResponse);
+
+            } else {
+                Log.d("roamer", "sendChatMessage....");
+                mService.sendChatMessage(objectId, message);
+            }
+        } else {
+            Log.d("roamer", "sendChatMessage");
+            mService.sendChatMessage(objectId, message);
+
+        }
+    }
+
+    /**
+     * 拦截发送的消息
+     *
+     * @param message
+     */
+    public boolean interprect(String ownerId,String objectId,ChatMessage message) {
+        int len = 0;
+        List<Friend> mBlackList = FriendDao.getInstance().getAllBlacklists(ownerId);
+        if (mBlackList!=null) {
+            for (Friend friend : mBlackList) {
+                if (friend.getUserId().equals(objectId)) {
+                    Toast.makeText(mContext, "已经加入黑名单,无法发送消息", Toast.LENGTH_SHORT).show();
+                    len++;
+                }
+            }
+        }
+        Log.d("wang", "....kkkkk");
+        if (len != 0) {
+            // finish();
+            ListenerManager.getInstance().notifyMessageSendStateChange(ownerId, objectId,
+                    message.get_id(), ChatMessageListener.MESSAGE_SEND_FAILED);
+            return true;
+        }
+        return false;
+    }
+}

+ 0 - 19
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BbookingAddActivity.java

@@ -1,19 +0,0 @@
-package com.modular.booking.activity.business;
-
-import android.os.Bundle;
-
-import com.core.base.BaseActivity;
-import com.modular.booking.R;
-
-/**
-  * @desc:商务预约新增界面
-  * @author:Arison on 2017/9/7
-  */
-public class BbookingAddActivity extends BaseActivity {
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_bbooking_add);
-    }
-}

+ 44 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/MuilSelectBeanActivity.java

@@ -0,0 +1,44 @@
+package com.modular.booking.activity.business;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import com.core.base.BaseActivity;
+import com.modular.booking.R;
+
+@Deprecated
+public class MuilSelectBeanActivity extends BaseActivity{
+
+    private String name;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_muil_select_bean);
+        if (getIntent()!=null)
+        {
+            name=getIntent().getStringExtra("name");
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.menu_about, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() ==R.id.app_about) {
+          setResult(0x01,new Intent().putExtra("name",name));
+          finish();
+        }
+
+        if (item.getItemId() == android.R.id.home) {
+            onBackPressed();
+        }
+        return super.onOptionsItemSelected(item);
+
+    }
+}

+ 61 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/BBSharesListActivity.java

@@ -0,0 +1,61 @@
+package com.modular.booking.activity.shares;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+
+import com.core.base.BaseActivity;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.modular.booking.R;
+import com.modular.booking.activity.business.BBookingDetailActivity;
+import com.modular.booking.adapter.BookAdapter;
+import com.modular.booking.model.BookingModel;
+
+import java.util.ArrayList;
+
+/**
+  * @desc:分享列表界面
+  * @author:Arison on 2017/9/7
+  */
+public class BBSharesListActivity extends BaseActivity {
+    
+    private ArrayList<BookingModel> mDatas = new ArrayList<>();
+    private BookAdapter mAdapter;
+    private PullToRefreshListView mlist;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_shares_list);
+        initView();
+    }
+    
+    private void initView(){
+        getSupportActionBar().setTitle("共享预约");
+        mlist= (PullToRefreshListView) findViewById(R.id.shareList);
+        if (getIntent()!=null){
+            mDatas=getIntent().getParcelableArrayListExtra("model");
+            mAdapter=new BookAdapter(mContext,mDatas);
+            mAdapter.setTime(true);
+            mlist.setAdapter(mAdapter);
+        }
+
+        mlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                BookAdapter.ViewHolder viewHolder = (BookAdapter.ViewHolder) view.getTag();
+                Bundle bundle = new Bundle();
+                bundle.putParcelable("model", viewHolder.model);
+                bundle.putBoolean("isShared", true);
+                if ("个人".equals(viewHolder.model.getKind())){
+                    startActivity(new Intent("com.modular.booking.BookingDetailActivity")
+                            .putExtras(bundle)  );
+                }else{
+                    startActivity(new Intent(mContext, BBookingDetailActivity.class)
+                            .putExtras(bundle)  );
+                }
+
+            }
+        });
+    }
+}

+ 168 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/MuiltSelectShareActivity.java

@@ -0,0 +1,168 @@
+package com.modular.booking.activity.shares;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.AdapterView;
+
+import com.alibaba.fastjson.JSON;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.common.data.StringUtil;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
+import com.core.base.OABaseActivity;
+import com.core.model.OAConfig;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.booking.R;
+import com.modular.booking.adapter.MuiltBookAdapter;
+import com.modular.booking.model.BookingModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MuiltSelectShareActivity extends OABaseActivity {
+    private ArrayList<BookingModel> mDatas = new ArrayList<>();
+    private MuiltBookAdapter mAdapter;
+    private PullToRefreshListView mlist;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_shares_list);
+        initView();
+    }
+
+    private void initView() {
+        getSupportActionBar().setTitle("预约分享");
+        mlist = (PullToRefreshListView) findViewById(R.id.shareList);
+        if (getIntent() != null) {
+            mDatas = getIntent().getParcelableArrayListExtra("model");
+            mAdapter = new MuiltBookAdapter(mContext, mDatas);
+            mAdapter.setTime(true);
+            mlist.setAdapter(mAdapter);
+        }
+
+        mlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                MuiltBookAdapter.ViewHolder viewHolder = (MuiltBookAdapter.ViewHolder) view.getTag();
+                boolean isChecked = !viewHolder.checkBox.isChecked();
+                mAdapter.getItem(position - 1).setClick(isChecked);
+                mAdapter.notifyDataSetChanged();
+
+
+            }
+        });
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.menu_about, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.app_about) {
+            Intent intent = new Intent("com.modular.main.SelectCollisionActivity");
+            SelectCollisionTurnBean bean = new SelectCollisionTurnBean()
+                    .setTitle(getString(R.string.select_share_friend))
+                    .setSingleAble(false);
+            intent.putExtra(OAConfig.MODEL_DATA, bean);
+            startActivityForResult(intent, 0x02);
+        }
+
+        if (item.getItemId() == android.R.id.home) {
+            onBackPressed();
+        }
+        return super.onOptionsItemSelected(item);
+
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (data == null) return;
+        switch (requestCode) {
+            case 0x02:
+                try {
+                    List<SelectEmUser> employeesList = data.getParcelableArrayListExtra("data");
+                    LogUtil.d("Test", JSON.toJSONString(employeesList));
+                    StringBuilder stringBuilder = new StringBuilder("");
+                    for (int i = 0; i < employeesList.size(); i++) {
+                        if (i == employeesList.size() - 1) {
+                            stringBuilder.append(employeesList.get(i).getImId());
+                        } else {
+                            stringBuilder.append(employeesList.get(i).getImId());
+                            stringBuilder.append(",");
+                        }
+                    }
+                    LogUtil.d("Test", stringBuilder.toString());
+                    List<BookingModel> models = mAdapter.getDatas();
+                    StringBuilder planids = new StringBuilder("");
+                    StringBuilder bplanids = new StringBuilder("");
+                    for (int i = 0; i < models.size(); i++) {
+                        if (models.get(i).isClick) {
+                            if ("个人".equals(models.get(i).getKind())) {
+                                planids.append(models.get(i).getAb_id() + ",");
+                            } else {
+                                bplanids.append(models.get(i).getAb_id() + ",");
+                            }
+                        }
+                    }
+//                  
+                    if (!StringUtil.isEmpty(stringBuilder.toString())) {
+                        String p="";
+                        String b="";
+                        if (!StringUtil.isEmpty(planids.toString())){
+                            p=planids.substring(0,planids.length()-1);
+                        }
+                        if (!StringUtil.isEmpty(bplanids.toString())){
+                           b= bplanids.substring(0,bplanids.length()-1);
+                        }
+                        shareBooking(p, b, stringBuilder.toString());
+                    } else {
+                        ToastMessage("共享失败!");
+                    }
+                } catch (Exception e) {
+
+                }
+                break;
+        }
+    }
+
+
+    public void shareBooking(String planids, String bplanids, String imids) {
+        showLoading();
+        //map包括planids 个人计划id,bplanids商务计划id,userids共享人员imid,多个id用逗号连接
+        String map = "{\"planids\":\"" + planids + "\",\"bplanids\":\"" + bplanids + "\",\"userids\":\"" + imids + "\"}";
+        LogUtil.d("HttpLogs", "map:" + map);
+        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL).isDebug(true).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("/user/appBatchShare")
+                .add("token", MyApplication.getInstance().mAccessToken)
+                .add("map", map)
+                .method(Method.POST)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                dimssLoading();
+                if (JSONUtil.validate(o.toString())){
+                    String result=JSON.parseObject(o.toString()).getString("result");
+                    if ("success".equals(result)){
+                        ToastMessage("分享成功!");
+                    }
+                }
+            }
+        }));
+
+    }
+}

+ 0 - 15
app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/SharesListActivity.java

@@ -1,15 +0,0 @@
-package com.modular.booking.activity.shares;
-
-import android.os.Bundle;
-
-import com.core.base.BaseActivity;
-import com.modular.booking.R;
-
-public class SharesListActivity extends BaseActivity {
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_shares_list);
-    }
-}

+ 17 - 1
app_modular/appbooking/src/main/java/com/modular/booking/adapter/BookAdapter.java

@@ -24,6 +24,16 @@ public class BookAdapter extends BaseAdapter {
     private Context ct;
     private int type=1;
     private Date currentDate;
+    
+    private boolean isTime=false;
+
+    public boolean isTime() {
+        return isTime;
+    }
+
+    public void setTime(boolean time) {
+        isTime = time;
+    }
 
     public Date getCurrentDate() {
         return currentDate;
@@ -88,10 +98,16 @@ public class BookAdapter extends BaseAdapter {
                 holder.title_tv.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)+"-"+
                         model.getAb_endtime().substring(11,16));
             }else{
+             
+               
+            }
+            if (isTime){
+                holder.title_tv.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)+"-"+
+                        model.getAb_endtime().substring(11,16));
+            }else{
                 holder.title_tv.setText(model.getAb_starttime().substring(11,16)+"-"+
                         model.getAb_endtime().substring(11,16));
             }
-          
            
             holder.status_tv.setText(model.getAb_confirmstatus());
            

+ 105 - 0
app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemListTypeAdapter.java

@@ -0,0 +1,105 @@
+package com.modular.booking.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.alibaba.fastjson.JSONObject;
+import com.common.data.StringUtil;
+import com.modular.booking.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by Arison on 2017/9/11.
+ */
+
+public class ItemListTypeAdapter extends BaseAdapter {
+
+    private List<JSONObject> objects = new ArrayList<JSONObject>();
+
+    private Context context;
+    private LayoutInflater layoutInflater;
+
+    public ItemListTypeAdapter(Context context) {
+        this.context = context;
+        this.layoutInflater = LayoutInflater.from(context);
+    }
+
+    public List<JSONObject> getObjects() {
+        return objects;
+    }
+
+    public void setObjects(List<JSONObject> objects) {
+        this.objects = objects;
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public JSONObject getItem(int position) {
+        return objects.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = layoutInflater.inflate(R.layout.item_list_type, null);
+            convertView.setTag(new ViewHolder(convertView));
+        }
+        initializeViews( getItem(position), (ViewHolder) convertView.getTag());
+        return convertView;
+    }
+
+    private void initializeViews(JSONObject object, ViewHolder holder) {
+         holder.tvNameValue.setText(object.getString("ad_bman"));
+         holder.tvCompanyValue.setText(object.getString("ad_bcompany"));
+         holder.tvStatus.setText(object.getString("ad_confirmstatus"));
+         if ("未确认".equals(object.getString("ad_confirmstatus"))){
+             holder.tvStatus.setTextColor(context.getResources().getColor(R.color.red));
+         }else if ("已确认".equals(object.getString("ad_confirmstatus"))){
+             holder.tvStatus.setTextColor(context.getResources().getColor(R.color.titleBlue));
+         }
+         if (!StringUtil.isEmpty(object.getString("ad_reason"))&&!"null".equals(object.getString("ad_reason"))){
+             holder.tvReasonValue.setText(object.getString("ad_reason"));
+             holder.tvReason.setVisibility(View.VISIBLE);
+             holder.tvReasonValue.setVisibility(View.VISIBLE);
+         }else{
+             holder.tvReason.setVisibility(View.GONE);
+             holder.tvReasonValue.setVisibility(View.GONE);
+         }
+    }
+
+    protected class ViewHolder {
+        private TextView tvName;
+        private TextView tvNameValue;
+        private TextView tvStatus;
+        private TextView tvCompany;
+        private TextView tvCompanyValue;
+        private TextView tvReason;
+        private TextView tvReasonValue;
+        public ViewHolder(View view) {
+            tvName = (TextView) view.findViewById(R.id.tvName);
+            tvNameValue = (TextView) view.findViewById(R.id.tvNameValue);
+            tvStatus = (TextView) view.findViewById(R.id.tv_status);
+            tvCompany = (TextView) view.findViewById(R.id.tvCompany);
+            tvCompanyValue = (TextView) view.findViewById(R.id.tvCompanyValue);
+
+            tvReason =(TextView) view.findViewById(R.id.tvReason);
+            tvReasonValue =(TextView) view.findViewById(R.id.tvReasonValue);
+        }
+    }
+}
+

+ 150 - 0
app_modular/appbooking/src/main/java/com/modular/booking/adapter/MuiltBookAdapter.java

@@ -0,0 +1,150 @@
+package com.modular.booking.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.CheckBox;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.common.data.DateFormatUtil;
+import com.modular.booking.R;
+import com.modular.booking.model.BookingModel;
+
+import java.util.ArrayList;
+import java.util.Date;
+
+/**
+ * Created by Arison on 2017/6/23.
+ */
+
+public class MuiltBookAdapter extends BaseAdapter {
+    
+    private Context ct;
+    private int type=1;
+    private Date currentDate;
+    private boolean isTime=false;
+
+    public boolean isTime() {
+        return isTime;
+    }
+
+    public void setTime(boolean time) {
+        isTime = time;
+    }
+
+    public Date getCurrentDate() {
+        return currentDate;
+    }
+
+    public void setCurrentDate(Date currentDate) {
+        this.currentDate = currentDate;
+    }
+
+    private ArrayList<BookingModel> datas=new ArrayList<>();
+    
+    public MuiltBookAdapter(Context ct, ArrayList<BookingModel> data){
+        this.ct=ct;
+        this.datas=data;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    @Override
+    public int getCount() {
+        return datas!=null?datas.size():0;
+    }
+
+    @Override
+    public BookingModel getItem(int position) {
+        return   datas.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        ViewHolder holder = null;
+        if (convertView == null) {
+            holder = new ViewHolder();
+            convertView = LayoutInflater.from(ct).inflate(R.layout.item_booking_list_muilt, null);
+            holder.status_img = (ImageView) convertView.findViewById(R.id.status_img);
+            holder.share_img = (ImageView) convertView.findViewById(R.id.iv_share);
+            holder.title_tv = (TextView) convertView.findViewById(R.id.title_tv);
+            holder.status_tv = (TextView) convertView.findViewById(R.id.status_tv);
+            holder.checkBox=(CheckBox) convertView.findViewById(com.uas.appcontact.R.id.cb);
+            holder.address_tv = (TextView) convertView.findViewById(R.id.address_tv);
+            holder.handler_tv = (TextView) convertView.findViewById(R.id.handler_tv);
+            holder.topic_tv=(TextView) convertView.findViewById(R.id.topic_tv);
+            convertView.setTag(holder);
+        } else {
+            holder = (ViewHolder) convertView.getTag();
+        }
+        try {
+            BookingModel model=datas.get(position);
+            holder.model=model;
+
+            if (DateFormatUtil.getStrDate4Date(currentDate, "yyyy-MM-dd").equals(DateFormatUtil.getStrDate4Date(new Date(), "yyyy-MM-dd"))){
+                holder.title_tv.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)+"-"+
+                        model.getAb_endtime().substring(11,16));
+            }else{
+                
+            }
+            if (isTime){
+                holder.title_tv.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)+"-"+
+                        model.getAb_endtime().substring(11,16));
+            }else{
+                holder.title_tv.setText(model.getAb_starttime().substring(11,16)+"-"+
+                        model.getAb_endtime().substring(11,16));
+            }
+           
+            holder.status_tv.setText(model.getAb_confirmstatus());
+           
+            if(model.getAb_sharestatus().equals("已共享")){
+                holder.share_img.setVisibility(View.VISIBLE);
+            }else{
+                holder.share_img.setVisibility(View.GONE);
+            }
+            if (type==2){
+                holder.handler_tv.setText(model.getAb_recordman()+"—>"+model.getAb_bman());
+            }else{
+                holder.handler_tv.setText(model.getAb_recordman()+"—>"+model.getAb_bman());
+            }
+            
+            holder.topic_tv.setText(model.getAb_type());
+            holder.model.setAb_type(model.getAb_type());
+
+            holder.checkBox.setChecked(model.isClick);
+            holder.checkBox.setFocusable(false);
+            holder.checkBox.setClickable(false);
+        } catch (Exception e) {
+        }
+        return convertView;
+    }
+
+    public class ViewHolder {
+        public ImageView status_img,share_img;
+        public TextView title_tv, status_tv, address_tv, handler_tv,topic_tv;
+        public BookingModel model;
+        public CheckBox checkBox;
+    }
+
+    public ArrayList<BookingModel> getDatas() {
+        return datas;
+    }
+
+    public void setDatas(ArrayList<BookingModel> datas) {
+        this.datas = datas;
+    }
+}

+ 46 - 0
app_modular/appbooking/src/main/java/com/modular/booking/model/BookingModel.java

@@ -24,6 +24,20 @@ public class BookingModel implements Parcelable {
     private String ab_sharestatus;
     private String ab_starttime;
     private String ab_type;
+    private String kind;
+    
+    private String ab_reason;//个人拒绝原因
+    private String ad_reason;//商务拒绝原因
+
+    public boolean isClick() {
+        return isClick;
+    }
+
+    public void setClick(boolean click) {
+        isClick = click;
+    }
+
+    public boolean isClick = false;
 
     public String getAb_type() {
         return ab_type;
@@ -145,6 +159,30 @@ public class BookingModel implements Parcelable {
         return ab_starttime;
     }
 
+    public String getKind() {
+        return kind;
+    }
+
+    public void setKind(String kind) {
+        this.kind = kind;
+    }
+
+    public String getAd_reason() {
+        return ad_reason;
+    }
+
+    public void setAd_reason(String ad_reason) {
+        this.ad_reason = ad_reason;
+    }
+
+    public String getAb_reason() {
+        return ab_reason;
+    }
+
+    public void setAb_reason(String ab_reason) {
+        this.ab_reason = ab_reason;
+    }
+
     public BookingModel() {
     }
 
@@ -170,6 +208,10 @@ public class BookingModel implements Parcelable {
         dest.writeString(this.ab_sharestatus);
         dest.writeString(this.ab_starttime);
         dest.writeString(this.ab_type);
+        dest.writeString(this.kind);
+        dest.writeString(this.ab_reason);
+        dest.writeString(this.ad_reason);
+        dest.writeByte(this.isClick ? (byte) 1 : (byte) 0);
     }
 
     protected BookingModel(Parcel in) {
@@ -188,6 +230,10 @@ public class BookingModel implements Parcelable {
         this.ab_sharestatus = in.readString();
         this.ab_starttime = in.readString();
         this.ab_type = in.readString();
+        this.kind = in.readString();
+        this.ab_reason = in.readString();
+        this.ad_reason = in.readString();
+        this.isClick = in.readByte() != 0;
     }
 
     public static final Creator<BookingModel> CREATOR = new Creator<BookingModel>() {

+ 16 - 0
app_modular/appbooking/src/main/res/drawable/shape_items_type.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+    <corners
+        android:topLeftRadius="0.1dp"
+        android:topRightRadius="0.1dp"
+        android:bottomRightRadius="0.1dp"
+        android:bottomLeftRadius="0.1dp">
+    </corners>
+    <stroke
+        android:width="0.1dp"
+        android:color="#999999">
+    </stroke>
+    <solid
+        android:color="#fefefe">
+    </solid>
+</shape>

+ 21 - 0
app_modular/appbooking/src/main/res/layout/activity_bbcompany_list.xml

@@ -0,0 +1,21 @@
+<?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:focusable="true"
+    android:focusableInTouchMode="true"
+    android:orientation="vertical">
+
+    <com.core.widget.VoiceSearchView
+        android:id="@+id/voiceSearchView"
+        android:layout_width="match_parent"
+        android:layout_height="48dp" />
+
+    <ListView
+        android:id="@+id/listview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:divider="@color/item_line"
+        android:dividerHeight="1px"
+        android:listSelector="@color/item_color1" />
+</LinearLayout>

+ 193 - 1
app_modular/appbooking/src/main/res/layout/activity_bbooking_add.xml

@@ -4,6 +4,198 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context="com.modular.booking.activity.business.BbookingAddActivity">
+    tools:context="com.modular.booking.activity.business.BBookingAddActivity">
 
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/hine_bg">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@color/hine_bg"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:orientation="vertical">
+       
+            <RelativeLayout
+                android:id="@+id/rl_object"
+                style="@style/item_menu">
+
+                <TextView
+                    style="@style/item_menu_tag"
+                    android:gravity="center_vertical"
+                    android:layout_marginLeft="5dp"
+                    android:text="@string/booking_object" />
+
+                <TextView
+                    android:id="@+id/tv_book_object"
+                    style="@style/item_menu_input"
+                    android:layout_toRightOf="@id/company_tag"
+                    android:drawablePadding="6dp"
+                    android:layout_width="300dp"
+                    android:ellipsize="end"
+                    android:drawableRight="@drawable/oa_next"
+                    android:hint="@string/common_select" />
+            </RelativeLayout>
+            <RelativeLayout
+                android:id="@+id/rl_company"
+                style="@style/item_menu">
+
+                <TextView
+                    style="@style/item_menu_tag"
+                    android:gravity="center_vertical"
+                    android:layout_marginLeft="5dp"
+                    android:text="@string/booking_add_company" />
+
+                <TextView
+                    android:id="@+id/tv_book_company"
+                    style="@style/item_menu_input"
+                    android:layout_toRightOf="@id/company_tag"
+                    android:drawablePadding="6dp"
+                    android:layout_width="300dp"
+                    android:ellipsize="end"
+                    android:drawableRight="@drawable/oa_next"
+                    android:hint="@string/common_select" />
+            </RelativeLayout>
+            <RelativeLayout
+                android:id="@+id/company_add_rl"
+                style="@style/item_menu">
+
+                <TextView
+
+                    style="@style/item_menu_tag"
+                    android:gravity="center_vertical"
+                    android:text="@string/times"
+                    android:layout_marginLeft="5dp"
+                    android:textColor="@color/hintColor" />
+
+                <TextView
+                    android:id="@+id/tv_book_times"
+                    style="@style/item_menu_input"
+                    android:drawableRight="@drawable/oa_next"
+                    android:hint="@string/common_select"
+                    android:textColor="@color/hintColor"
+                    android:layout_alignParentTop="true"
+                    android:layout_alignParentRight="true"
+                    android:layout_alignParentEnd="true" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/remark_rl"
+                style="@style/item_menu">
+
+                <TextView
+                    style="@style/item_menu_tag"
+                    android:layout_alignParentLeft="true"
+                    android:layout_alignParentStart="true"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginLeft="5dp"
+                    android:gravity="center_vertical"
+                    android:text="@string/address" />
+
+                <TextView
+                    android:id="@+id/tv_book_address"
+                    style="@style/item_menu_input"
+                    android:layout_width="300dp"
+                    android:ellipsize="end"
+                    android:layout_toRightOf="@id/remark_tag"
+                    android:drawablePadding="6dp"
+                    android:drawableRight="@drawable/oa_next"
+                  
+                    android:hint="@string/common_select" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/topic_rl"
+                style="@style/item_menu">
+
+                <TextView
+                    style="@style/item_menu_tag"
+                    android:layout_alignParentLeft="true"
+                    android:layout_alignParentStart="true"
+                    android:layout_alignParentTop="true"
+                    android:gravity="center_vertical"
+                    android:layout_marginLeft="5dp"
+                    android:text="@string/booking_topic" />
+
+                <EditText
+                    android:id="@+id/tv_book_topic"
+                    style="@style/item_menu_input"
+                    android:layout_width="300dp"
+                    android:layout_toRightOf="@id/remark_tag"
+                    android:drawablePadding="6dp"
+                    android:drawableRight="@drawable/oa_next"
+                    android:ellipsize="end"
+                    android:hint="@string/common_select" />
+            </RelativeLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="30dp" />
+
+            <RelativeLayout
+                style="@style/form_relative_customer"
+                android:layout_height="20dp"
+                android:background="@color/white">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="10dp"
+                    android:gravity="center_vertical"
+                    android:text="@string/booking_topic"
+                    android:visibility="gone" />
+            </RelativeLayout>
+
+            <com.core.widget.NScrollerGridView
+                android:id="@+id/gv_topic"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/white"
+                android:horizontalSpacing="15dp"
+                android:numColumns="4"
+                android:paddingLeft="15dp"
+                android:paddingRight="15dp"
+                android:paddingTop="5dp"
+                android:scrollbars="none"
+                android:verticalSpacing="10dp" />
+
+            <EditText
+                android:id="@+id/et_book_content"
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginBottom="10dp"
+                android:background="@color/white"
+                android:enabled="false"
+                android:gravity="top"
+                android:paddingLeft="10dp"
+                android:textSize="15sp" />
+
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginBottom="30dp"
+                android:layout_marginTop="60dp">
+
+                <Button
+                    android:id="@+id/submit_btn"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentBottom="true"
+                    android:layout_marginBottom="10dp"
+                    android:layout_marginLeft="20dp"
+                    android:layout_marginRight="20dp"
+                    android:background="@drawable/bg_bule_btn"
+                    android:padding="10dp"
+                    android:text="@string/app_button_commit"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/text_main" />
+            </RelativeLayout>
+        </LinearLayout>
+
+
+    </ScrollView>
 </android.support.constraint.ConstraintLayout>

+ 258 - 0
app_modular/appbooking/src/main/res/layout/activity_bbooking_detail.xml

@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <com.core.widget.CustomerScrollView
+        android:id="@+id/sv_top"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginBottom="50dp"
+        android:fillViewport="true">
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <RelativeLayout
+                android:id="@+id/rv_top"
+                android:visibility="gone"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_alignParentTop="true">
+
+                <LinearLayout
+                    android:id="@+id/ll_left"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:padding="15dp">
+
+                    <de.hdodenhof.circleimageview.CircleImageView
+                        android:id="@+id/iv_me"
+                        android:layout_width="70dp"
+                        android:layout_height="70dp"
+                        android:src="@drawable/defaultpic" />
+
+                    <TextView
+                        android:id="@+id/tv_me"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center"
+                        android:padding="5dp"
+                        android:text="@string/me" />
+                </LinearLayout>
+                <!--
+       android:layout_toLeftOf="@+id/ll_right"
+                android:layout_toRightOf="@+id/ll_left"-->
+                <ImageView
+                    android:id="@+id/iv_resultInfo"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerInParent="true"
+                    android:layout_toRightOf="@+id/ll_left"
+                    android:layout_toLeftOf="@+id/ll_right"
+                    android:scaleType="fitStart"
+                    android:src="@drawable/icon_send" />
+
+                <LinearLayout
+                    android:id="@+id/ll_right"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:orientation="vertical"
+                    android:padding="15dp">
+
+                    <de.hdodenhof.circleimageview.CircleImageView
+                        android:id="@+id/iv_target"
+                        android:layout_width="70dp"
+                        android:layout_height="70dp"
+                        android:layout_alignParentTop="true"
+                        android:src="@drawable/defaultpic" />
+
+                    <TextView
+                        android:id="@+id/tv_target"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center"
+                        android:padding="5dp"
+                        android:text="@string/me" />
+                </LinearLayout>
+
+            </RelativeLayout>
+            <LinearLayout
+                android:id="@+id/ll_detail"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/rv_top"
+                android:layout_margin="15dp"
+                android:background="@drawable/icon_bg_booking_detail1"
+                android:orientation="vertical">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="7dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="@string/booking_time" />
+
+                    <TextView
+                        android:id="@+id/tv_time"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="***************"
+                        android:textColor="@color/black" />
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="7dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="@string/booking_address" />
+
+                    <TextView
+                        android:id="@+id/tv_address"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="*****************"
+                        android:textColor="@color/black" />
+                </LinearLayout>
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="7dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="@string/booking_topic" />
+
+                    <TextView
+                        android:id="@+id/tv_topic"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="*****************"
+                        android:textColor="@color/black" />
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="7dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="发起人" />
+
+                    <TextView
+                        android:id="@+id/tv_sender"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="*****************"
+                        android:textColor="@color/black" />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/ll_refuse"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="7dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginBottom="7dp"
+                        android:text="@string/booking_content" />
+
+                    <TextView
+                        android:id="@+id/tv_content"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="10dp"
+                        android:text="###########################################
+###########################################################################"
+                        android:textColor="@color/black" />
+                </LinearLayout>
+
+                <ImageView
+                    android:id="@+id/iv_result"
+                    android:layout_width="70dp"
+                    android:layout_height="70dp"
+                    android:layout_margin="10dp"
+                    android:layout_gravity="right"
+                    android:src="@drawable/icon_jujue1" />
+            </LinearLayout>
+            <TextView
+                android:id="@+id/tv_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/ll_detail"
+                android:layout_marginBottom="10dp"
+                android:layout_marginLeft="20dp"
+                android:text="@string/booking_object_name" />
+             <com.core.widget.MyListView
+                 android:id="@+id/mListDetail"
+                 android:layout_width="match_parent"
+                 android:layout_height="wrap_content"
+                 android:layout_marginLeft="15dp"
+                 android:layout_marginRight="15dp"
+                 android:layout_marginBottom="10dp"
+                 android:dividerHeight="10dp"
+                 android:layout_below="@+id/tv_title">
+             </com.core.widget.MyListView>
+
+
+
+        </RelativeLayout>
+    </com.core.widget.CustomerScrollView>
+    <LinearLayout
+        android:id="@+id/ll_bottom"
+        android:layout_width="match_parent"
+        android:layout_height="48dp"
+        android:layout_alignParentBottom="true"
+        android:orientation="horizontal"
+        android:weightSum="2">
+
+        <Button
+            android:id="@+id/bt_change"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:background="@drawable/bg_bule_btn1"
+            android:text="@string/booking_change" />
+
+        <View style="@style/app_line_v_1dp"></View>
+
+        <Button
+            android:id="@+id/bt_cancle"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_alignParentEnd="true"
+            android:layout_alignParentRight="true"
+            android:layout_alignTop="@+id/linearLayout"
+            android:layout_weight="1"
+            android:background="@drawable/select_weixin_list_item"
+            android:text="@string/cancel" />
+    </LinearLayout>
+</RelativeLayout>

+ 9 - 0
app_modular/appbooking/src/main/res/layout/activity_muil_select_bean.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.modular.booking.activity.business.MuilSelectBeanActivity">
+
+</android.support.constraint.ConstraintLayout>

+ 4 - 2
app_modular/appbooking/src/main/res/layout/activity_shares_list.xml

@@ -4,9 +4,11 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context="com.modular.booking.activity.shares.SharesListActivity">
+    tools:context="com.modular.booking.activity.shares.BBSharesListActivity">
     <com.handmark.pulltorefresh.library.PullToRefreshListView
         android:id="@+id/shareList"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_height="match_parent"
+        android:divider="@color/item_line"
+        android:dividerHeight="2px"/>
 </android.support.constraint.ConstraintLayout>

+ 101 - 0
app_modular/appbooking/src/main/res/layout/item_booking_list_muilt.xml

@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/selector_oa_itembg"
+    android:descendantFocusability="blocksDescendants"
+    android:padding="10dp">
+
+    <ImageView
+        android:id="@+id/status_img"
+        android:layout_width="50dp"
+        android:layout_height="50dp"
+        android:visibility="gone"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true"
+        android:src="@drawable/oa_doit" />
+    <CheckBox
+        android:id="@+id/cb"
+        android:layout_width="15dp"
+        android:layout_height="15dp"
+        android:layout_centerVertical="true"
+        android:layout_marginRight="8dp"
+        android:button="@drawable/oa_checkbox"
+        android:focusableInTouchMode="false" />
+<LinearLayout
+    android:layout_toRightOf="@+id/cb"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+    <LinearLayout
+        android:id="@+id/title_ll"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+
+        <TextView
+            android:id="@+id/title_tv"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:ellipsize="end"
+            android:lines="1"
+            android:text="*****"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+       <ImageView
+           android:id="@+id/iv_share"
+           android:layout_width="25dp"
+           android:layout_height="25dp" 
+           android:background="@drawable/icon_share_nor"/> 
+        
+        <TextView
+            android:id="@+id/status_tv"
+            android:layout_width="70dp"
+            android:layout_height="match_parent"
+            
+            android:layout_toRightOf="@+id/title_tv"
+            android:textColor="@color/green"
+            android:ellipsize="end"
+            android:text="*****"
+            android:gravity="right|center_vertical"
+            android:lines="1" />
+
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/address_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/title_ll"
+        android:layout_marginRight="70dp"
+        android:visibility="gone"
+        android:layout_marginTop="10dp"
+        android:ellipsize="end"
+        android:text="*****"
+        android:lines="1" />
+
+    <TextView
+        android:id="@+id/handler_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/address_tv"
+        android:layout_marginRight="40dp"
+        android:text="*****"
+        android:layout_marginTop="10dp"
+        android:ellipsize="end"
+        android:lines="1" />
+
+    <TextView
+        android:id="@+id/topic_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/address_tv"
+        android:layout_toRightOf="@+id/handler_tv"
+        android:layout_marginRight="70dp"
+        android:text="*****"
+        android:layout_marginTop="10dp"
+        android:ellipsize="end"
+        android:lines="1" />
+</LinearLayout>
+</RelativeLayout>

+ 80 - 0
app_modular/appbooking/src/main/res/layout/item_list_type.xml

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:background="@drawable/shape_items_type"
+    android:layout_height="wrap_content">
+<RelativeLayout
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:paddingLeft="10dp"
+    android:paddingRight="10dp"
+    android:paddingTop="10dp">
+     <TextView
+         android:id="@+id/tvName"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content"
+         android:text="姓名"/>
+    <TextView
+        android:id="@+id/tvNameValue"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="10dp"
+        android:textColor="@color/black"
+        android:text="****************"
+        android:layout_toRightOf="@+id/tvName"/>
+    <TextView
+        android:id="@+id/tv_status"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" 
+        android:text="未确认"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentEnd="true" />
+</RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingLeft="10dp"
+        android:paddingRight="10dp"
+        android:paddingBottom="10dp"
+        android:paddingTop="7dp">
+        <TextView
+            android:id="@+id/tvCompany"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="公司"/>
+        <TextView
+            android:id="@+id/tvCompanyValue"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/black"
+            android:layout_marginLeft="10dp"
+            android:layout_toRightOf="@+id/tvCompany"
+            android:text="***************"/>
+       
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingLeft="10dp"
+        android:paddingRight="10dp"
+        android:paddingBottom="10dp"
+       >
+        <TextView
+            android:id="@+id/tvReason"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="拒绝理由"/>
+        <TextView
+            android:id="@+id/tvReasonValue"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/black"
+            android:layout_marginLeft="10dp"
+            android:layout_toRightOf="@+id/tvReason"
+            android:text="***************"/>
+
+    </RelativeLayout>
+</LinearLayout>

+ 9 - 0
app_modular/appbooking/src/main/res/values/strings.xml

@@ -7,4 +7,13 @@
     <string name="booking_service">服务预约</string>
     <string name="booking_share">共享预约</string>
 
+    <string name="booking_add_company">企业</string>
+
+
+    <string-array name="booking_reject">
+        <item>请选择拒理由</item>
+        <item>工作繁忙</item>
+        <item>没有必要</item>
+        <item>其它</item>
+    </string-array>
 </resources>

+ 4 - 0
app_modular/appcontact/src/main/AndroidManifest.xml

@@ -17,6 +17,10 @@
         <activity
             android:name="com.uas.appcontact.ui.activity.ContactsActivity"
             android:windowSoftInputMode="adjustPan" />
+             <intent-filter>
+               <action android:name="com.modular.contact.ContactsActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
         <activity
             android:name="com.uas.appcontact.ui.activity.CompanyContactsActivity"
             android:windowSoftInputMode="stateVisible|adjustResize" />

+ 32 - 3
app_modular/appcontact/src/main/java/com/uas/appcontact/adapter/ContactsAdapter.java

@@ -5,6 +5,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
+import android.widget.CheckBox;
 import android.widget.ImageView;
 import android.widget.TextView;
 
@@ -25,8 +26,17 @@ public class ContactsAdapter extends BaseAdapter {
 
     private Context ct;
     private ResultItemsInface resultItemsInface;
+    private boolean isSingleSelect=false;
     private List<ContactsModel> models=new ArrayList<>();
-    
+
+    public boolean isSingleSelect() {
+        return isSingleSelect;
+    }
+
+    public void setSingleSelect(boolean singleSelect) {
+        isSingleSelect = singleSelect;
+    }
+
     public ContactsAdapter(Context ct, List<ContactsModel> datas){
         this.ct=ct;
         this.models=datas;
@@ -39,7 +49,7 @@ public class ContactsAdapter extends BaseAdapter {
     }
 
     @Override
-    public Object getItem(int position) {
+    public ContactsModel getItem(int position) {
         return models.get(position);
     }
 
@@ -56,6 +66,7 @@ public class ContactsAdapter extends BaseAdapter {
             convertView = LayoutInflater.from(MyApplication.getInstance()).
                     inflate(R.layout.item_contact_layout, parent, false);
             holder.name_tv = (TextView) convertView.findViewById(R.id.name_tv);
+            holder.checkBox=(CheckBox) convertView.findViewById(R.id.cb);
             holder.sub_tv = (TextView) convertView.findViewById(R.id.sub_tv);
             holder.status_tv = (TextView) convertView.findViewById(R.id.status_tv);
             holder.head_img = (ImageView) convertView.findViewById(R.id.head_img);
@@ -66,9 +77,14 @@ public class ContactsAdapter extends BaseAdapter {
         }
 
         final ContactsModel model=models.get(position);
+        if (isSingleSelect){
+            holder.checkBox.setVisibility(View.GONE);
+        }else{
+            holder.checkBox.setVisibility(View.VISIBLE);
+        }
         holder.targetId=  model.getImid();
         holder.model=model;
-///设定为每次刷新都会去删除缓存重新获取数据
+        ///设定为每次刷新都会去删除缓存重新获取数据
         AvatarHelper.getInstance().display(model.getImid() + "", holder.head_img, true, false);
         holder.name_tv.setText(model.getName());
         holder.sub_tv.setText(model.getPhone());
@@ -114,6 +130,8 @@ public class ContactsAdapter extends BaseAdapter {
         if (textColor != 0) {
             holder.status_tv.setTextColor(MyApplication.getInstance().getResources().getColor(textColor));
         }
+        
+        holder.checkBox.setChecked(model.isClick);
         holder.status_tv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -122,6 +140,8 @@ public class ContactsAdapter extends BaseAdapter {
               }
             }
         });
+        holder.checkBox.setFocusable(false);
+        holder.checkBox.setClickable(false);
         return convertView;
     }
 
@@ -130,6 +150,7 @@ public class ContactsAdapter extends BaseAdapter {
                   name_tv,
                   sub_tv,
                   status_tv;
+       public CheckBox checkBox;
        public ImageView head_img;
        public View tag_view;
        public String targetId;
@@ -139,4 +160,12 @@ public class ContactsAdapter extends BaseAdapter {
     public interface ResultItemsInface{
          void onResultForItems(View view, ContactsModel model, int position);
     }
+
+    public List<ContactsModel> getModels() {
+        return models;
+    }
+
+    public void setModels(List<ContactsModel> models) {
+        this.models = models;
+    }
 }

+ 11 - 1
app_modular/appcontact/src/main/java/com/uas/appcontact/model/contacts/ContactsModel.java

@@ -15,10 +15,10 @@ public class ContactsModel implements Parcelable {
     private String name;
     private String company;
     private String whichsys;
-    
     private String phone;
     private String email;
     private Integer type;
+    public boolean isClick = false;
 
 
     public ContactsModel() {
@@ -88,6 +88,14 @@ public class ContactsModel implements Parcelable {
         this.type = type;
     }
 
+    public boolean isClick() {
+        return isClick;
+    }
+
+    public void setClick(boolean click) {
+        isClick = click;
+    }
+
     @Override
     public int describeContents() {
         return 0;
@@ -103,6 +111,7 @@ public class ContactsModel implements Parcelable {
         dest.writeString(this.phone);
         dest.writeString(this.email);
         dest.writeValue(this.type);
+        dest.writeByte(this.isClick ? (byte) 1 : (byte) 0);
     }
 
     protected ContactsModel(Parcel in) {
@@ -114,6 +123,7 @@ public class ContactsModel implements Parcelable {
         this.phone = in.readString();
         this.email = in.readString();
         this.type = (Integer) in.readValue(Integer.class.getClassLoader());
+        this.isClick = in.readByte() != 0;
     }
 
     public static final Creator<ContactsModel> CREATOR = new Creator<ContactsModel>() {

+ 152 - 9
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/ContactsActivity.java

@@ -14,6 +14,9 @@ import android.support.annotation.Nullable;
 import android.text.Editable;
 import android.view.View;
 import android.widget.AdapterView;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.TextView;
 
@@ -66,6 +69,10 @@ import com.core.app.AppConstant;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.lidroid.xutils.ViewUtils;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
 import com.uas.appcontact.R;
 import com.uas.appcontact.adapter.ContactsAdapter;
 import com.uas.appcontact.db.ContactsDao;
@@ -83,6 +90,9 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
 
     private PullToRefreshListView mlist;
     private VoiceSearchView voiceSearchView;
+    private TextView mumber_tv;
+    private CheckBox all_sure_cb;
+    private boolean isClickCb = true;
     private boolean mBind;
     private CoreService mXmppService;
     private ContactsAdapter adapter;
@@ -91,7 +101,11 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
     private List<ContactsModel> models = new ArrayList<>();
     private List<ContactsModel> tmodels = new ArrayList<>();
     private int type = 0;//0默认情况。1 其它界面调用
+    private boolean isSingleSelect = true;//true 单选  false 多选
     private String searchKey;
+    private int allSelect = 0;
+    
+    private LinearLayout include_tag;
 
 
     @Override
@@ -101,7 +115,6 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         ViewUtils.inject(this);
         contactsDao = ContactsDao.getInstance();
         initView();
-
         initData();
     }
 
@@ -122,10 +135,16 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
 
     private void initView() {
         mlist = (PullToRefreshListView) findViewById(R.id.mList);
+        all_sure_cb = (CheckBox) findViewById(R.id.all_sure_cb);
+        mumber_tv = (TextView) findViewById(R.id.mumber_tv);
+        include_tag= (LinearLayout) findViewById(R.id.include_tag);
+
         voiceSearchView = (VoiceSearchView) findViewById(R.id.voiceSearchView);
         if (getIntent() != null) {
             type = getIntent().getIntExtra("type", 0);
             String title = getIntent().getStringExtra("title");
+            isSingleSelect = getIntent().getBooleanExtra("isSingleSelect", true);
+           
             if (!StringUtil.isEmpty(title)) {
                 getSupportActionBar().setTitle(title);
             } else {
@@ -164,7 +183,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 ContactsAdapter.ViewHolder viewHolder = (ContactsAdapter.ViewHolder) view.getTag();
-                if (type == 0) {//默认情况
+                if (type == 0) {//默认情况---点击查看详情
                     if (viewHolder.model.getType() == 3) {
                         return;
                     }
@@ -180,19 +199,21 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                     //friend.setStatus();
                     intent.putExtra("friend", friend);
                     startActivity(intent);
-                } else if (type == 1) { //获取对象界面
-                    if (viewHolder.model.getType() == 3) {
-                        //邀请注册  拿IMID
+                } else if (type == 1) { //预约---获取对象界面
+                    //预约对象
+                    if (isSingleSelect) {
                         Intent intent = new Intent();
                         intent.putExtra("data", viewHolder.model);
                         setResult(0x20, intent);
                         finish();
                     } else {
-                        Intent intent = new Intent();
-                        intent.putExtra("data", viewHolder.model);
-                        setResult(0x20, intent);
-                        finish();
+                        boolean isChecked = !viewHolder.checkBox.isChecked();
+                        LogUtil.d("ContactsActivity", "isChecked:" + isChecked);
+                        setSelectNumber(isChecked);
+                        adapter.getItem(position - 1).setClick(isChecked);
+                        adapter.notifyDataSetChanged();
                     }
+
                 }
             }
         });
@@ -230,6 +251,66 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
             }
         });
 
+        all_sure_cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+                if (isClickCb) {
+                    if (adapter == null) return;
+                    for (int i = 0; i < adapter.getModels().size(); i++) {
+                        adapter.getModels().get(i).setClick(b);
+                    }
+                    allSelect = getSelectNumber().size();
+                    mumber_tv.setText(getString(R.string.selected) + allSelect + " " + "人员");
+                    adapter.notifyDataSetChanged();
+                    all_sure_cb.setText(b ? R.string.cancel_select_all : R.string.select_all);
+                }
+                isClickCb = true;
+            }
+        });
+
+
+        findViewById(R.id.sure_tv).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                ArrayList<ContactsModel> models = getSelectNumber();
+                Intent intent = new Intent();
+                intent.putParcelableArrayListExtra("data", models);
+                activity.setResult(0x01, intent);
+                activity.finish();
+            }
+        });
+
+    }
+
+    public ArrayList<ContactsModel> getSelectNumber() {
+        ArrayList<ContactsModel> models = new ArrayList<>();
+        for (int i = 0; i < adapter.getModels().size(); i++) {
+            if (adapter.getModels().get(i).isClick) {
+                models.add(adapter.getItem(i));
+            }
+        }
+        return models;
+    }
+
+    /**
+     * 点击后
+     *
+     * @param isClicked 点击后是否为选中状态
+     */
+    private void setSelectNumber(boolean isClicked) {
+        allSelect += isClicked ? 1 : -1;
+        if (allSelect < 0)
+            allSelect = 0;
+        if (!isClicked && all_sure_cb.isChecked()) {
+            isClickCb = false;
+            all_sure_cb.setChecked(false);
+            all_sure_cb.setText(R.string.select_all);
+        } else if (isClicked && !all_sure_cb.isChecked() && !ListUtils.isEmpty(adapter.getModels()) && allSelect == adapter.getModels().size()) {
+            isClickCb = false;
+            all_sure_cb.setChecked(true);
+            all_sure_cb.setText(R.string.cancel_select_all);
+        }
+        mumber_tv.setText(getString(R.string.selected) + allSelect + " " + "人员");
     }
 
     private void initData() {
@@ -238,6 +319,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         }
         showLoading();
         adapter = new ContactsAdapter(this, models);
+        adapter.setSingleSelect(isSingleSelect);
         mlist.setAdapter(adapter);
         String[] permissions = {Manifest.permission.READ_CONTACTS};
         if (PermissionUtil.lacksPermissions(ct, permissions)) {
@@ -339,6 +421,8 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                 if (isHasPermiss) {
                     List<Contacts> contacts =
                             ContactsUtils.getContacts1();
+                    //上传数据到服务器
+                    uploadData(contacts);
                     if (contacts != null) {
                         for (Contacts entity : contacts) {
                             ContactsModel model = new ContactsModel();
@@ -372,6 +456,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
      * @author:Arison on 2017/7/19
      */
     public void getCaceData(final boolean isHasNet) {
+      
         ThreadPool.getThreadPool().addTask(new Runnable() {
             @Override
             public void run() {
@@ -394,6 +479,14 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                                 mlist.onRefreshComplete();
                                 voiceSearchView.getSearch_edit().setHint(lists.size() + "位联系人");
                                 dimssLoading();
+                                if(isSingleSelect){
+                                    include_tag.setVisibility(View.GONE);
+                                    //include_tag.getBackground().setAlpha(0);
+                                }else{
+                                    include_tag.setVisibility(View.VISIBLE);
+                                    // include_tag.getBackground().setAlpha(100);
+
+                                }
                             }
                         }
                     });
@@ -778,4 +871,54 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
             }
         }
     };
+
+
+    //
+    public void uploadData(List<Contacts> models) {
+        
+        if (!ListUtils.isEmpty(models)) {
+//            String map="[{\n" +
+//                    "\"am_telephone\":\"13266699268\",\n" +
+//                    "\"am_username\":\"张山\"\n" +
+//                    "}]";
+            StringBuilder mapBuilder = new StringBuilder("[");
+            for (int i = 0; i < models.size(); i++) {
+                if (i == models.size() - 1) {
+                    mapBuilder.append("{\n" +
+                            "\"am_telephone\":\"" + models.get(i).getPhone() + "\",\n" +
+                            "\"am_username\":\"" + models.get(i).getName() + "\",\n" +
+                            "\"am_userid\":\"" + 0 + "\"\n" +
+                            "}]");
+                } else {
+                    mapBuilder.append("{\n" +
+                            "\"am_telephone\":\"" + models.get(i).getPhone() + "\",\n" +
+                            "\"am_username\":\"" + models.get(i).getName() + "\",\n" +
+                            "\"am_userid\":\"" + 0 + "\"\n" +
+                            "},");
+                }
+            }
+            LogUtil.d("HttpLogs","token:"+MyApplication.getInstance().mAccessToken);
+            LogUtil.d("HttpLogs","userid:"+MyApplication.getInstance().mLoginUser.getUserId());
+            LogUtil.d("HttpLogs","username:"+MyApplication.getInstance().mLoginUser.getNickName());
+            LogUtil.prinlnLongMsg("HttpLogs","map:"+mapBuilder.toString());
+            HttpClient httpClient = new HttpClient.Builder().url(Constants.IM_BASE_URL)
+                    .isDebug(true).build(true);
+            httpClient.Api().send(new HttpClient.Builder()
+                    .url("/user/appMobileContact")
+                    .add("token", MyApplication.getInstance().mAccessToken)
+                    .add("userid", MyApplication.getInstance().mLoginUser.getUserId())
+                    .add("username", MyApplication.getInstance().mLoginUser.getNickName())
+                    .add("map", mapBuilder.toString())
+                    .method(Method.POST)
+                    .build(false), new ResultSubscriber<>(new ResultListener<Object>() {
+
+                @Override
+                public void onResponse(Object o) {
+                       if(JSONUtil.validate(o.toString())){
+                        LogUtil.d("HttpLogs","result:"+o.toString());
+                       }
+                }
+            }));
+        }
+    }
 }

+ 19 - 15
app_modular/appme/src/main/java/com/uas/appme/settings/activity/AboutActivity.java

@@ -51,7 +51,7 @@ public class AboutActivity extends BaseActivity implements View.OnClickListener
         me_function.setOnClickListener(this);
         me_QRcode.setOnClickListener(this);
 
-        Config.REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";
+      
 //		UmengTool.getSignature(activity);
 //		UmengTool.checkSina(activity);
 //		UmengTool.getREDICRECT_URL(activity);
@@ -74,20 +74,24 @@ public class AboutActivity extends BaseActivity implements View.OnClickListener
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.app_about){
-            new ShareAction(activity).setDisplayList(
-                    SHARE_MEDIA.SINA,
-                    SHARE_MEDIA.QQ,
-                    SHARE_MEDIA.QZONE,
-                    SHARE_MEDIA.WEIXIN,
-                    SHARE_MEDIA.WEIXIN_CIRCLE,
-                    SHARE_MEDIA.WEIXIN_FAVORITE,
-                    SHARE_MEDIA.MORE)
-                    .withTitle("UU互联")
-                    .withText("UU互联 Android客户端"+ SystemUtil.getVersionName(mContext))
-                    .withMedia(new UMImage(activity, "http://img.my.csdn.net/uploads/201609/30/1475204542_1365.png"))
-                    .withTargetUrl("http://www.usoftchina.com/usoft/uas_client.html")
-                    .setCallback(CommonUtil.umShareListener)
-                    .open();
+            try {
+                new ShareAction(activity).setDisplayList(
+                        SHARE_MEDIA.SINA,
+                        SHARE_MEDIA.QQ,
+                        SHARE_MEDIA.QZONE,
+                        SHARE_MEDIA.WEIXIN,
+                        SHARE_MEDIA.WEIXIN_CIRCLE,
+                        SHARE_MEDIA.WEIXIN_FAVORITE,
+                        SHARE_MEDIA.MORE)
+                        .withTitle("UU互联")
+                        .withText("UU互联 Android客户端"+ SystemUtil.getVersionName(mContext))
+                        .withMedia(new UMImage(activity, "http://img.my.csdn.net/uploads/201609/30/1475204542_1365.png"))
+                        .withTargetUrl("http://www.usoftchina.com/usoft/uas_client.html")
+                        .setCallback(CommonUtil.umShareListener)
+                        .open();
+            } catch (Exception e) {
+                
+            }
         }else if (item.getItemId() == android.R.id.home){
 
             onBackPressed();

+ 2 - 2
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java

@@ -48,8 +48,8 @@ import com.modular.appmessages.adapter.ApprovalAdapter;
 import com.modular.appmessages.adapter.CrashLinearLayoutManager;
 import com.modular.appmessages.presenter.ApprovaPresenter;
 import com.modular.appmessages.presenter.imp.IApproval;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 
 import java.util.ArrayList;
 import java.util.LinkedHashSet;

+ 4 - 2
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ComplaintDetailActivity.java

@@ -37,9 +37,11 @@ import com.core.net.http.ViewUtil;
 import com.core.utils.CommonUtil;
 import com.core.widget.CustomerScrollView;
 import com.core.widget.MyListView;
+import com.lidroid.xutils.ViewUtils;
+import com.lidroid.xutils.view.annotation.ViewInject;
 import com.modular.appmessages.R;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.uas.appworks.OA.platform.adapter.PlatComAfAdapter;
 import com.uas.appworks.OA.platform.model.PlatComAfBean;
 

+ 5 - 1
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/BusinessDetailInfoActivity.java

@@ -396,11 +396,15 @@ public class BusinessDetailInfoActivity extends BaseActivity implements View.OnC
         });
         int width = popupWindow.getWidth();
         popupWindow.setWidth(width + DisplayUtil.dip2px(ct, 10));
-        LogUtil.i("width=" + width);
         int[] location = new int[2];
         parent.getLocationOnScreen(location);
+        Log.i("Arison", "parent hight:" + location[1]);
+        Log.i("Arison", "popupWindow hight:" + popupWindow.getHeight());
+        Log.i("Arison", "parent width:" + parent.getWidth());
+        Log.i("Arison", "parent width:" + parent.getHeight());
         popupWindow.showAtLocation(parent.findViewById(R.id.bt_manage_go), Gravity.NO_GRAVITY, location[0],
                 location[1] - popupWindow.getHeight() - 5);
+
     }
 
     /*处理商机库并显示选择*/

+ 2 - 2
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/TaskAddErpActivity.java

@@ -22,6 +22,8 @@ import com.core.app.AppConstant;
 import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
 import com.core.model.OAConfig;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.core.net.http.ViewUtil;
 import com.core.utils.CommonUtil;
 import com.core.utils.RecognizerDialogUtil;
@@ -34,8 +36,6 @@ import com.iflytek.cloud.RecognizerResult;
 import com.iflytek.cloud.SpeechError;
 import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.lidroid.xutils.ViewUtils;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
 import com.uas.appworks.R;
 
 import java.util.Calendar;

+ 2 - 2
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/AddFlihtsActivity.java

@@ -23,8 +23,8 @@ import com.core.model.OAConfig;
 import com.core.utils.ToastUtil;
 import com.core.widget.crouton.Crouton;
 import com.uas.appworks.OA.erp.model.FlightsModel;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.uas.appworks.OA.erp.presenter.AddFlihtsPresenter;
 import com.uas.appworks.OA.erp.view.IAddFlihtsView;
 import com.uas.appworks.R;

+ 2 - 2
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/AddMeetingActivity.java

@@ -39,8 +39,8 @@ import com.iflytek.cloud.SpeechError;
 import com.iflytek.cloud.ui.RecognizerDialog;
 import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.lidroid.xutils.ViewUtils;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.core.widget.view.selectcalendar.bean.Data;
 import com.uas.appworks.R;
 

+ 1 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/AddFlihtsPresenter.java

@@ -25,7 +25,7 @@ import com.uas.appworks.OA.erp.model.EmployeesModel;
 import com.uas.appworks.OA.erp.model.FlightsModel;
 import com.uas.appworks.OA.erp.model.FlightsTimeModel;
 import com.uas.appworks.OA.erp.model.HrorgsModel;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectEmUser;
 import com.uas.appworks.OA.erp.view.IAddFlihtsView;
 
 import java.util.ArrayList;

+ 1 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/view/IAddFlihtsView.java

@@ -3,7 +3,7 @@ package com.uas.appworks.OA.erp.view;
 
 import com.core.base.HttpImp;
 import com.uas.appworks.OA.erp.model.FlightsModel;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectEmUser;
 
 import java.util.ArrayList;
 

+ 2 - 2
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/PlatWDdetailyActivity.java

@@ -45,8 +45,8 @@ import com.core.widget.CustomerScrollView;
 import com.core.widget.MyListView;
 import com.uas.appworks.R;
 import com.uas.appworks.OA.erp.activity.WorkDailyAddActivity;
-import com.uas.appworks.OA.erp.model.SelectCollisionTurnBean;
-import com.uas.appworks.OA.erp.model.SelectEmUser;
+import com.core.model.SelectCollisionTurnBean;
+import com.core.model.SelectEmUser;
 import com.uas.appworks.OA.platform.adapter.PlatComAfAdapter;
 import com.uas.appworks.OA.platform.model.PlatComAfBean;