Browse Source

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

# Conflicts:
#	WeiChat/version.properties
Arison 8 years ago
parent
commit
2a3255aa92
100 changed files with 4716 additions and 1789 deletions
  1. 1 1
      WeiChat/build.gradle
  2. 13 7
      WeiChat/src/main/AndroidManifest.xml
  3. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ApplySubscribeActivity.java
  4. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  5. 39 18
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/PlatLeaveAddActivity.java
  6. 101 48
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/TravelActivity.java
  7. 50 34
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java
  8. 116 46
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WorkExtraActivity.java
  9. 17 46
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java
  10. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingListActivity.java
  11. 27 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkMenuParentAdapter.java
  12. 42 71
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorkPlatFragment.java
  13. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SelectCollisionPresenter.java
  14. 5 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  15. 43 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/ChatActivity.java
  16. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  17. 0 68
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/CommonUtil.java
  18. 7 11
      WeiChat/src/main/java/com/xzjmyk/pm/activity/wxapi/WXEntryActivity.java
  19. BIN
      WeiChat/src/main/res/drawable-hdpi/uuu.png
  20. BIN
      WeiChat/src/main/res/drawable-mdpi/uuu.png
  21. BIN
      WeiChat/src/main/res/drawable-xhdpi/uuu.png
  22. BIN
      WeiChat/src/main/res/drawable-xxhdpi/uuu.png
  23. 6 6
      WeiChat/src/main/res/layout/activity_booking_list.xml
  24. 213 0
      WeiChat/src/main/res/layout/activity_holidays.xml
  25. 1 1
      WeiChat/src/main/res/layout/activity_setting.xml
  26. 0 62
      WeiChat/src/main/res/layout/activity_webview.xml
  27. 1 1
      WeiChat/src/main/res/layout/book_empty_list.xml
  28. 2 2
      WeiChat/src/main/res/layout/pop_crm_list.xml
  29. 144 2
      WeiChat/src/main/res/values-en/strings.xml
  30. 94 0
      WeiChat/src/main/res/values-zh-rCN/strings.xml
  31. 102 0
      WeiChat/src/main/res/values-zh-rTW/strings.xml
  32. 140 1
      WeiChat/src/main/res/values/strings.xml
  33. 62 22
      app_core/common/src/main/assets/work_menu.json
  34. 24 1
      app_core/common/src/main/assets/work_menu_b2b.json
  35. 12 0
      app_core/common/src/main/assets/work_menu_personal.json
  36. 4 4
      app_core/common/src/main/java/com/common/LogUtil.java
  37. 1 1
      app_core/common/src/main/java/com/common/config/BaseApplication.java
  38. 4 2
      app_core/common/src/main/java/com/common/data/JSONUtil.java
  39. 25 3
      app_core/common/src/main/java/com/common/system/ActivityUtils.java
  40. 0 1
      app_core/common/src/main/java/com/core/app/ActionBackActivity.java
  41. 13 4
      app_core/common/src/main/java/com/core/app/Constants.java
  42. 100 11
      app_core/common/src/main/java/com/core/app/MyApplication.java
  43. 5 1
      app_core/common/src/main/java/com/core/base/BaseActivity.java
  44. 0 1
      app_core/common/src/main/java/com/core/base/StackActivity.java
  45. 29 13
      app_core/common/src/main/java/com/core/model/Approval.java
  46. 19 1
      app_core/common/src/main/java/com/core/model/LoginEntity.java
  47. 7 1
      app_core/common/src/main/java/com/core/net/ProgressDownloader.java
  48. 7 5
      app_core/common/src/main/java/com/core/net/ProgressResponseBody.java
  49. 0 128
      app_core/common/src/main/java/com/core/net/http/HttpUtil.java
  50. 35 11
      app_core/common/src/main/java/com/core/net/http/ViewUtil.java
  51. 1 1
      app_core/common/src/main/java/com/core/net/location/BdLocationHelper.java
  52. 11 10
      app_core/common/src/main/java/com/core/service/InitializeService.java
  53. 18 15
      app_core/common/src/main/java/com/core/utils/BaiduMapUtil.java
  54. 153 4
      app_core/common/src/main/java/com/core/utils/CommonUtil.java
  55. 20 4
      app_core/common/src/main/java/com/core/utils/IntentUtils.java
  56. 32 0
      app_core/common/src/main/java/com/core/widget/PinnedSectionListView.java
  57. 34 2
      app_core/common/src/main/java/com/core/widget/SearchActionView.java
  58. 3 0
      app_core/common/src/main/java/com/core/xmpp/CoreService.java
  59. 2 0
      app_core/common/src/main/java/com/core/xmpp/XMucChatManager.java
  60. BIN
      app_core/common/src/main/res/drawable-hdpi/uuu.png
  61. BIN
      app_core/common/src/main/res/drawable-mdpi/uuu.png
  62. BIN
      app_core/common/src/main/res/drawable-xhdpi/uuu.png
  63. BIN
      app_core/common/src/main/res/drawable-xxhdpi/uuu.png
  64. 31 9
      app_core/common/src/main/res/layout/activity_common_docui.xml
  65. 6 3
      app_core/common/src/main/res/layout/activity_holidays.xml
  66. 1 1
      app_core/common/src/main/res/layout/activity_setting.xml
  67. 0 2
      app_core/common/src/main/res/layout/activity_simple_pinned_list.xml
  68. 1 1
      app_core/common/src/main/res/layout/activity_webview.xml
  69. 12 12
      app_core/common/src/main/res/layout/bsetting_activity.xml
  70. 2 2
      app_core/common/src/main/res/layout/image_setting_activity.xml
  71. 31 9
      app_core/common/src/main/res/layout/item_approval_rv.xml
  72. 34 6
      app_core/common/src/main/res/layout/item_approval_tag.xml
  73. 1 1
      app_core/common/src/main/res/layout/item_comdoc_secondout.xml
  74. 12 11
      app_core/common/src/main/res/layout/item_secondmsgs.xml
  75. 9 9
      app_core/common/src/main/res/layout/person_setting_activity.xml
  76. 3 3
      app_core/common/src/main/res/layout/pop_crm_list.xml
  77. 983 933
      app_core/common/src/main/res/values-en/strings.xml
  78. 91 0
      app_core/common/src/main/res/values-zh-rCN/strings.xml
  79. 146 40
      app_core/common/src/main/res/values-zh-rTW/strings.xml
  80. 103 3
      app_core/common/src/main/res/values/strings.xml
  81. BIN
      app_core/message/src/main/res/drawable-hdpi/uuu.png
  82. BIN
      app_core/message/src/main/res/drawable-xhdpi/uuu.png
  83. 10 7
      app_core/network/src/main/java/com/me/network/app/base/BaseApplication.java
  84. 2 2
      app_core/network/src/main/java/com/me/network/app/http/HttpClient.java
  85. 42 2
      app_core/network/src/main/java/com/me/network/app/http/HttpRequest.java
  86. 1 0
      app_core/network/src/main/res/values/strings.xml
  87. 6 2
      app_modular/appbooking/build.gradle
  88. 7 2
      app_modular/appbooking/src/main/AndroidManifest.xml
  89. 4 2
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingAddActivity.java
  90. 96 16
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceAddActivity.java
  91. 1 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceDetailActivity.java
  92. 5 3
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceSearchActivity.java
  93. 52 17
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServicesActivity.java
  94. 520 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/DishMainActivity.java
  95. 527 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/DishSelectActivity.java
  96. 3 3
      app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/BBSharesListActivity.java
  97. 1 1
      app_modular/appbooking/src/main/java/com/modular/booking/activity/shares/MuiltSelectShareActivity.java
  98. 60 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/test/BottomSheetActivity.java
  99. 73 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/test/ItemTestDataAdapter.java
  100. 51 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/test/ListPanel.java

+ 1 - 1
WeiChat/build.gradle

@@ -178,7 +178,7 @@ dependencies {
     compile project(':appme')
     compile project(':appworks')
     compile project(':appbooking')
-    compile project(':android-pdf-viewer')
+//    compile project(':android-pdf-viewer')
     compile project(':apputils')
 }
 

+ 13 - 7
WeiChat/src/main/AndroidManifest.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest package="com.xzjmyk.pm.activity"
           xmlns:android="http://schemas.android.com/apk/res/android"
-          android:versionCode="147"
-          android:versionName="6.0.9">
+          android:versionCode="158"
+          android:versionName="6.1.9">
 
     <uses-sdk
         android:minSdkVersion="11"
@@ -126,16 +126,20 @@
         <meta-data
             android:name="UMENG_CHANNEL"
             android:value="${UMENG_CHANNEL_VALUE}" />
+
         <!-- 启动页面 -->
-        <activity android:name=".ui.SplashActivity">
+        <activity
+            android:icon="@drawable/uuu"
+            android:name=".ui.SplashActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
+                <action android:name="com.modular.main.SplashActivity" />
                 <action android:name="cat.ereza.customactivityoncrash.RESTART" />
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-
-       
         </activity>
+
         <!-- 异常跳转页面 -->
         <activity
             android:name=".CustomCrashActivity"
@@ -554,7 +558,9 @@
         <activity
             android:name=".video.VideoActivity"
             android:theme="@style/Theme.AppCompat.NoActionBar" />
-        <activity android:name=".ui.erp.activity.CompanyActivity" />
+        <activity
+            android:hardwareAccelerated="true"
+            android:name=".ui.erp.activity.CompanyActivity" />
 
         <activity android:name=".ui.circle.PhoneSelectActivity" />
         <activity android:name=".ui.erp.activity.crm.ClientActivity">

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ApplySubscribeActivity.java

@@ -89,7 +89,7 @@ public class ApplySubscribeActivity extends BaseActivity {
                     String submitResult = msg.getData().getString("result");
                     Log.d("apply_subscrive_submit", submitResult);
                     Crouton.makeText(ApplySubscribeActivity.this, "申请提交成功", Style.CONFIRM).show();
-                    CommonUtil.imageToast(ApplySubscribeActivity.this, R.drawable.ic_apply_submit_success, "", 2000);
+                    com.core.utils.CommonUtil.imageToast(ApplySubscribeActivity.this, R.drawable.ic_apply_submit_success, "", 2000);
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     progressDialog.dismiss();

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

@@ -580,7 +580,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
         autoPresenter = AutoPresenter.onCreate();
 //		startService(new Intent(MainActivity.this, AutoErpService.class));
         LogUtil.d("OnCreate end:" + DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
-
+       
     }
 
     private AutoPresenter autoPresenter;

+ 39 - 18
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/PlatLeaveAddActivity.java

@@ -17,6 +17,7 @@ import android.widget.ImageView;
 import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
 import com.andreabaccega.widget.FormEditText;
 import com.common.LogUtil;
@@ -204,14 +205,21 @@ public class PlatLeaveAddActivity extends BaseActivity implements RecognizerDial
             switch (msg.what){
                 case DOC_FIRST_SAVE:
                     if (msg.getData() != null){
-                        String doc_first_save_result = msg.getData().getString("result");
-                        Log.d("doc_first_save_result", doc_first_save_result);
-                        Toast.makeText(getApplicationContext(),getString(R.string.common_save_success),Toast.LENGTH_LONG).show();
-                        mkeyValue = JSON.parseObject(doc_first_save_result).getIntValue("va_id");
-                        if (mkeyValue != -1){
-                            jumpTODetails(mkeyValue);
+                        try{
+                            String doc_first_save_result = msg.getData().getString("result");
+                            Log.d("doc_first_save_result", doc_first_save_result);
+                            if(StringUtil.isEmpty(doc_first_save_result)) return;
+                            Toast.makeText(getApplicationContext(),getString(R.string.common_save_success),Toast.LENGTH_LONG).show();
+                            mkeyValue = JSON.parseObject(doc_first_save_result).getIntValue("va_id");
+                            if (mkeyValue != -1){
+                                jumpTODetails(mkeyValue);
+                            }
+                            progressDialog.dismiss();
+                        }catch (JSONException e){
+                            e.printStackTrace();
+                        }catch (Exception e){
+                            e.printStackTrace();
                         }
-                        progressDialog.dismiss();
                     }else {
                         bt_save.setEnabled(true);
                         progressDialog.dismiss();
@@ -220,14 +228,20 @@ public class PlatLeaveAddActivity extends BaseActivity implements RecognizerDial
 
                 case DOC_UPDATE_SAVE:
                     if (msg.getData() != null) {
-                        if (!StringUtil.isEmpty(msg.getData().getString("result"))) {
-                            String doc_update_save_result = msg.getData().getString("result");
-                            Log.d("doc_update_save_result",doc_update_save_result);
-                            Toast.makeText(getApplicationContext(),getString(R.string.update_success),Toast.LENGTH_LONG).show();
-                            jumpTODetails(mkeyValue);
-                        }else {
-                            bt_save.setEnabled(true);
-                            progressDialog.dismiss();
+                        try{
+                            if (!StringUtil.isEmpty(msg.getData().getString("result"))) {
+                                String doc_update_save_result = msg.getData().getString("result");
+                                Log.d("doc_update_save_result",doc_update_save_result);
+                                Toast.makeText(getApplicationContext(),getString(R.string.update_success),Toast.LENGTH_LONG).show();
+                                jumpTODetails(mkeyValue);
+                            }else {
+                                bt_save.setEnabled(true);
+                                progressDialog.dismiss();
+                            }
+                        }catch (JSONException e){
+                            e.printStackTrace();
+                        }catch (Exception e){
+                            e.printStackTrace();
                         }
                     }else {
                         bt_save.setEnabled(true);
@@ -235,11 +249,18 @@ public class PlatLeaveAddActivity extends BaseActivity implements RecognizerDial
                     }
                     break;
                 default:
-                    if (msg.getData() != null) {
-                        if (!StringUtil.isEmpty(msg.getData().getString("result"))) {
-                            ToastMessage(msg.getData().getString("result"));
+                    try{
+                        if (msg.getData() != null) {
+                            if (!StringUtil.isEmpty(msg.getData().getString("result"))) {
+                                ToastMessage(msg.getData().getString("result"));
+                            }
                         }
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
                     }
+
                     break;
             }
         }

+ 101 - 48
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/TravelActivity.java

@@ -22,6 +22,7 @@ import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
 import com.andreabaccega.widget.FormEditText;
 import com.common.LogUtil;
@@ -150,18 +151,19 @@ public class TravelActivity extends BaseActivity implements OnClickListener, Rec
             switch (msg.what) {
                 case SUCCESS_SAVE:
                     progressDialog.dismiss();
-                    String result = msg.getData().getString("result");
+                    try{
+                        String result = msg.getData().getString("result");
 
-                    Toast.makeText(getApplicationContext(), getString(R.string.common_save_success), Toast.LENGTH_LONG).show();
-                    mkeyValue = JSON.parseObject(result).getIntValue("fp_id");
+                        Toast.makeText(getApplicationContext(), getString(R.string.common_save_success), Toast.LENGTH_LONG).show();
+                        mkeyValue = JSON.parseObject(result).getIntValue("fp_id");
 
-                    if (mkeyValue != -1 || mkeyValue != -1) {
-                        jumpTODetails(mkeyValue);
-                    } else {
-                        progressDialog.dismiss();
-                        bt_save.setEnabled(true);
-                    }
-                    LogUtil.e("travel", result);
+                        if (mkeyValue != -1 || mkeyValue != -1) {
+                            jumpTODetails(mkeyValue);
+                        } else {
+                            progressDialog.dismiss();
+                            bt_save.setEnabled(true);
+                        }
+                        LogUtil.e("travel", result);
 //                    try {
 //                        Map<Object, Object> keMap = FlexJsonUtil.fromJson(msg
 //                                .getData().getString("result"));
@@ -183,31 +185,50 @@ public class TravelActivity extends BaseActivity implements OnClickListener, Rec
 //                    } catch (Exception e) {
 //
 //                    }
-                    System.out.println("保存 result:" + result);
+                        System.out.println("保存 result:" + result);
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+
                     break;
                 case UPDATE_SAVE:
-                    if (msg.getData() != null) {
-                        if (!StringUtil.isEmpty(msg.getData().getString("result"))) {
-                            String update_save_result = msg.getData().getString("result");
-                            Log.d("doc_update_save_result", update_save_result);
-                            Toast.makeText(getApplicationContext(), getString(R.string.update_success), Toast.LENGTH_LONG).show();
-                            jumpTODetails(mkeyValue);
+                    try{
+                        if (msg.getData() != null) {
+                            if (!StringUtil.isEmpty(msg.getData().getString("result"))) {
+                                String update_save_result = msg.getData().getString("result");
+                                Log.d("doc_update_save_result", update_save_result);
+                                Toast.makeText(getApplicationContext(), getString(R.string.update_success), Toast.LENGTH_LONG).show();
+                                jumpTODetails(mkeyValue);
+                            } else {
+                                progressDialog.dismiss();
+                                bt_save.setEnabled(true);
+                            }
                         } else {
                             progressDialog.dismiss();
                             bt_save.setEnabled(true);
                         }
-                    } else {
-                        progressDialog.dismiss();
-                        bt_save.setEnabled(true);
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
                     }
+
                     break;
                 case SUCCESS_PRE:
-                    System.out.println("获取id result:"
-                            + msg.getData().getString("result"));
-                    va_id = Integer.valueOf(FlexJsonUtil
-                            .fromJson(msg.getData().getString("result")).get("id")
-                            .toString());
-                    getCodeHttpData();
+                    try{
+                        System.out.println("获取id result:"
+                                + msg.getData().getString("result"));
+                        va_id = Integer.valueOf(FlexJsonUtil
+                                .fromJson(msg.getData().getString("result")).get("id")
+                                .toString());
+                        getCodeHttpData();
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
                     break;
                 case SUCCESS_COMMIT:
                     progressDialog.dismiss();
@@ -238,8 +259,15 @@ public class TravelActivity extends BaseActivity implements OnClickListener, Rec
                             + msg.getData().getString("result"));
                     break;
                 case SUCCESS_DELETE:
-                    System.out.println("删除  result:"
-                            + msg.getData().getString("result"));
+                    try{
+                        System.out.println("删除  result:"
+                                + msg.getData().getString("result"));
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+
                     break;
                 case SUCCESS_UNCOMMIT:
                     progressDialog.dismiss();
@@ -283,11 +311,17 @@ public class TravelActivity extends BaseActivity implements OnClickListener, Rec
                             + msg.getData().getString("result"));
                     break;
                 case SUCCESS_PRECODE:
-                    va_code = FlexJsonUtil
-                            .fromJson(msg.getData().getString("result"))
-                            .get("code").toString();
-                    System.out.println("va_code=" + va_code);
-                    httpSave();
+                    try{
+                        va_code = FlexJsonUtil
+                                .fromJson(msg.getData().getString("result"))
+                                .get("code").toString();
+                        System.out.println("va_code=" + va_code);
+                        httpSave();
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
                     break;
                 case Constants.SUCCESS_INITDATA:
                     progressDialog.dismiss();
@@ -315,28 +349,47 @@ public class TravelActivity extends BaseActivity implements OnClickListener, Rec
                     break;
                 case SUCCESS_SIGN:
                     progressDialog.dismiss();
-                    ;
-                    lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
-                            "combdatas");
-                    if (lists.isEmpty()) {
-                        lists.add("无");
+                    try{
+                        lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
+                                "combdatas");
+                        if (lists.isEmpty()) {
+                            lists.add("无");
+                        }
+                        showSignDialog(findViewById(R.id.et_extra_sign));
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
                     }
-                    showSignDialog(findViewById(R.id.et_extra_sign));
+
                     break;
                 case SUCCESS_MANKIND:
                     progressDialog.dismiss();
-                    ;
-                    lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
-                            "combdatas");
-                    if (lists.isEmpty()) {
-                        lists.add("无");
+                    try{
+                        lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
+                                "combdatas");
+                        if (lists.isEmpty()) {
+                            lists.add("无");
+                        }
+                        showTypeDialog(findViewById(R.id.et_trave_type));
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
                     }
-                    showTypeDialog(findViewById(R.id.et_trave_type));
+
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
-                    String exception = msg.getData().getString("result");
-                    ViewUtil.ToastMessage(mContext, exception);
-                    progressDialog.dismiss();
+                    try{
+                        String exception = msg.getData().getString("result");
+                        ViewUtil.ToastMessage(mContext, exception);
+                        progressDialog.dismiss();
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+
                     break;
                 default:
                     break;

+ 50 - 34
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java

@@ -6,10 +6,10 @@ import android.app.Activity;
 import android.content.ClipData;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.ActivityInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.net.Uri;
-import android.net.http.SslError;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
@@ -19,14 +19,7 @@ import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
-import android.webkit.CookieManager;
-import android.webkit.CookieSyncManager;
 import android.webkit.JavascriptInterface;
-import android.webkit.SslErrorHandler;
-import android.webkit.ValueCallback;
-import android.webkit.WebChromeClient;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
 import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.TextView;
@@ -40,10 +33,16 @@ import com.common.system.SystemUtil;
 import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
 import com.core.net.http.ViewUtil;
-import com.handmark.pulltorefresh.library.PullToRefreshBase;
-import com.handmark.pulltorefresh.library.PullToRefreshWebView;
 import com.modular.appmessages.model.SubMessage;
 import com.modular.login.activity.LoginActivity;
+import com.tencent.smtt.export.external.interfaces.SslError;
+import com.tencent.smtt.export.external.interfaces.SslErrorHandler;
+import com.tencent.smtt.sdk.CookieManager;
+import com.tencent.smtt.sdk.CookieSyncManager;
+import com.tencent.smtt.sdk.ValueCallback;
+import com.tencent.smtt.sdk.WebChromeClient;
+import com.tencent.smtt.sdk.WebView;
+import com.tencent.smtt.sdk.WebViewClient;
 import com.umeng.socialize.ShareAction;
 import com.umeng.socialize.bean.SHARE_MEDIA;
 import com.umeng.socialize.media.UMImage;
@@ -67,7 +66,7 @@ import java.util.Map;
  */
 public class WebViewCommActivity extends BaseActivity implements View.OnClickListener {
     public static final String TIME = "WebViewCommActivity_time";
-    private PullToRefreshWebView webView;
+    private com.tencent.smtt.sdk.WebView webView;
     private ProgressBar pb;
     private ImageView back;
     private ImageView refresh;
@@ -122,7 +121,7 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
         }
         Map<String, String> headers = new HashMap<>();
         headers.put("clientType", "uas client");
-        webView.getRefreshableView().loadUrl(url, headers);
+        webView.loadUrl(url, headers);
     }
 
     @SuppressLint("SetJavaScriptEnabled")
@@ -131,10 +130,9 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
         super.onCreate(savedInstanceState);
         Intent intent = getIntent();
         setContentView(R.layout.activity_webview);
-        webView = (PullToRefreshWebView) findViewById(R.id.webView_listview);
+        webView = (com.tencent.smtt.sdk.WebView) findViewById(R.id.webView_listview);
         mPreTv = (TextView) findViewById(R.id.web_previous_tv);
         mNextTv = (TextView) findViewById(R.id.web_next_tv);
-        webView.setMode(PullToRefreshBase.Mode.DISABLED);
         mReadSubs = new ArrayList<>();
         isStartApp = false;
         pb = (ProgressBar) findViewById(R.id.pb);
@@ -147,7 +145,10 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
             getSupportActionBar().setTitle(msg_title);
         }
         String StartApp = intent.getStringExtra("isStartApp");//参数账套
-
+//        if (intent.getBooleanExtra("orientation",false)){
+//            LogUtil.i("jinlai sssss");
+//            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+//        }
         mSubsAct = intent.getStringExtra("subsact");
         mPosition = intent.getIntExtra("position", -1);
         mSubscriptionMessages = (ArrayList<SubMessage>) intent.getSerializableExtra("subsdata");
@@ -194,23 +195,26 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
         }
         long oldtime = PreferenceUtils.getLong(this, TIME, System.currentTimeMillis());
         if (((System.currentTimeMillis() - oldtime) / (1000 * 60)) > 20) {
-            if (isCookie)
+            if (isCookie) {
                 login(this);
+            }
         }
-        webView.getRefreshableView().getSettings().setJavaScriptEnabled(true);
-        webView.getRefreshableView().getSettings().setAllowFileAccess(true);// 设置允许访问文件数据
+        webView.getSettings().setJavaScriptEnabled(true);
+        webView.getSettings().setAllowFileAccess(true);// 设置允许访问文件数据
         //  webView.getRefreshableView().getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); //设置 缓存模式
-        webView.getRefreshableView().getSettings().setDomStorageEnabled(true);
-        webView.getRefreshableView().getSettings().setDatabaseEnabled(true);
-        webView.getRefreshableView().getSettings().setAppCacheEnabled(true);
-        webView.getRefreshableView().getSettings().setSavePassword(true);
-        webView.getRefreshableView().getSettings().setSaveFormData(true);
+        webView.getSettings().setDomStorageEnabled(true);
+        webView.getSettings().setDatabaseEnabled(true);
+        webView.getSettings().setAppCacheEnabled(true);
+        webView.getSettings().setSavePassword(true);
+        webView.getSettings().setSaveFormData(true);
 
         // 修改ua使得web端正确判断
-        webView.getRefreshableView().addJavascriptInterface(new JSWebView(), "JSWebView"); //在JSWebView类里实现javascript想调用的方法,并将其实例化传入webview, "JSWebView"这个字串告诉javascript调用哪个实例的方法
+        webView.addJavascriptInterface(new JSWebView(), "JSWebView"); //在JSWebView类里实现javascript想调用的方法,并将其实例化传入webview, "JSWebView"这个字串告诉javascript调用哪个实例的方法
+
+        setThirdPartyCookiesEnabled(true);
 
-        String ua = webView.getRefreshableView().getSettings().getUserAgentString();
-        webView.getRefreshableView().getSettings().setUserAgentString(ua + " uasClient");
+        String ua = webView.getSettings().getUserAgentString();
+        webView.getSettings().setUserAgentString(ua + " uasClient");
 
         if (isCookie) {
             synCookies(this, url);
@@ -221,10 +225,10 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
         headers.put("client-name", "uasClient");
 //          url="http://192.168.253.132:9090/platform-b2c/?client=true";
         Log.d("webUrl", url);
-        webView.getRefreshableView().loadUrl(url, headers);
+        webView.loadUrl(url, headers);
 //        webView.getRefreshableView().loadUrl("file:///android_asset/submit.html");
-        webView.getRefreshableView().setWebChromeClient(new ChromeClient());
-        webView.getRefreshableView().setWebViewClient(new WebViewClient() {
+        webView.setWebChromeClient(new ChromeClient());
+        webView.setWebViewClient(new WebViewClient(){
             @Override
             public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                 if (isCookie) {
@@ -235,6 +239,7 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
                 super.onReceivedError(view, errorCode, description, failingUrl);
             }
 
+            @Override
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
                 if (!TextUtils.isEmpty(url) && !url.equals("http://www.ubtob.com/signin#")) {
                     Log.d("loadurl", url);
@@ -270,6 +275,7 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
                 handler.proceed();
             }
 
+            @Override
             public void onPageFinished(WebView view, String url) {
                 CookieManager cookieManager = CookieManager.getInstance();
                 String CookieStr = cookieManager.getCookie(url);
@@ -286,7 +292,9 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
         switch (v.getId()) {
             case R.id.web_previous_tv:
                 mPosition--;
-                if (mSubscriptionMessages.get(mPosition).getStatus() == 0) mPosition--;
+                if (mSubscriptionMessages.get(mPosition).getStatus() == 0) {
+                    mPosition--;
+                }
                 break;
             case R.id.web_next_tv:
                 mPosition++;
@@ -321,7 +329,7 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
                     + "&sessionId=" + CommonUtil.getSharedPreferences(ct, "sessionId");
             Map<String, String> headers = new HashMap<>();
             headers.put("client-name", "uasClient");
-            webView.getRefreshableView().loadUrl(url, headers);
+            webView.loadUrl(url, headers);
         }
     }
 
@@ -355,7 +363,6 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
             if (newProgress == 100) {
                 pb.setProgress(newProgress);
                 pb.setVisibility(View.GONE);
-                webView.onRefreshComplete();
             }
             super.onProgressChanged(view, newProgress);
         }
@@ -473,8 +480,8 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
         CookieManager cookieManager = CookieManager.getInstance();
         cookieManager.removeSessionCookie();//移除
         cookieManager.removeAllCookie();
-        webView.getRefreshableView().clearHistory();
-        webView.getRefreshableView().clearCache(true);
+        webView.clearHistory();
+        webView.clearCache(true);
     }
 
     private void login(Context context) {
@@ -483,6 +490,15 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
         PreferenceUtils.putLong(context, TIME, System.currentTimeMillis());
     }
 
+    @SuppressLint("NewApi")
+    public void setThirdPartyCookiesEnabled(final boolean enabled) {
+        if (Build.VERSION.SDK_INT >= 21) {
+            com.tencent.smtt.sdk.CookieManager.getInstance().setAcceptThirdPartyCookies(webView, enabled);
+        } else {
+            com.tencent.smtt.sdk.CookieManager.getInstance().setAcceptCookie(true);
+        }
+    }
+
     @Override
     public void onBackPressed() {
         if (!mReadSubs.isEmpty()) {

+ 116 - 46
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WorkExtraActivity.java

@@ -23,6 +23,7 @@ import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
 import com.andreabaccega.widget.FormEditText;
 import com.common.LogUtil;
@@ -152,7 +153,8 @@ public class WorkExtraActivity extends BaseActivity implements OnClickListener,
             switch (msg.what) {
                 case SUCCESS_SAVE:
                     progressDialog.dismiss();
-                    String result = msg.getData().getString("result");
+                    try{
+                        String result = msg.getData().getString("result");
 //                    try {
 //                        Map<Object, Object> keMap = FlexJsonUtil.fromJson(msg
 //                                .getData().getString("result"));
@@ -178,29 +180,49 @@ public class WorkExtraActivity extends BaseActivity implements OnClickListener,
 //
 //                    }
 
-                    mkeyValue = JSON.parseObject(result).getIntValue("wo_id");
-                    if (mkeyValue != -1){
-                        jumpTODetails(mkeyValue);
+                        mkeyValue = JSON.parseObject(result).getIntValue("wo_id");
+                        if (mkeyValue != -1){
+                            jumpTODetails(mkeyValue);
+                        }
+                        System.out.println("保存 result:" + result);
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
                     }
-                    System.out.println("保存 result:" + result);
+
                     break;
                 case UPDATE_SAVE:
-                    if (msg.getData() != null) {
-                        if (!StringUtil.isEmpty(msg.getData().getString("result"))) {
-                            String doc_update_save_result = msg.getData().getString("result");
-                            Log.d("doc_update_save_result",doc_update_save_result);
-                            Toast.makeText(getApplicationContext(), "更新成功", Toast.LENGTH_LONG).show();
-                            jumpTODetails(mkeyValue);
+                    try{
+                        if (msg.getData() != null) {
+                            if (!StringUtil.isEmpty(msg.getData().getString("result"))) {
+                                String doc_update_save_result = msg.getData().getString("result");
+                                Log.d("doc_update_save_result",doc_update_save_result);
+                                Toast.makeText(getApplicationContext(), "更新成功", Toast.LENGTH_LONG).show();
+                                jumpTODetails(mkeyValue);
+                            }
                         }
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
                     }
+
                     break;
                 case SUCCESS_PRE:
-                    System.out.println("获取id result:"
-                            + msg.getData().getString("result"));
-                    va_id = Integer.valueOf(FlexJsonUtil
-                            .fromJson(msg.getData().getString("result")).get("id")
-                            .toString());
-                    getCodeHttpData();
+                    try{
+                        System.out.println("获取id result:"
+                                + msg.getData().getString("result"));
+                        va_id = Integer.valueOf(FlexJsonUtil
+                                .fromJson(msg.getData().getString("result")).get("id")
+                                .toString());
+                        getCodeHttpData();
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+
                     break;
                 case SUCCESS_COMMIT:
                     progressDialog.dismiss();
@@ -227,10 +249,26 @@ public class WorkExtraActivity extends BaseActivity implements OnClickListener,
 //                        messageDisplayCommit(msg);
 //                        editnoclik();
 //                    }
+                    try{
+                        System.out.println("提交 result:"
+                                + msg.getData().getString("result"));
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
                     System.out.println("提交 result:"
                             + msg.getData().getString("result"));
                     break;
                 case SUCCESS_DELETE:
+                    try{
+                        System.out.println("删除  result:"
+                                + msg.getData().getString("result"));
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
                     System.out.println("删除  result:"
                             + msg.getData().getString("result"));
                     break;
@@ -276,11 +314,18 @@ public class WorkExtraActivity extends BaseActivity implements OnClickListener,
                             + msg.getData().getString("result"));
                     break;
                 case SUCCESS_PRECODE:
-                    va_code = FlexJsonUtil
-                            .fromJson(msg.getData().getString("result"))
-                            .get("code").toString();
-                    httpSave();
-                    System.out.println("va_code=" + va_code);
+                    try{
+                        va_code = FlexJsonUtil
+                                .fromJson(msg.getData().getString("result"))
+                                .get("code").toString();
+                        httpSave();
+                        System.out.println("va_code=" + va_code);
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+
                     break;
                 case Constants.SUCCESS_INITDATA:
                     progressDialog.dismiss();
@@ -306,41 +351,66 @@ public class WorkExtraActivity extends BaseActivity implements OnClickListener,
                     break;
                 case SUCCESS_TYPE://加班类型
                     progressDialog.dismiss();
-                    ;
-                    lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
-                            "combdatas");
-                    if (lists.isEmpty()) {
-                        lists.add("无");
+                    try{
+                        lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
+                                "combdatas");
+                        if (lists.isEmpty()) {
+                            lists.add("无");
+                        }
+                        title = "加班类型";
+                        showTypeDialog(findViewById(R.id.et_extra_type));
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
                     }
-                    title = "加班类型";
-                    showTypeDialog(findViewById(R.id.et_extra_type));
+
                     break;
                 case SUCCESS_ISALLDAY://是否全天
                     progressDialog.dismiss();
-                    ;
-                    lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
-                            "combdatas");
-                    if (lists.isEmpty()) {
-                        lists.add("无");
+                    try{
+                        lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
+                                "combdatas");
+                        if (lists.isEmpty()) {
+                            lists.add("无");
+                        }
+                        title = "是否为全天";
+                        showTypeDialog(findViewById(R.id.et_extra_isallday));
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
                     }
-                    title = "是否为全天";
-                    showTypeDialog(findViewById(R.id.et_extra_isallday));
+
                     break;
                 case SUCCESS_MANKIND:
                     progressDialog.dismiss();
-                    ;
-                    lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
-                            "combdatas");
-                    if (lists.isEmpty()) {
-                        lists.add("无");
+                    try{
+                        lists = (List<String>) FlexJsonUtil.fromJson(msg.getData().getString("result")).get(
+                                "combdatas");
+                        if (lists.isEmpty()) {
+                            lists.add("无");
+                        }
+                        title = "是否为全天";
+                        showListDialog("人员类型", et_extra_mankind);
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
                     }
-                    title = "是否为全天";
-                    showListDialog("人员类型", et_extra_mankind);
+
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
-                    String exception = msg.getData().getString("result");
-                    ViewUtil.ToastMessage(mContext, exception);
-                    progressDialog.dismiss();
+                    try{
+                        String exception = msg.getData().getString("result");
+                        ViewUtil.ToastMessage(mContext, exception);
+                        progressDialog.dismiss();
+                    }catch (JSONException e){
+                        e.printStackTrace();
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+
                     break;
                 default:
                     break;

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

@@ -81,9 +81,7 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
     private NScrollerGridView gv_topic;
     List<DataState> dataStates;
     GridDataAdapter adapter;
-
-
-    private String[] mTypes =  {"商务洽谈", "开会", "外出娱乐", "吃饭", "卡拉OK", "高尔夫","麻将","电影","其它" };
+    private String[] mTypes ;
     private String phone;
 
     @Override
@@ -91,20 +89,21 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_book_add);
         getSupportActionBar().setTitle(getString(R.string.booking_add));
-        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);
-
-        topic_rl = (RelativeLayout) findViewById(R.id.topic_rl);
-        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);
-        tv_book_topic.setText("商务洽谈");
-        bt_commit = (Button) findViewById(R.id.submit_btn);
+        tvBookObject =findViewById(R.id.tv_book_object);
+        companyAddRl =findViewById(R.id.company_add_rl);
+        tvBookTimes =findViewById(R.id.tv_book_times);
+        remarkRl = findViewById(R.id.remark_rl);
+        rlObject =findViewById(R.id.rl_object);
+
+        topic_rl = findViewById(R.id.topic_rl);
+        tvBookAddress =findViewById(R.id.tv_book_address);
+        et_book_content =findViewById(R.id.et_book_content);
+
+        tv_book_topic = findViewById(R.id.tv_book_topic);
+        gv_topic = findViewById(R.id.gv_topic);
+        mTypes = getResources().getStringArray(R.array.booking_topics);
+        tv_book_topic.setText(mTypes[0]);
+        bt_commit = findViewById(R.id.submit_btn);
         findViewById(R.id.submit_btn).setOnClickListener(this);
         rlObject.setOnClickListener(this);
         companyAddRl.setOnClickListener(this);
@@ -169,7 +168,6 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
                 break;
             case R.id.company_add_rl://时段
                 if (!StringUtil.isEmpty(tvBookObject.getText().toString())) {
-                  LogUtil.d("HttpLogs","imid:"+imId);
                     startActivityForResult(new Intent(mContext, SelectCalendarActivity.class)
                                     .putExtra("startDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
                                     .putExtra("endDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
@@ -198,7 +196,6 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
                 if (model != null) {
                     ToastMessage("预约对象不能更改!");
                 } else {
-                    //SelectPContactsActivity
                     intent = new Intent(this, ContactsActivity.class);
 //                    SelectCollisionTurnBean bean = new SelectCollisionTurnBean()
 //                            .setTitle(getString(R.string.booking_object_name))
@@ -226,18 +223,13 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
                 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 0x01://对象
-                // SelectEmUser model = data.getParcelableExtra("data");
                 ContactsModel model = data.getParcelableExtra("data");
-                LogUtil.d("Test",JSON.toJSONString(model));
                 imId = model.getImid();
                 phone = model.getPhone();
                 tvBookObject.setText(model.getName());
@@ -274,11 +266,6 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
             bt_commit.setEnabled(true);
             return;
         }
-//        if (StringUtil.isEmpty(et_book_content.getText().toString())) {
-//            ToastMessage("请填写预约内容!");
-//            bt_commit.setEnabled(true);
-//            return;
-//        }
         if (isEmoji(et_book_content.getText().toString()) || isEmoji(tvBookObject.getText().toString())) {
             ToastMessage("不支持表情符号的输入!");
             bt_commit.setEnabled(true);
@@ -303,7 +290,6 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
                 "\"ab_longitude\":\"" + longitude + "\",\n" +
                 "\"ab_latitude\":\"" + latitude + "\"" +
                 "}\n";
-        LogUtil.prinlnLongMsg("Test", json);
         String url = Constants.IM_BASE_URL() + "user/appSaveBooking";
         Map<String, Object> params = new HashMap<>();
         params.put("token", MyApplication.getInstance().mAccessToken);
@@ -342,19 +328,12 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
             bt_commit.setEnabled(true);
             return;
         }
-//        if (StringUtil.isEmpty(et_book_content.getText().toString())) {
-//            ToastMessage("请填写预约内容!");
-//            bt_commit.setEnabled(true);
-//            return;
-//        }
-
         if (isEmoji(et_book_content.getText().toString()) || isEmoji(tvBookObject.getText().toString())) {
             ToastMessage("不支持表情符号的输入!");
             bt_commit.setEnabled(true);
             return;
         }
         showLoading();
-        //   "\"ab_sharestatus\":\"未共享\","+//变为未共享
         String content = "";
         content = et_book_content.getText().toString();
         content = content.replace("'", "''");
@@ -390,7 +369,6 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
         public void handleMessage(Message msg) {
             dimssLoading();
             switch (msg.what) {
-
                 case 0x01:
                     try {
                         String resutl = JSON.parseObject(msg.getData().getString("result")).getString("result");
@@ -451,7 +429,6 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
             selectBean.setName(mTypes[i]);
             formBeaan.add(selectBean);
         }
-
         Intent intent = new Intent();
         intent.setClass(this, SelectActivity.class);
         intent.putExtra("type", 2);
@@ -535,7 +512,6 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
         }
     }
 
-
     private void invite(String user, final String modeid) {
         final String name = CommonUtil.getName();
         final String phone = user.trim().replaceAll(" ", "");
@@ -573,9 +549,4 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
         };
         MyApplication.getInstance().getFastVolley().addDefaultRequest("Volley", request);
     }
-
-
-   
-}
-
-
+}

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

@@ -536,7 +536,7 @@ public class BookingListActivity extends OABaseActivity implements HttpImp, View
 //                                int day = c.get(Calendar.DAY_OF_MONTH);
                             //                               calendarView.setDownIndex(day);
                             if (mDatas.size() == 0) {
-                                emptyLayout.setEmptyMessage("您还没有预约,现在就去约吧!");
+                                emptyLayout.setEmptyMessage(getString(R.string.book_empty));
                                 emptyLayout.showEmpty();
                             }
                         }

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

@@ -3,6 +3,7 @@ package com.xzjmyk.pm.activity.ui.erp.adapter;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -101,6 +102,7 @@ public class WorkMenuParentAdapter extends BaseAdapter {
             moduleListBean.setIsHide(false);
             moduleListBean.setIsLocalMenu(true);
             moduleListBean.setMenuActivity("com.modular.work.WorkFuncSetActivity");
+            moduleListBean.setMenuTag(object.getModuleTag());
             moduleListBean.setMenuIcon("add_picture");
             moduleListBean.setMenuName("str_work_add_func");
             moduleListBean.setMenuUrl("");
@@ -162,6 +164,15 @@ public class WorkMenuParentAdapter extends BaseAdapter {
                 //上传管理员状态
                 intent.putExtra(AppConfig.IS_ADMIN, isAdmin);
                 break;
+            case "com.modular.form.TravelDataFormDetailActivity":
+                if (ApiUtils.getApiModel() instanceof ApiUAS) {
+                    String travelCaller = CommonUtil.getSharedPreferences(context, Constants.WORK_TRAVEL_CALLER_CACHE);
+                    if (!TextUtils.isEmpty(travelCaller) && "FeePlease!CCSQ!new".equals(travelCaller)) {
+                        intent.putExtra("caller", travelCaller);
+                        break;
+                    }
+                }
+                intent.setAction("com.modular.form.DataFormDetailActivity");
             case "com.modular.form.DataFormDetailActivity":
                 if ("ic_work_special_attendance".equals(menuIcon)) {
                     intent.putExtra("caller", "SpeAttendance");
@@ -193,8 +204,22 @@ public class WorkMenuParentAdapter extends BaseAdapter {
                             intent.putExtra("caller", travelCaller);
                         }
                     }
+                } else {
+                    intent.putExtra("caller", caller);
+                    String title = null;
+                    if (moduleListBean.isLocalMenu()) {
+                        try {
+                            title = context.getString(mResources.getIdentifier(moduleListBean.getMenuName(), "string", context.getPackageName()));
+                        } catch (Exception e) {
+                            title = moduleListBean.getMenuName();
+                        }
+                    } else {
+                        title = moduleListBean.getMenuName();
+                    }
+                    intent.putExtra("title", title);
                 }
                 break;
+
             case "com.modular.oa.StatisticsActivity":
                 PreferenceUtils.putInt(Constants.NEW_FUNCTION_NOTICE, 1);
                 break;
@@ -206,8 +231,8 @@ public class WorkMenuParentAdapter extends BaseAdapter {
                     intent.putExtra("type", 1);
                 }
                 break;
-            case  "com.modular.apputils.activity.SimpleWebActivity":
-          //  case "com.modular.main.WebViewCommActivity":
+            case "com.modular.apputils.activity.SimpleWebActivity":
+                //  case "com.modular.main.WebViewCommActivity":
                 if ("ic_work_b2b_commerce".equals(menuIcon)) {
                     String phone = com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences(context, "user_phone");
                     String password = com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences(context, "user_password");

+ 42 - 71
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorkPlatFragment.java

@@ -2,6 +2,7 @@ package com.xzjmyk.pm.activity.ui.erp.fragment;
 
 import android.content.Intent;
 import android.content.res.Resources;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -13,6 +14,7 @@ import android.widget.TextView;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.common.config.BaseConfig;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.core.api.wxapi.ApiPlatform;
@@ -112,10 +114,10 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
     @Override
     protected void initDatas() {
         getLocalMenu();
-        if (isFirstLoad) {
-            loadOrdersCaller();
-        }
-//        obtainCityIndustryService();
+//        if (isFirstLoad) {
+        loadOrdersCaller();
+//        }
+        obtainCityIndustryService();
     }
 
     private void getLocalMenu() {
@@ -153,14 +155,15 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
     private void obtainCityIndustryService() {
         Map<String, Object> params = new HashMap<>();
         params.put("kind", "app");
-        params.put("Cookie", "JSESSIONID=" + com.core.utils.CommonUtil.getSharedPreferences(mContext, "sessionId"));
+        params.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(mContext, "sessionId"));
 
         LinkedHashMap<String, Object> header = new LinkedHashMap<>();
-        header.put("Cookie", "JSESSIONID=" + com.core.utils.CommonUtil.getSharedPreferences(mContext, "sessionId"));
+        header.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(mContext, "sessionId"));
 
         HttpParams request = new HttpParams.Builder()
                 .flag(OBTAIN_APP_CITY_INDUSTRY_SERVICE)
-                .url("api/serve/mainPage/getServices.action")
+//                .url("api/serve/mainPage/getServices.action")
+                .url("mobile/common/getServices.action")
                 .setHeaders(header)
                 .setParams(params)
                 .method(Method.GET)
@@ -196,7 +199,8 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
         String url = "mobile/oa/getoaconifg.action";
         HttpParams request = new HttpParams.Builder()
                 .url(url)
-                .setParams(new HashMap<String, Object>())
+                .addParam("master", CommonUtil.getMaster())
+                .addHeader("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(BaseConfig.getContext(), "sessionId"))
                 .flag(LOAD_ORDERS_CALLER)
                 .method(Method.GET)
                 .build();
@@ -215,6 +219,8 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
 
     @Override
     public void requestSuccess(int what, Object object) {
+        if (object != null)
+            Log.d("worksuccess", object.toString());
         if (what == Constants.LOAD_WORK_MENU_CACHE) {
             mCacheMenuTypeBeans = (List<WorkMenuBean>) object;
             mWorkMenuBeans.clear();
@@ -248,7 +254,8 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
                     workMenuBean.setModuleVisible(true);
                     workMenuBean.setIsLocalModule(false);
                     workMenuBean.setModuleName(JSONUtil.getText(configObject, "st_name"));
-                    workMenuBean.setModuleTag(JSONUtil.getText(configObject, "st_id"));
+                    // TODO: 2018/3/16 待修改
+                    workMenuBean.setModuleTag(JSONUtil.getText(configObject, "st_tag"));
                     workMenuBean.setModuleId(JSONUtil.getText(configObject, "st_id"));
 
                     JSONArray serviceArray = configObject.getJSONArray("serves");
@@ -260,10 +267,12 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
                                 WorkMenuBean.ModuleListBean moduleListBean = new WorkMenuBean.ModuleListBean();
                                 moduleListBean.setMenuUrl("");
                                 moduleListBean.setMenuName(JSONUtil.getText(serviceObject, "sv_name"));
-                                moduleListBean.setMenuActivity("com.modular.work.CommonDataFormActivity");
+                                moduleListBean.setMenuActivity("com.modular.form.DataFormDetailActivity");
+                                // TODO: 2018/3/16 待修改
+                                moduleListBean.setMenuTag(JSONUtil.getText(serviceObject, "sv_tag"));
                                 moduleListBean.setIsLocalMenu(false);
                                 moduleListBean.setIsHide(false);
-                                moduleListBean.setCaller(JSONUtil.getText(serviceObject, "sv_id"));
+                                moduleListBean.setCaller(JSONUtil.getText(serviceObject, "sv_caller"));
 
                                 JSONObject logourlObject = serviceObject.getJSONObject("sv_logourl");
                                 if (logourlObject != null) {
@@ -279,45 +288,30 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
                 }
             }
 
+            //循环遍历网络数据,更新本地的网络应用,添加新增的网络应用
             for (WorkMenuBean netWorkMenuBean : netWorkMenuBeans) {
                 boolean isExist = false;
-                String netModuleName = netWorkMenuBean.getModuleName();
+                String netModuleTag = netWorkMenuBean.getModuleTag();
                 List<WorkMenuBean.ModuleListBean> netModuleList = netWorkMenuBean.getModuleList();
                 for (WorkMenuBean cacheWorkMenuBean : mCacheMenuTypeBeans) {
-                    String cacheModuleName = null;
-                    if (cacheWorkMenuBean.isLocalModule()) {
-                        try {
-                            cacheModuleName = getString(mResources.getIdentifier(cacheWorkMenuBean.getModuleName(), "string", mContext.getPackageName()));
-                        } catch (Exception e) {
-                            cacheModuleName = cacheWorkMenuBean.getModuleName();
-                        }
-                    } else {
-                        cacheModuleName = cacheWorkMenuBean.getModuleName();
-                    }
+                    String cacheModuleTag = cacheWorkMenuBean.getModuleTag();
                     List<WorkMenuBean.ModuleListBean> cacheModuleList = cacheWorkMenuBean.getModuleList();
-                    if (cacheModuleName.equals(netModuleName)) {
+                    //如果缓存数据中存在网络返回的模块,则根据网络数据更新缓存
+                    if (cacheModuleTag.equals(netModuleTag)) {
                         isExist = true;
                         cacheWorkMenuBean.setModuleId(netWorkMenuBean.getModuleId());
                         cacheWorkMenuBean.setModuleTag(netWorkMenuBean.getModuleTag());
                         for (WorkMenuBean.ModuleListBean netModuleListBean : netModuleList) {
                             boolean isFuncExist = false;
-                            String netMenuName = netModuleListBean.getMenuName();
+                            String netMenuTag = netModuleListBean.getMenuTag();
                             for (WorkMenuBean.ModuleListBean cacheModuleListBean : cacheModuleList) {
-                                String cacheMenuName = null;
-                                if (cacheModuleListBean.isLocalMenu()) {
-                                    try {
-                                        cacheMenuName = getString(mResources.getIdentifier(cacheModuleListBean.getMenuName(), "string", mContext.getPackageName()));
-                                    } catch (Exception e) {
-                                        cacheMenuName = cacheModuleListBean.getMenuName();
-                                    }
-                                } else {
-                                    cacheMenuName = cacheModuleListBean.getMenuName();
-                                }
-                                if (cacheMenuName.equals(netMenuName)) {
+                                String cacheMenuTag = cacheModuleListBean.getMenuTag();
+                                if (cacheMenuTag.equals(netMenuTag)) {
                                     isFuncExist = true;
                                     if (!cacheModuleListBean.isLocalMenu()) {
                                         cacheModuleListBean.setCaller(netModuleListBean.getCaller());
                                         cacheModuleListBean.setMenuActivity(netModuleListBean.getMenuActivity());
+                                        cacheModuleListBean.setMenuTag(netModuleListBean.getMenuTag());
                                         cacheModuleListBean.setMenuIcon(netModuleListBean.getMenuIcon());
                                         cacheModuleListBean.setMenuName(netModuleListBean.getMenuName());
                                         cacheModuleListBean.setMenuUrl(netModuleListBean.getMenuUrl());
@@ -325,28 +319,21 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
                                     break;
                                 }
                             }
+                            //如果缓存中不存在,说明是新增的网络引用,则直接添加到缓存中
                             if (!isFuncExist) {
                                 cacheModuleList.add(netModuleListBean);
                             }
                         }
 
+                        //循环缓存数据和网络数据,将缓存中多余的网络应用去掉
                         for (int i = cacheModuleList.size() - 1; i >= 0; i--) {
                             WorkMenuBean.ModuleListBean cacheModuleListBean = cacheModuleList.get(i);
                             if (!cacheModuleListBean.isLocalMenu()) {
                                 boolean isCacheExist = false;
-                                String cacheMenuName = null;
-                                if (cacheModuleListBean.isLocalMenu()) {
-                                    try {
-                                        cacheMenuName = getString(mResources.getIdentifier(cacheModuleListBean.getMenuName(), "string", mContext.getPackageName()));
-                                    } catch (Exception e) {
-                                        cacheMenuName = cacheModuleListBean.getMenuName();
-                                    }
-                                } else {
-                                    cacheMenuName = cacheModuleListBean.getMenuName();
-                                }
+                                String cacheMenuTag = cacheModuleListBean.getMenuTag();
                                 for (WorkMenuBean.ModuleListBean netModuleListBean : netModuleList) {
-                                    String netMenuName = netModuleListBean.getMenuName();
-                                    if (cacheMenuName.equals(netMenuName)) {
+                                    String netMenuTag = netModuleListBean.getMenuTag();
+                                    if (cacheMenuTag.equals(netMenuTag)) {
                                         isCacheExist = true;
                                         break;
                                     }
@@ -360,37 +347,21 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
                         break;
                     }
                 }
+                //如果缓存数据中不存在,说明是网络数据新增的模块,则直接添加进缓存中
                 if (!isExist) {
                     mCacheMenuTypeBeans.add(netWorkMenuBean);
                 }
             }
 
+            //循环遍历缓存数据和网络数据,如果缓存数据中存在网络数据中不存在的模块,则需要去除
             for (int i = mCacheMenuTypeBeans.size() - 1; i >= 0; i--) {
                 WorkMenuBean cacheWorkMenuBean = mCacheMenuTypeBeans.get(i);
                 if (!cacheWorkMenuBean.isLocalModule()) {
                     boolean isCacheExist = false;
-                    String cacheModuleName = null;
-                    if (cacheWorkMenuBean.isLocalModule()) {
-                        try {
-                            cacheModuleName = getString(mResources.getIdentifier(cacheWorkMenuBean.getModuleName(), "string", mContext.getPackageName()));
-                        } catch (Exception e) {
-                            cacheModuleName = cacheWorkMenuBean.getModuleName();
-                        }
-                    } else {
-                        cacheModuleName = cacheWorkMenuBean.getModuleName();
-                    }
+                    String cacheModuleTag = cacheWorkMenuBean.getModuleTag();
                     for (WorkMenuBean netWorkMenuBean : netWorkMenuBeans) {
-                        String netModuleName = null;
-                        if (netWorkMenuBean.isLocalModule()) {
-                            try {
-                                netModuleName = getString(mResources.getIdentifier(netWorkMenuBean.getModuleName(), "string", mContext.getPackageName()));
-                            } catch (Exception e) {
-                                netModuleName = netWorkMenuBean.getModuleName();
-                            }
-                        } else {
-                            netModuleName = netWorkMenuBean.getModuleName();
-                        }
-                        if (cacheModuleName.equals(netModuleName)) {
+                        String netModuleTag = netWorkMenuBean.getModuleTag();
+                        if (cacheModuleTag.equals(netModuleTag)) {
                             isCacheExist = true;
                             break;
                         }
@@ -436,8 +407,8 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
 
     @Override
     public void requestError(int what, String errorMsg) {
-        if (errorMsg != null && errorMsg.length() <= 40) {
-            toast(errorMsg);
-        }
+//        if (errorMsg != null && errorMsg.length() <= 40) {
+//            toast(errorMsg);
+//        }
     }
 }

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

@@ -78,7 +78,6 @@ public class SelectCollisionPresenter {
             } else {
                 switch (selectBean.getResultCode()) {
                     case 0x001:
-                        
                         loadBookingCPersons(selectBean.getTitle());
                         break;
                     default:

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

@@ -39,6 +39,7 @@ import com.core.utils.FlexJsonUtil;
 import com.core.utils.ToastUtil;
 import com.core.utils.helper.AvatarHelper;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.modular.booking.activity.services.DishMainActivity;
 import com.uas.appme.other.model.Master;
 import com.uas.appme.settings.activity.BaseInfoActivity;
 import com.uas.appme.settings.activity.CheckWagesActivity;
@@ -351,9 +352,10 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
         picture_selector_rl.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-              startActivity(new Intent("com.modular.apputils.activity.SimpleWebActivity")
-              .putExtra("url","http://qq784602719.imwork.net:13767/Chapter/")
-              );
+                startActivity(new Intent(ct, DishMainActivity.class));
+//              startActivity(new Intent("com.modular.apputils.activity.SimpleWebActivity")
+//              .putExtra("url","http://qq784602719.imwork.net:13767/Chapter/")
+//              );
             }
         });
         picture_selector_rl.setOnLongClickListener(new View.OnLongClickListener() {

+ 43 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/ChatActivity.java

@@ -33,11 +33,14 @@ import com.common.LogUtil;
 import com.common.data.CalendarUtil;
 import com.common.data.ListUtils;
 import com.common.preferences.PreferenceUtils;
+import com.common.thread.ThreadPool;
 import com.common.ui.CameraUtil;
 import com.core.app.ActionBackActivity;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.broadcast.MsgBroadcast;
+import com.core.dao.DBManager;
+import com.core.model.EmployeesEntity;
 import com.core.model.Friend;
 import com.core.model.User;
 import com.core.model.XmppMessage;
@@ -46,6 +49,7 @@ import com.core.net.volley.FastVolley;
 import com.core.net.volley.ObjectResult;
 import com.core.net.volley.Result;
 import com.core.net.volley.StringJsonObjectRequest;
+import com.core.utils.CommonUtil;
 import com.core.utils.ToastUtil;
 import com.core.xmpp.CoreService;
 import com.core.xmpp.FriendHelper;
@@ -150,7 +154,36 @@ public class ChatActivity extends ActionBackActivity
         instantFilePath = getIntent().getStringExtra(Constants.INSTANT_MESSAGE_FILE);//只有转发文件才会有
         IntentFilter filter = new IntentFilter(Constants.CHAT_MESSAGE_DELETE_ACTION);
         registerReceiver(broadcastReceiver, filter);
+        addPhone2Friend();
+    }
 
+    private void addPhone2Friend() {
+        if (mFriend != null && TextUtils.isEmpty(mFriend.getPhone())) {
+            LogUtil.i("mFriend != null && TextUtils.isEmpty(mFriend.getPhone())");
+            ThreadPool.getThreadPool().addTask(new Runnable() {
+                @Override
+                public void run() {
+                    Intent intent = getIntent();
+                    String phone = null;
+                    if (intent != null) {
+                        phone = intent.getStringExtra("phone");
+                    }
+                    if (!TextUtils.isEmpty(mFriend.getEmCode())) {
+                        String whichsys = CommonUtil.getMaster();
+                        String[] selectionArgs = {mFriend.getEmCode(), whichsys};
+                        String selection = "em_code=? and whichsys=? ";
+                        EmployeesEntity emModel = DBManager.getInstance().selectForEmployee(selectionArgs, selection);
+                        if (emModel != null && !TextUtils.isEmpty(emModel.getEM_MOBILE())) {
+                            phone = emModel.getEM_MOBILE();
+                        }
+                    }
+                    LogUtil.i("phone=" + phone);
+                    if (!TextUtils.isEmpty(phone)) {
+                        mFriend.setPhone(phone);
+                    }
+                }
+            });
+        }
     }
 
     BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@@ -453,10 +486,10 @@ public class ChatActivity extends ActionBackActivity
             if (!message.isUpload()) {
                 UploadEngine.uploadImFile(mFriend.getUserId(), message, mUploadResponse);
             } else {
-                mService.sendChatMessage(mFriend.getUserId(), message);
+              sendMessageByService( message);
             }
         } else {
-            mService.sendChatMessage(mFriend.getUserId(), message);
+            sendMessageByService(message);
         }
         // mService.sendChatMessage(mFriend.getUserId(), chatMessage);
     }
@@ -507,24 +540,23 @@ public class ChatActivity extends ActionBackActivity
 
             } else {
                 Log.d("roamer", "sendChatMessage....");
-                mService.sendChatMessage(mFriend.getUserId(), message);
+                sendMessageByService( message);
             }
         } else {
             Log.d("roamer", "sendChatMessage");
 
-            mService.sendChatMessage(mFriend.getUserId(), message);
+            sendMessageByService( message);
             //进行百度推送
             sendPushTask(mLoginUserId, mFriend.getUserId(), message.getContent());
 
         }
-        LogUtil.i("发送聊天\n"+JSON.toJSONString(mFriend));
         TopContactsDao.api().addGoodFriend(mFriend);
     }
 
     private UploadEngine.ImFileUploadResponse mUploadResponse = new UploadEngine.ImFileUploadResponse() {
         @Override
         public void onSuccess(String toUserId, ChatMessage message) {
-            mService.sendChatMessage(mFriend.getUserId(), message);
+            sendMessageByService(message);
 
         }
 
@@ -541,9 +573,13 @@ public class ChatActivity extends ActionBackActivity
                 }
             }
         }
-
     };
 
+    private void sendMessageByService(ChatMessage message){
+        if (mService!=null&&mFriend!=null){
+            mService.sendChatMessage(mFriend.getUserId(), message);
+        }
+    }
     /**
      * 停止播放聊天的录音
      */

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

@@ -39,6 +39,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.modular.appmessages.activity.ApprovalListActivity;
 import com.modular.appmessages.activity.ProcessB2BActivity;
 import com.modular.appmessages.activity.ProcessMsgActivity;
 import com.modular.appmessages.activity.Subscription2Activity;

+ 0 - 68
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/CommonUtil.java

@@ -33,14 +33,10 @@ import android.text.Spannable;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
 import android.text.style.ForegroundColorSpan;
-import android.text.style.UnderlineSpan;
 import android.util.Log;
 import android.util.Patterns;
-import android.view.Gravity;
 import android.view.View;
 import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -74,7 +70,6 @@ import com.nostra13.universalimageloader.core.DisplayImageOptions;
 import com.nostra13.universalimageloader.core.assist.ImageScaleType;
 import com.umeng.socialize.UMShareListener;
 import com.umeng.socialize.bean.SHARE_MEDIA;
-import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.WebViewLoadActivity;
 import com.xzjmyk.pm.activity.ui.erp.view.DateTimePickerDialog;
@@ -948,32 +943,6 @@ public class CommonUtil {
         view.setText(style);
     }
 
-
-    /**
-     * @desc:修改textView样式(添加下划线)
-     * @author:Arison on 2016/8/3
-     */
-    public static void textUnderlineForStyle(
-            TextView view,
-            String input,
-            String match) {
-        SpannableStringBuilder style = new SpannableStringBuilder(input);
-        Pattern highlight = Pattern.compile(match);
-        Matcher m = highlight.matcher(style.toString());
-        while (m.find()) {
-//            style.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), m.start(), m.end(),
-//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
-//            style.setSpan(new ForegroundColorSpan(color), m.start(), m.end(),
-//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
-//            style.setSpan(new StrikethroughSpan(), m.start(), m.end(),
-//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
-            style.setSpan(new UnderlineSpan(), m.start(), m.end(),
-                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
-        }
-        view.setText(style);
-    }
-
-
     private static long mLastClickTime;
     private static final long SPACE_TIME = 1000;//重复点击间隔时间
 
@@ -1071,43 +1040,6 @@ public class CommonUtil {
         return StringUtil.toHttpString(temp);
     }
 
-    /**
-     * 添加图片的toast
-     *
-     * @param context
-     * @param imageId  图片id
-     * @param content  文字内容
-     * @param duration 显示时长
-     */
-    public static void imageToast(Context context, int imageId, String content, int duration) {
-        Toast toast = new Toast(context);
-        //显示的时间
-        toast.setDuration(duration);
-        //显示的位置
-        toast.setGravity(Gravity.BOTTOM, 0, 300);
-
-        //自定义toast布局
-        LinearLayout toastLayout = new LinearLayout(context);
-        toastLayout.setGravity(Gravity.CENTER_VERTICAL);
-        toastLayout.setOrientation(LinearLayout.HORIZONTAL);
-
-        //添加ImageView
-        ImageView toastImage = new ImageView(context);
-        toastImage.setImageResource(imageId);
-        toastLayout.addView(toastImage);
-
-        //添加TextView
-        TextView toastText = new TextView(context);
-        toastText.setBackgroundColor(context.getResources().getColor(R.color.toast_bg));
-        toastText.setText(content);
-        toastLayout.addView(toastText);
-
-        toastLayout.setBackgroundColor(context.getResources().getColor(R.color.toast_bg));
-        toast.setView(toastLayout);
-        toast.show();
-    }
-
-
     /**
      * 打开一个文件
      *

+ 7 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/wxapi/WXEntryActivity.java

@@ -1,23 +1,19 @@
 package com.xzjmyk.pm.activity.wxapi;
 
-import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
+import android.widget.Toast;
 
 import com.tencent.mm.sdk.modelbase.BaseReq;
 import com.tencent.mm.sdk.modelbase.BaseResp;
-import com.tencent.mm.sdk.modelmsg.SendAuth;
-import com.tencent.mm.sdk.openapi.IWXAPI;
 import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
+import com.umeng.socialize.weixin.view.WXCallbackActivity;
 
-public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
-    private IWXAPI api;
+public class WXEntryActivity extends WXCallbackActivity implements IWXAPIEventHandler {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-//        api = WXAPIFactory.createWXAPI(this, Constants.WXPAY_APPID);
-//        api.handleIntent(getIntent(), this);
     }
 
     @Override
@@ -35,11 +31,11 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
         try {
             switch (resp.errCode) {
                 case BaseResp.ErrCode.ERR_OK: {
-                    if (resp != null && resp instanceof SendAuth.Resp) {
-
-                    }
+                    Toast.makeText(this, "分享成功", Toast.LENGTH_SHORT).show();
+                    break;
                 }
-                break;
+                default:
+                    break;
             }
         } catch (Exception e) {
             e.printStackTrace();

BIN
WeiChat/src/main/res/drawable-hdpi/uuu.png


BIN
WeiChat/src/main/res/drawable-mdpi/uuu.png


BIN
WeiChat/src/main/res/drawable-xhdpi/uuu.png


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


+ 6 - 6
WeiChat/src/main/res/layout/activity_booking_list.xml

@@ -69,8 +69,9 @@
                     android:layout_alignTop="@+id/signin" />
                 <TextView
                     android:id="@+id/mBookPersonal"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:gravity="center_horizontal"
                     android:drawablePadding="@dimen/drawable_padding"
                     android:drawableTop="@drawable/booking_personal"
                     android:layout_centerInParent="true"
@@ -98,11 +99,10 @@
                     />
                 <TextView
                     android:id="@+id/mBookBusiness"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:gravity="center_horizontal"
                     android:layout_marginTop="2dp"
-                    android:gravity="center"
-                    
                     android:drawablePadding="@dimen/drawable_padding"
                     android:drawableTop="@drawable/booking_business"
                     android:layout_centerInParent="true"

+ 213 - 0
WeiChat/src/main/res/layout/activity_holidays.xml

@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/activity_holidays"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/oa_bg"
+    android:orientation="vertical">
+
+    <android.support.v7.widget.AppCompatTextView
+        android:layout_width="match_parent"
+        android:layout_height="80dp"
+        android:gravity="center"
+        android:textColor="@color/titleBlue"
+        android:textSize="20sp"
+        android:text="2018年放假时间安排"/>
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:paddingBottom="6dp"
+                android:paddingLeft="5dp"
+                android:paddingTop="10dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/MyAttendanceRules_newYearsDay"
+                    android:textColor="@color/titleBlue"
+                    android:textSize="@dimen/text_main" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="@string/holiday_date1"
+                    android:textColor="@color/text_hine"
+                    android:textSize="@dimen/text_hine" />
+            </LinearLayout>
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2px"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:paddingBottom="6dp"
+                android:paddingLeft="5dp"
+                android:paddingTop="10dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/MyAttendanceRules_SpringFestival"
+                    android:textColor="@color/titleBlue"
+                    android:textSize="@dimen/text_main" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="@string/holiday_date2"
+                    android:textColor="@color/text_hine"
+                    android:textSize="@dimen/text_hine" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2px"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:paddingBottom="6dp"
+                android:paddingLeft="5dp"
+                android:paddingTop="10dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/MyAttendanceRules_QingmingFestival"
+                    android:textColor="@color/titleBlue"
+                    android:textSize="@dimen/text_main" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="@string/holiday_date3"
+                    android:textColor="@color/text_hine"
+                    android:textSize="@dimen/text_hine" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2px"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:paddingBottom="6dp"
+                android:paddingLeft="5dp"
+                android:paddingTop="10dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/MyAttendanceRules_LaborDay"
+                    android:textColor="@color/titleBlue"
+                    android:textSize="@dimen/text_main" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="@string/holiday_date4"
+                    android:textColor="@color/text_hine"
+                    android:textSize="@dimen/text_hine" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2px"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:paddingBottom="6dp"
+                android:paddingLeft="5dp"
+                android:paddingTop="10dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/MyAttendanceRules_TheDragonBoatFestival"
+                    android:textColor="@color/titleBlue"
+                    android:textSize="@dimen/text_main" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="@string/holiday_date5"
+                    android:textColor="@color/text_hine"
+                    android:textSize="@dimen/text_hine" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2px"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:paddingBottom="6dp"
+                android:paddingLeft="5dp"
+                android:paddingTop="10dp">
+
+                <TextView
+                    android:id="@+id/zq_and_gq1"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/MyAttendanceRules_MidAutumnFestival"
+                    android:textColor="@color/titleBlue"
+                    android:textSize="@dimen/text_main" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="@string/holiday_date6"
+                    android:textColor="@color/text_hine"
+                    android:textSize="@dimen/text_hine" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2px"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:paddingBottom="6dp"
+                android:paddingLeft="5dp"
+                android:paddingTop="10dp">
+
+                <TextView
+                    android:id="@+id/zq_and_gq"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/MyAttendanceRules_nationalDay"
+                    android:textColor="@color/titleBlue"
+                    android:textSize="@dimen/text_main" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="@string/holiday_date7"
+                    android:textColor="@color/text_hine"
+                    android:textSize="@dimen/text_hine" />
+            </LinearLayout>
+
+        </LinearLayout>
+    </ScrollView>
+
+</LinearLayout>

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

@@ -208,7 +208,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="商家设置"
+                    android:text="@string/business_setting"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView

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

@@ -1,62 +0,0 @@
-<?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:background="@color/lightgrey"
-    android:orientation="vertical">
-
-    <ProgressBar
-        android:id="@+id/pb"
-        style="?android:attr/progressBarStyleHorizontal"
-        android:layout_width="fill_parent"
-        android:layout_height="5dip"
-        android:animationResolution="100"
-        android:indeterminate="false"
-        android:indeterminateDuration="500"
-        android:indeterminateOnly="false"
-        android:max="100"
-        android:progressDrawable="@drawable/webview_progress_bar"
-        android:visibility="gone"></ProgressBar>
-
-    <RelativeLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <com.handmark.pulltorefresh.library.PullToRefreshWebView
-            android:id="@+id/webView_listview"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@color/linen"
-            android:layerType="software" />
-
-        <TextView
-            android:id="@+id/web_previous_tv"
-            android:layout_width="100dp"
-            android:layout_height="36dp"
-            android:layout_alignParentBottom="true"
-            android:layout_marginBottom="25dp"
-            android:layout_marginLeft="30dp"
-            android:background="@drawable/selector_flip_btn"
-            android:gravity="center"
-            android:text="@string/web_previous_tv"
-            android:textColor="@color/white"
-            android:textSize="16sp"
-            android:visibility="gone"/>
-
-        <TextView
-            android:id="@+id/web_next_tv"
-            android:layout_width="100dp"
-            android:layout_height="36dp"
-            android:layout_alignParentBottom="true"
-            android:layout_alignParentRight="true"
-            android:layout_marginBottom="25dp"
-            android:layout_marginRight="30dp"
-            android:background="@drawable/selector_flip_btn"
-            android:gravity="center"
-            android:text="@string/web_next_tv"
-            android:textColor="@color/white"
-            android:textSize="16sp"
-            android:visibility="gone"/>
-    </RelativeLayout>
-
-</LinearLayout>

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

@@ -17,7 +17,7 @@
         android:gravity="center"
         android:layout_centerInParent="true"
         android:textSize="14sp"
-        android:text="您还没有预约,现在就去约吧!"
+        android:text="@string/book_empty"
        />
 
 </LinearLayout>

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

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<com.xzjmyk.pm.activity.view.shadow.ShadowLayout
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
@@ -24,4 +24,4 @@
             android:divider="@color/item_line"
             android:dividerHeight="0.1dp"></ListView>
     </LinearLayout>
-</com.xzjmyk.pm.activity.view.shadow.ShadowLayout>
+</RelativeLayout>

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

@@ -46,7 +46,7 @@
 
     <!-- start行政办公OA界面-->
     <string name = "oamain_title"> OA </string>
-         <string name = "oasign_title"> Sign in </string>
+         <string name = "oasign_title"> check in </string>
          <string name = "oaoutplan_title">Outwork </string>
          <string name = "oaworkdaily_title"> Daily </string>
          <string name = "oapackup_title"> Retract </string>
@@ -1423,6 +1423,148 @@
     <string name = "input_phone_number"> Please enter the phone number </string>
     <string name = "input_name"> Please enter a name </string>
 
-    <string name="sales_statistics">销售看板</string>
+    <string name="sales_statistics">Sales kanban</string>
 
+
+    //商旅服务
+    <string name="business_services">business services</string>
+
+    <!--一元捐项目新-->
+    <string name="charitable">Love donation</string>
+    <string name="charitable_user_agreement"><u>《UU User protocol》</u></string>
+    <string name="new_select_pay">select</string>
+    <string name="input_two_double">Less than two double</string>
+    <string name="not_more_pay">Amount Less than 99999</string>
+    <string name="not_pay_num_can">pay Amount Non conformity</string>
+    <string name="find_num_project">find<b>%1$d</b>project</string>
+    <string name="regx_operator">\\%1$s</string>
+
+    //设备管理项目
+    <string name="title_device_manage">Device management</string>
+    <string name="text_scan_device">scan</string>
+    <string name="text_device_query">device inquiry</string>
+    <string name="text_application_use">using application</string>
+    <string name="text_scrap_application">Scrap application</string>
+    <string name="text_maintenance">Maintenance</string>
+    <string name="text_fault_inspection">Fault submission</string>
+    <string name="text_cycle_count">Cycle inventory</string>
+    <string name="text_cycle_count_add">add Cycle</string>
+    <string name="more_info"><u>more info</u></string>
+    <string name="cycle">Cycle</string>
+    <string name="who_is_champion">is the champion</string>
+    <string name="all_Amount_of_money">total amount</string>
+
+    <string name="get_again">get again</string>
+    <string name="msg_send_success">SMS sent successfully, please complete the query within one minute</string>
+    <string name="input_search_date">Please enter the inquiry date</string>
+    <string name="input_search_ycode">please enter verification code</string>
+    <string name="input_search_password">please input the query password</string>
+    <string name="please_settting_password">Please set at least 6 digits to check the password</string>
+    <string name="setting_password_success">Set the password successfully</string>
+    <string name="code_outtime">Verification code timeout, please obtain again</string>
+    <string name="please_settting_password1">Please input the 6 digit verification code
+</string>
+    <string name="get_code">get VCode</string>
+    <string name="salary_search">Salary inquiry</string>
+    <string name="cannot_sign">Wage data is blank and can not be signed</string>
+    <string name="input_your_error">Please enter your error problem</string>
+    <string name="not_sign">You do not have a signature</string>
+    <string name="salary">wage</string>
+    <string name="send_error_ok">Error reported</string>
+    <string name="ss_send_success">Payroll signature submitted successfully</string>
+    <string name="no_salary_data">No salary information</string>
+    <string name="error_msg">No salary information</string>
+    <string name="salary_sign">sign</string>
+    <string name="confirm_phone">Please confirm the phone number</string>
+    <string name="code_send_phone">The verification code has been sent to the cell phone</string>
+    <string name="please_set_pw">Please set a password</string>
+    <string name="password">password</string>
+    <string name="input_6_pw">Please enter a new password (6-20 limit)</string>
+    <string name="need_6_str">6-20 characters are required</string>
+    <string name="firstused_setpw">for the first time, please set the password
+</string>
+    <string name="input_qpw">please input the query password(limit 20 characters)</string>
+    <string name="next_step">next step</string>
+    <string name="change_qpw">modify the query password </string>
+    <string name = "telephone"> phone number </string>
+
+        <string name = "business_setting"> Merchant Settings </string>
+        <string name = "ranking"> leaderboard </string>
+        <string name = "information_photo"> image photo </string>
+        <string name = "set_e_relax"> Set employee rest days </string>
+        <string name = "set_c_relax"> Set business day </string>
+        <string name = "set_location"> set service / site / room </string>
+        <string name = "click_change_img"> click to change photo </string>
+        <string name = "cur_no_room"> Department / department </string> has not been obtained yet
+        <string name = "select_room"> select department </string>
+        <string name = "please_add_headerimg"> Please add photo </string>
+        <string name = "room"> department </string>
+        <string name = "tel_number"> number </string>
+        <string name = "input_name_date"> Please enter a full name / rest date </string>
+        <string name = "hava_save_detail"> There is duplicate item details </string>
+        <string name = "input_person_name"> Please enter the person name </string>
+        <string name = "cannot_select_beforedate"> Can not select past time </string>
+        <string name = "relax_time_rapeat"> rest time is not repeatable </string>
+        <string name = "input_all_date"> Please enter the complete rest date </string>
+        <string name = "update_room"> Update Service / Site / Room </string>
+        <string name = "input_name1"> Please enter a name </string>
+        <string name = "add_img"> Please add photos </string>
+        <string name = "please_input_room"> Please enter service / site / room name </string>
+        <string name = "please_input_time"> Please enter the service time / minute </string>
+        <string name = "add"> New </string>
+        <string name = "setting_worktime"> set business hours </string>
+        <string name = "setting_time_type"> Set the reservation time type </string>
+        <string name = "business_detail1"> business details </string>
+        <string name = "room_type"> Set private room reservation type </string>
+        <string name = "please_select_room_type"> Please select Private Reservation </string>
+        <string name = "please_input_bdi"> Please enter Merchant Listing </string>
+        <string name = "unlaw_str"> Contains a violation character </string>
+        <string name = "select_bookT_type"> Please select the reservation time type </string>
+        <string name = "time_canot_empty"> The time period can not be empty </string>
+        <string name = "booking_times"> time period: </string>
+        <string name = "book_time_type"> reservation time type </string>
+        <string name = "time_d"> by time </string>
+        <string name = "time_p"> by time </string>
+        <string name = "room_book_type"> </string>
+        <string name = "zzw"> early midnight </string>
+        <string name = "zw"> midnight </string>
+        <string name = "please_inpuy_bi"> Please enter the merchant details introduction limit 400 words </string>
+        <string name = "table_set"> table setting </string>
+        <string name = "net_expection"> Server Error Please try again later </string>
+        <string name = "input_all_msg"> Please drop all settings </string>
+        <string name = "table_setting"> table setting </string>
+        <string name = "pi_tablecode"> Please enter the table code </string>
+        <string name = "pi_number"> Please enter the number </string>
+        <string name = "pi_remark"> Please enter a comment </string>
+        <string name = "pi_bookdays"> Please enter the amount can be reserved / day </string>
+        <string name = "pi_seatnumber"> Please enter the maximum number of seats </string>
+        <string name = "pi_tabletype"> Please select the table type </string>
+        <string name = "b_table"> big table </string>
+        <string name = "m_table"> table </string>
+        <string name = "s_table"> little table </string>
+        <string name = "table_repeat"> table can not be set repeatedly </string>
+         <string name = "room_set"> department settings </string>
+         <string name = "person_set"> Personnel Settings </string>
+         <string name = "e_relax_set"> Staff rest day settings </string>
+         <string name = "person_list"> list of people </string>
+         <string name = "e_relaxday"> employee rest day </string>
+         <string name = "c_relaxday"> business break </string>
+         <string name = "room_location"> service / site / room </string>
+         <string name = "relax_time"> rest time </string>
+         <string name = "booking_time_set"> reservation time period setting </string>
+         <string name = "enter_details_money"> Please enter the details amount </string>
+         <string name="book_empty">you have no appointment,do it now!</string>
+
+
+      <string-array name="booking_topics">
+        <item>Business</item>
+        <item>Meeting</item>
+        <item>Entertainment</item>
+        <item>Eating</item>
+        <item>KTV</item>
+        <item>Golf</item>
+        <item>Mahjong</item>
+        <item>Movie</item>
+        <item>Others</item>
+    </string-array>
 </resources>

+ 94 - 0
WeiChat/src/main/res/values-zh-rCN/strings.xml

@@ -1537,5 +1537,99 @@
     <string name="input_name">请输入姓名</string>
 
     <string name="sales_statistics">销售看板</string>
+    <string name="str_company_salary">工资条</string>
+    <!--工作台菜单-->
+    <string name="who_is_champion">占领了封面</string>
+    <string name="get_again">重新获取</string>
+    <string name="msg_send_success">短信发送成功,请在一分钟内完成输入查询</string>
+    <string name="input_search_date">请输入查询日期</string>
+    <string name="input_search_ycode">请输入验证码</string>
+    <string name="input_search_password">请输入查询密码</string>
+    <string name="please_settting_password">请设置至少6位数查询密码</string>
+    <string name="setting_password_success">设置密码成功</string>
+    <string name="code_outtime">验证码超时,请重新获取</string>
+    <string name="please_settting_password1">请输入6位数验证码</string>
+    <string name="get_code">获取验证码</string>
+    <string name="salary_search">工资查询</string>
+    <string name="cannot_sign">工资数据为空,无法签字</string>
+    <string name="input_your_error">请输入你的报错问题</string>
+    <string name="not_sign">您没有签名</string>
+    <string name="salary">工资</string>
+    <string name="send_error_ok">报错成功</string>
+    <string name="ss_send_success">工资条签名提交成功</string>
+    <string name="no_salary_data">暂无工资信息</string>
+    <string name="error_msg">报错信息</string>
+    <string name="salary_sign">签名</string>
+    <string name="confirm_phone">请确认手机号</string>
+    <string name="code_send_phone">验证码已发送至手机</string>
+    <string name="please_set_pw">请设置密码</string>
+    <string name="password">密码</string>
+    <string name="input_6_pw">请输入新密码(限6-20位)</string>
+    <string name="need_6_str">需6-20位字符</string>
+    <string name="firstused_setpw">首次使用,请设置密码</string>
+    <string name="input_qpw">请输入查询密码(限20位)</string>
 
+    <!--start 商家设置-->
+    <string name="business_setting">商家设置</string>
+    <string name="ranking">排行榜</string>
+    <string name="information_photo">形象照片</string>
+    <string name="set_e_relax">设置员工休息日</string>
+    <string name="set_c_relax">设置企业休息日</string>
+    <string name="set_location">设置服务/场地/房间</string>
+    <string name="click_change_img">点击更换照片</string>
+    <string name="cur_no_room">暂未获取到部门/科室</string>
+    <string name="select_room">选择科室</string>
+    <string name="please_add_headerimg">请添加头像照片</string>
+    <string name="room">科室</string>
+    <string name="tel_number">号码</string>
+    <string name="input_name_date">请输入完整姓名/休息日期</string>
+    <string name="hava_save_detail">存在重复的条目明细</string>
+    <string name="input_person_name">请输入人员名称</string>
+    <string name="cannot_select_beforedate">不可选择过去时间</string>
+    <string name="relax_time_rapeat">休息时间不可重复</string>
+    <string name="input_all_date">请输入完整休息日期</string>
+    <string name="update_room">更新服务/场地/房间</string>
+    <string name="input_name1">请输入名称</string>
+    <string name="add_img">请添加照片</string>
+    <string name="please_input_room">请输入服务/场地/房间名称</string>
+    <string name="please_input_time">请输入服务时间/分钟</string>
+    <string name="setting_worktime">设置营业时间</string>
+    <string name="setting_time_type">设置预约时间类型</string>
+    <string name="business_detail1">商家详情</string>
+    <string name="room_type">设置包房预订类型</string>
+    <string name="please_select_room_type">请选择包房预订类型</string>
+    <string name="please_input_bdi">请输入商家详情介绍</string>
+    <string name="unlaw_str">含违规字符</string>
+    <string name="select_bookT_type">请选择预约时间类型</string>
+    <string name="time_canot_empty">时间段不能为空</string>
+    <string name="booking_times">时间段:</string>
+    <string name="book_time_type">预约时间类型</string>
+    <string name="time_d">按时间段</string>
+    <string name="time_p">按时间点</string>
+    <string name="room_book_type"></string>
+    <string name="zzw">早中晚</string>
+    <string name="zw">中晚</string>
+    <string name="please_inpuy_bi">请输入商家详情介绍限400字</string>
+    <string name="table_set">桌位设置</string>
+    <string name="net_expection">服务器异常请稍后再试</string>
+    <string name="input_all_msg">请输全设置信息</string>
+    <string name="table_setting">桌位设置</string>
+    <string name="pi_tablecode">请输入桌位代码</string>
+    <string name="pi_number">请输入数量</string>
+    <string name="pi_remark">请输入备注</string>
+    <string name="pi_bookdays">请输入可被预约量/天</string>
+    <string name="pi_seatnumber">请输入最多可坐人数</string>
+    <string name="pi_tabletype">请选择桌位类型</string>
+    <string name="b_table">大桌</string>
+    <string name="m_table">中桌</string>
+    <string name="s_table">小桌</string>
+    <string name="table_repeat">桌位不可重复设置</string>
+    <string name="room_set">科室设置</string>
+    <string name="person_set">人员设置</string>
+    <string name="e_relax_set">员工休息日设置</string>
+    <string name="change_qpw">修改查询密码</string>
+
+    //商旅服务
+    <string name="business_services">商旅服务</string>
+    <string name="book_empty">您还没有预约,现在就去约吧!</string>
 </resources>

+ 102 - 0
WeiChat/src/main/res/values-zh-rTW/strings.xml

@@ -1525,5 +1525,107 @@
     <string name="input_name">請輸入姓名</string>
 
     <string name="sales_statistics">销售看板</string>
+    <string name="who_is_champion">佔領了封面</string>
+    <string name="all_Amount_of_money">總金額</string>
 
+
+    <string name="get_again">重新獲取</string>
+    <string name="msg_send_success">短信發送成功,請在一分鐘內完成輸入查詢</string>
+    <string name="input_search_date">請輸入查詢日期</string>
+    <string name="input_search_ycode">請輸入驗證碼</string>
+    <string name="input_search_password">請輸入查詢密碼</string>
+    <string name="please_settting_password">請設置至少6位數查詢密碼</string>
+    <string name="setting_password_success">設置密碼成功</string>
+    <string name="code_outtime">驗證碼超時,請重新獲取</string>
+    <string name="please_settting_password1">請輸入6位數驗證碼</string>
+    <string name="get_code">獲取驗證碼</string>
+    <string name="salary_search">工資查詢</string>
+    <string name="cannot_sign">工資數據為空,無法簽字</string>
+    <string name="input_your_error">請輸入你的報錯問題</string>
+    <string name="not_sign">您沒有簽名</string>
+    <string name="salary">工資</string>
+    <string name="send_error_ok">報錯成功</string>
+    <string name="ss_send_success">工資條簽名提交成功</string>
+    <string name="no_salary_data">暫無工資信息</string>
+    <string name="error_msg">報錯信息</string>
+    <string name="salary_sign">簽名</string>
+    <string name="confirm_phone">請確認手機號</string>
+    <string name="code_send_phone">驗證碼已發送至手機</string>
+    <string name="please_set_pw">請設置密碼</string>
+    <string name="password">密碼</string>
+    <string name="input_6_pw">請輸入新密碼(限6-20位)</string>
+    <string name="need_6_str">需6-20位字符</string>
+    <string name="firstused_setpw">首次使用,請設置密碼</string>
+    <string name="input_qpw">請輸入查詢密碼(限20位)</string>
+    <string name="next_step">下一步</string>
+    <string name="change_qpw">修改查詢密碼</string>
+    <string name="telephone">手機號碼</string>
+
+    <!--start 商家設置-->
+        <string name="business_setting">商家設置</string>
+        <string name="ranking">排行榜</string>
+        <string name="information_photo">形象照片</string>
+        <string name="set_e_relax">設置員工休息日</string>
+        <string name="set_c_relax">設置企業休息日</string>
+        <string name="set_location">設置服務/場地/房間</string>
+        <string name="click_change_img">點擊更換照片</string>
+        <string name="cur_no_room">暫未獲取到部門/科室</string>
+        <string name="select_room">選擇科室</string>
+        <string name="please_add_headerimg">請添加頭像照片</string>
+        <string name="room">科室</string>
+        <string name="tel_number">號碼</string>
+        <string name="input_name_date">請輸入完整姓名/休息日期</string>
+        <string name="hava_save_detail">存在重複的條目明細</string>
+        <string name="input_person_name">請輸入人員名稱</string>
+        <string name="cannot_select_beforedate">不可選擇過去時間</string>
+        <string name="relax_time_rapeat">休息時間不可重複</string>
+        <string name="input_all_date">請輸入完整休息日期</string>
+        <string name="update_room">更新服務/場地/房間</string>
+        <string name="input_name1">請輸入名稱</string>
+        <string name="add_img">請添加照片</string>
+        <string name="please_input_room">請輸入服務/場地/房間名稱</string>
+        <string name="please_input_time">請輸入服務時間/分鐘</string>
+        <string name="add">新增</string>
+        <string name="setting_worktime">設置營業時間</string>
+        <string name="setting_time_type">設置預約時間類型</string>
+        <string name="business_detail1">商家詳情</string>
+        <string name="room_type">設置包房預訂類型</string>
+        <string name="please_select_room_type">請選擇包房預訂類型</string>
+        <string name="please_input_bdi">請輸入商家詳情介紹</string>
+        <string name="unlaw_str">含違規字符</string>
+        <string name="select_bookT_type">請選擇預約時間類型</string>
+        <string name="time_canot_empty">時間段不能為空</string>
+        <string name="booking_times">時間段:</string>
+        <string name="book_time_type">預約時間類型</string>
+        <string name="time_d">按時間段</string>
+        <string name="time_p">按時間點</string>
+        <string name="room_book_type"></string>
+        <string name="zzw">早中晚</string>
+        <string name="zw">中晚</string>
+        <string name="please_inpuy_bi">請輸入商家詳情介紹限400字</string>
+        <string name="table_set">桌位設置</string>
+        <string name="net_expection">服務器異常請稍後再試</string>
+        <string name="input_all_msg">請輸全設置信息</string>
+        <string name="table_setting">桌位設置</string>
+        <string name="pi_tablecode">請輸入桌位代碼</string>
+        <string name="pi_number">請輸入數量</string>
+        <string name="pi_remark">請輸入備註</string>
+        <string name="pi_bookdays">請輸入可被預約量/天</string>
+        <string name="pi_seatnumber">請輸入最多可坐人數</string>
+        <string name="pi_tabletype">請選擇桌位類型</string>
+        <string name="b_table">大桌</string>
+        <string name="m_table">中桌</string>
+        <string name="s_table">小桌</string>
+        <string name="table_repeat">桌位不可重複設置</string>
+        <string name="room_set">科室設置</string>
+        <string name="person_set">人員設置</string>
+        <string name="e_relax_set">員工休息日設置</string>
+        <string name="person_list">人員列表</string>
+        <string name="e_relaxday">員工休息日</string>
+        <string name="c_relaxday">企業休息日</string>
+        <string name="room_location">服務/場地/房間</string>
+        <string name="relax_time">休息時間</string>
+        <string name="enter_details_money">請輸入明細金額</string>
+    <string name="book_empty">您还没有预约,现在就去约吧!</string>
+    <!--end s商家设置-->
 </resources>

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

@@ -1837,7 +1837,6 @@
     <string name="booking_me">我的预约</string>
     <string name="booking_shared">预约共享</string>
     <string name="booking_time_set">预约时间段设置</string>
-    <string name="booking_times">时间段:</string>
 
     <string name="booking_add">预约计划</string>
     <string name="select_share_friend">分享好友</string>
@@ -1870,4 +1869,144 @@
     <string name="input_name">请输入姓名</string>
 
     <string name="sales_statistics">销售看板</string>
+
+
+    <!--一元捐项目新-->
+    <string name="charitable">一元捐</string>
+    <string name="charitable_user_agreement"><u>《优软一元捐用户协议》</u></string>
+    <string name="new_select_pay">当前选择</string>
+    <string name="input_two_double">只能键入两位小数</string>
+    <string name="not_more_pay">金额不能大于99999</string>
+    <string name="not_pay_num_can">支付金额不符合标准</string>
+    <string name="find_num_project">查到<b>%1$d</b>个相关项目</string>
+    <string name="regx_operator">\\%1$s</string>
+
+
+    //商旅服务
+    <string name="business_services">商旅服务</string>
+
+    //设备管理项目
+    <string name="title_device_manage">设备管理</string>
+    <string name="text_scan_device">扫一扫</string>
+    <string name="text_device_query">设备查询</string>
+    <string name="text_application_use">使用申请</string>
+    <string name="text_scrap_application">报废申请</string>
+    <string name="text_maintenance">养护管理</string>
+    <string name="text_fault_inspection">故障送检</string>
+    <string name="text_cycle_count">周期盘点</string>
+    <string name="text_cycle_count_add">添加盘点</string>
+    <string name="more_info"><u>详细信息</u></string>
+    <string name="cycle">盘点</string>
+
+    <string name="str_company_salary">工资条</string>
+    <!--工作台菜单-->
+    <string name="who_is_champion">占领了封面</string>
+
+
+    <string name="get_again">重新获取</string>
+    <string name="msg_send_success">短信发送成功,请在一分钟内完成输入查询</string>
+    <string name="input_search_date">请输入查询日期</string>
+    <string name="input_search_ycode">请输入验证码</string>
+    <string name="input_search_password">请输入查询密码</string>
+    <string name="please_settting_password">请设置至少6位数查询密码</string>
+    <string name="setting_password_success">设置密码成功</string>
+    <string name="code_outtime">验证码超时,请重新获取</string>
+    <string name="please_settting_password1">请输入6位数验证码</string>
+    <string name="get_code">获取验证码</string>
+    <string name="salary_search">工资查询</string>
+    <string name="cannot_sign">工资数据为空,无法签字</string>
+    <string name="input_your_error">请输入你的报错问题</string>
+    <string name="not_sign">您没有签名</string>
+    <string name="salary">工资</string>
+    <string name="send_error_ok">报错成功</string>
+    <string name="ss_send_success">工资条签名提交成功</string>
+    <string name="no_salary_data">暂无工资信息</string>
+    <string name="error_msg">报错信息</string>
+    <string name="salary_sign">签名</string>
+    <string name="confirm_phone">请确认手机号</string>
+    <string name="code_send_phone">验证码已发送至手机</string>
+    <string name="please_set_pw">请设置密码</string>
+    <string name="password">密码</string>
+    <string name="input_6_pw">请输入新密码(限6-20位)</string>
+    <string name="need_6_str">需6-20位字符</string>
+    <string name="firstused_setpw">首次使用,请设置密码</string>
+    <string name="input_qpw">请输入查询密码(限20位)</string>
+
+
+    <!--start 商家设置-->
+    <string name="business_setting">商家设置</string>
+    <string name="ranking">排行榜</string>
+    <string name="information_photo">形象照片</string>
+    <string name="set_e_relax">设置员工休息日</string>
+    <string name="set_c_relax">设置企业休息日</string>
+    <string name="set_location">设置服务/场地/房间</string>
+    <string name="click_change_img">点击更换照片</string>
+    <string name="cur_no_room">暂未获取到部门/科室</string>
+    <string name="select_room">选择科室</string>
+    <string name="please_add_headerimg">请添加头像照片</string>
+    <string name="room">科室</string>
+    <string name="tel_number">号码</string>
+    <string name="input_name_date">请输入完整姓名/休息日期</string>
+    <string name="hava_save_detail">存在重复的条目明细</string>
+    <string name="input_person_name">请输入人员名称</string>
+    <string name="cannot_select_beforedate">不可选择过去时间</string>
+    <string name="relax_time_rapeat">休息时间不可重复</string>
+    <string name="input_all_date">请输入完整休息日期</string>
+    <string name="update_room">更新服务/场地/房间</string>
+    <string name="input_name1">请输入名称</string>
+    <string name="add_img">请添加照片</string>
+    <string name="please_input_room">请输入服务/场地/房间名称</string>
+    <string name="please_input_time">请输入服务时间/分钟</string>
+    <string name="setting_worktime">设置营业时间</string>
+    <string name="setting_time_type">设置预约时间类型</string>
+    <string name="business_detail1">商家详情</string>
+    <string name="room_type">设置包房预订类型</string>
+    <string name="please_select_room_type">请选择包房预订类型</string>
+    <string name="please_input_bdi">请输入商家详情介绍</string>
+    <string name="unlaw_str">含违规字符</string>
+    <string name="select_bookT_type">请选择预约时间类型</string>
+    <string name="time_canot_empty">时间段不能为空</string>
+    <string name="booking_times">时间段:</string>
+    <string name="book_time_type">预约时间类型</string>
+    <string name="time_d">按时间段</string>
+    <string name="time_p">按时间点</string>
+    <string name="room_book_type"></string>
+    <string name="zzw">早中晚</string>
+    <string name="zw">中晚</string>
+    <string name="please_inpuy_bi">请输入商家详情介绍限400字</string>
+    <string name="table_set">桌位设置</string>
+    <string name="net_expection">服务器异常请稍后再试</string>
+    <string name="input_all_msg">请输全设置信息</string>
+    <string name="table_setting">桌位设置</string>
+    <string name="pi_tablecode">请输入桌位代码</string>
+    <string name="pi_number">请输入数量</string>
+    <string name="pi_remark">请输入备注</string>
+    <string name="pi_bookdays">请输入可被预约量/天</string>
+    <string name="pi_seatnumber">请输入最多可坐人数</string>
+    <string name="pi_tabletype">请选择桌位类型</string>
+    <string name="b_table">大桌</string>
+    <string name="m_table">中桌</string>
+    <string name="s_table">小桌</string>
+    <string name="table_repeat">桌位不可重复设置</string>
+    <string name="room_set">科室设置</string>
+    <string name="person_set">人员设置</string>
+    <string name="e_relax_set">员工休息日设置</string>
+    <string name="person_list">人员列表</string>
+    <string name="e_relaxday">员工休息日</string>
+    <string name="c_relaxday">企业休息日</string>
+    <string name="room_location">服务/场地/房间</string>
+    <string name="relax_time">休息时间</string>
+    <string name="book_empty">您还没有预约,现在就去约吧!</string>
+
+    <string-array name="booking_topics">
+        <item>商务洽谈</item>
+        <item>开会</item>
+        <item>外出娱乐</item>
+        <item>吃饭</item>
+        <item>卡拉OK</item>
+        <item>高尔夫</item>
+        <item>麻将</item>
+        <item>电影</item>
+        <item>其它</item>
+    </string-array>
 </resources>

+ 62 - 22
app_core/common/src/main/assets/work_menu.json

@@ -11,6 +11,7 @@
         "menuName": "str_work_subscribe_secretary",
         "menuIcon": "ic_work_subscribe_secretary",
         "menuActivity": "com.modular.booking.BookingListActivity",
+        "menuTag": "local_subscribe_secretary",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -20,15 +21,27 @@
         "menuName": "str_work_uu_sports",
         "menuIcon": "ic_work_uu_sports",
         "menuActivity": "com.modular.appme.UURanking",
+        "menuTag": "local_uu_sports",
         "menuUrl": "",
         "caller": "",
         "isHide": false
       },
       {
         "isLocalMenu": true,
-        "menuName": "str_work_charitable_donations",
+        "menuName": "charitable",
         "menuIcon": "ic_work_charitable_donations",
         "menuActivity": "com.modular.work.CharitableActivity",
+        "menuTag": "local_charitable_donations",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "str_work_invite_register",
+        "menuIcon": "ic_work_invite_register",
+        "menuActivity": "com.modular.work.InviteRegisterActivity",
+        "menuTag": "local_invite_register",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -47,6 +60,7 @@
         "menuName": "str_work_work_approval",
         "menuIcon": "ic_work_work_approval",
         "menuActivity": "com.modular.work.ProcessMsgActivity",
+        "menuTag": "local_work_approval",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -56,6 +70,7 @@
         "menuName": "str_work_backlog",
         "menuIcon": "ic_work_backlog",
         "menuActivity": "com.modular.task.TaskActivity",
+        "menuTag": "local_backlog",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -65,6 +80,7 @@
         "menuName": "str_work_work_calendar",
         "menuIcon": "ic_work_work_calendar",
         "menuActivity": "com.modular.work.OAActivity",
+        "menuTag": "local_work_calendar",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -74,6 +90,7 @@
         "menuName": "str_work_work_report",
         "menuIcon": "ic_work_work_report",
         "menuActivity": "com.modular.work.WorkReportMenuActivity",
+        "menuTag": "local_work_report",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -83,6 +100,7 @@
         "menuName": "str_work_punch_clock",
         "menuIcon": "ic_work_punch_clock",
         "menuActivity": "com.modular.work.WorkActivity",
+        "menuTag": "local_punch_clock",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -92,6 +110,7 @@
         "menuName": "str_work_outwork_sign",
         "menuIcon": "ic_work_outwork_sign",
         "menuActivity": "com.modular.work.MissionActivity",
+        "menuTag": "local_outwork_sign",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -101,6 +120,7 @@
         "menuName": "str_work_attendance_statistics",
         "menuIcon": "ic_work_attendance_statistics",
         "menuActivity": "com.modular.oa.StatisticsActivity",
+        "menuTag": "local_attendance_statistics",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -110,6 +130,7 @@
         "menuName": "str_work_overtime_request",
         "menuIcon": "ic_work_overtime_request",
         "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuTag": "local_overtime_request",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -119,6 +140,7 @@
         "menuName": "str_work_leave_request",
         "menuIcon": "ic_work_leave_request",
         "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuTag": "local_leave_request",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -127,7 +149,8 @@
         "isLocalMenu": true,
         "menuName": "str_work_travel_request",
         "menuIcon": "ic_work_travel_request",
-        "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuActivity": "com.modular.form.TravelDataFormDetailActivity",
+        "menuTag": "local_travel_request",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -137,6 +160,7 @@
         "menuName": "str_work_expense_account",
         "menuIcon": "ic_work_expense_account",
         "menuActivity": "com.modular.oa.ExpenseReimbursementActivity",
+        "menuTag": "local_expense_account",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -146,6 +170,7 @@
         "menuName": "str_work_meeting_manage",
         "menuIcon": "ic_work_meeting_manage",
         "menuActivity": "com.modular.oa.AddMeetingActivity",
+        "menuTag": "local_meeting_manage",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -155,15 +180,37 @@
         "menuName": "str_work_special_attendance",
         "menuIcon": "ic_work_special_attendance",
         "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuTag": "local_special_attendance",
         "menuUrl": "",
         "caller": "",
         "isHide": false
       },
       {
         "isLocalMenu": true,
-        "menuName": "title_device_manage",
+        "menuName": "str_work_device_manage",
         "menuIcon": "ic_device_manage",
         "menuActivity": "com.modular.work.DeviceManageActivity",
+        "menuTag": "local_device_manage",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "business_services",
+        "menuIcon": "ic_business_services",
+        "menuActivity": "com.modular.work.BusinessTravelActivity",
+        "menuTag": "local_business_services",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "str_company_salary",
+        "menuIcon": "company_salary",
+        "menuActivity": "com.modular.appme.CheckWagesActivity",
+        "menuTag": "local_company_salary",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -182,6 +229,7 @@
         "menuName": "str_work_business_manage",
         "menuIcon": "ic_work_business_manage",
         "menuActivity": "com.modular.crm.BusinessActivity",
+        "menuTag": "local_business_manage",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -191,6 +239,7 @@
         "menuName": "str_work_customer_manage",
         "menuIcon": "ic_work_customer_manage",
         "menuActivity": "com.modular.crm.CustomerListActivity",
+        "menuTag": "local_customer_manage",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -200,6 +249,7 @@
         "menuName": "str_work_customer_visit",
         "menuIcon": "ic_work_customer_visit",
         "menuActivity": "com.modular.work.OAActivity",
+        "menuTag": "local_customer_visit",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -209,6 +259,7 @@
         "menuName": "str_work_sales_data",
         "menuIcon": "ic_work_sales_data",
         "menuActivity": "com.modular.crm.ClientActivity",
+        "menuTag": "local_sales_data",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -218,6 +269,7 @@
         "menuName": "str_work_honor_rank",
         "menuIcon": "ic_work_honor_rank",
         "menuActivity": "com.modular.crm.SalesRankingActivity",
+        "menuTag": "local_honor_rank",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -236,6 +288,7 @@
         "menuName": "str_work_data_inquiry",
         "menuIcon": "ic_work_data_inquiry",
         "menuActivity": "com.modular.company.DataInquiryActivity",
+        "menuTag": "local_data_inquiry",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -245,6 +298,7 @@
         "menuName": "str_work_report_statistics",
         "menuIcon": "ic_work_report_statistics",
         "menuActivity": "com.modular.company.ReportStatisticsActivity",
+        "menuTag": "local_report_statistics",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -254,6 +308,7 @@
         "menuName": "str_work_real_time_subs",
         "menuIcon": "ic_work_real_time_subs",
         "menuActivity": "com.modular.company.RealTimeFormActivity",
+        "menuTag": "local_real_time_subs",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -263,15 +318,7 @@
         "menuName": "str_work_subs_manage",
         "menuIcon": "ic_work_subs_manage",
         "menuActivity": "com.modular.company.SubcribeManageActivity",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "str_company_salary",
-        "menuIcon": "company_salary",
-        "menuActivity": "com.modular.appme.CheckWagesActivity",
+        "menuTag": "local_subs_manage",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -289,7 +336,8 @@
         "isLocalMenu": true,
         "menuName": "str_work_b2b_commerce",
         "menuIcon": "ic_work_b2b_commerce",
-        "menuActivity": "com.modular.apputils.activity.SimpleWebActivity",
+        "menuActivity": "com.modular.work.B2BBusinessLoginActivity",
+        "menuTag": "local_b2b_commerce",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -299,15 +347,7 @@
         "menuName": "str_work_usoft_mall",
         "menuIcon": "ic_work_usoft_mall",
         "menuActivity": "com.modular.apputils.activity.SimpleWebActivity",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "b2b商务",
-        "menuIcon": "",
-        "menuActivity": "com.modular.work.B2BBusinessLoginActivity",
+        "menuTag": "local_usoft_mall",
         "menuUrl": "",
         "caller": "",
         "isHide": false

+ 24 - 1
app_core/common/src/main/assets/work_menu_b2b.json

@@ -11,6 +11,7 @@
         "menuName": "str_work_subscribe_secretary",
         "menuIcon": "ic_work_subscribe_secretary",
         "menuActivity": "com.modular.booking.BookingListActivity",
+        "menuTag": "local_subscribe_secretary",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -20,6 +21,17 @@
         "menuName": "str_work_uu_sports",
         "menuIcon": "ic_work_uu_sports",
         "menuActivity": "com.modular.appme.UURanking",
+        "menuTag": "local_uu_sports",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "str_work_invite_register",
+        "menuIcon": "ic_work_invite_register",
+        "menuActivity": "com.modular.work.InviteRegisterActivity",
+        "menuTag": "local_invite_register",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -38,6 +50,7 @@
         "menuName": "str_work_work_approval",
         "menuIcon": "ic_work_work_approval",
         "menuActivity": "com.modular.work.ProcessB2BActivity",
+        "menuTag": "local_work_approval",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -47,6 +60,7 @@
         "menuName": "str_work_backlog",
         "menuIcon": "ic_work_backlog",
         "menuActivity": "com.modular.task.TaskB2BActivity",
+        "menuTag": "local_backlog",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -56,6 +70,7 @@
         "menuName": "str_work_work_calendar",
         "menuIcon": "ic_work_work_calendar",
         "menuActivity": "com.modular.work.OAActivity",
+        "menuTag": "local_work_calendar",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -65,6 +80,7 @@
         "menuName": "str_work_work_report",
         "menuIcon": "ic_work_work_report",
         "menuActivity": "com.modular.plat.WorkDailyAddActivity",
+        "menuTag": "local_work_report",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -74,6 +90,7 @@
         "menuName": "str_work_punch_clock",
         "menuIcon": "ic_work_punch_clock",
         "menuActivity": "com.modular.work.WorkActivity",
+        "menuTag": "local_punch_clock",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -83,6 +100,7 @@
         "menuName": "str_work_outwork_sign",
         "menuIcon": "ic_work_outwork_sign",
         "menuActivity": "com.modular.work.MissionActivity",
+        "menuTag": "local_outwork_sign",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -92,6 +110,7 @@
         "menuName": "str_work_overtime_request",
         "menuIcon": "ic_work_overtime_request",
         "menuActivity": "com.modular.plat.WorkExtraActivity",
+        "menuTag": "local_overtime_request",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -101,6 +120,7 @@
         "menuName": "str_work_leave_request",
         "menuIcon": "ic_work_leave_request",
         "menuActivity": "com.modular.oa.PlatLeaveAddActivity",
+        "menuTag": "local_leave_request",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -110,6 +130,7 @@
         "menuName": "str_work_travel_request",
         "menuIcon": "ic_work_travel_request",
         "menuActivity": "com.modular.plat.TravelActivity",
+        "menuTag": "local_travel_request",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -127,7 +148,8 @@
         "isLocalMenu": true,
         "menuName": "str_work_b2b_commerce",
         "menuIcon": "ic_work_b2b_commerce",
-        "menuActivity": "com.modular.apputils.activity.SimpleWebActivity",
+        "menuActivity": "com.modular.work.B2BBusinessLoginActivity",
+        "menuTag": "local_b2b_commerce",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -137,6 +159,7 @@
         "menuName": "str_work_usoft_mall",
         "menuIcon": "ic_work_usoft_mall",
         "menuActivity": "com.modular.apputils.activity.SimpleWebActivity",
+        "menuTag": "local_usoft_mall",
         "menuUrl": "",
         "caller": "",
         "isHide": false

+ 12 - 0
app_core/common/src/main/assets/work_menu_personal.json

@@ -11,6 +11,7 @@
         "menuName": "str_work_subscribe_secretary",
         "menuIcon": "ic_work_subscribe_secretary",
         "menuActivity": "com.modular.booking.BookingListActivity",
+        "menuTag": "local_subscribe_secretary",
         "menuUrl": "",
         "caller": "",
         "isHide": false
@@ -20,6 +21,17 @@
         "menuName": "str_work_uu_sports",
         "menuIcon": "ic_work_uu_sports",
         "menuActivity": "com.modular.appme.UURanking",
+        "menuTag": "local_uu_sports",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "str_work_invite_register",
+        "menuIcon": "ic_work_invite_register",
+        "menuActivity": "com.modular.work.InviteRegisterActivity",
+        "menuTag": "local_invite_register",
         "menuUrl": "",
         "caller": "",
         "isHide": false

+ 4 - 4
app_core/common/src/main/java/com/common/LogUtil.java

@@ -96,19 +96,19 @@ public class LogUtil {
 
 	public static void prinlnLongMsg(String TAG, String responseInfo) {
 		if (responseInfo != null) {
-			if (responseInfo.length() >= 3000) {
+			if (responseInfo.length() >=4000) {
 				Log.v(TAG, "sb.length = " + responseInfo.length());
 				int chunkCount = responseInfo.length() / 3000;     // integer division
 				for (int i = 0; i <= chunkCount; i++) {
 					int max = 3000 * (i + 1);
 					if (max >= responseInfo.length()) {
-						Log.i(TAG, "【chunk " + i + " of " + chunkCount + ":" + responseInfo.substring(3000 * i));
+						Log.i(TAG, "【"+ i + "】" + responseInfo.substring(3000 * i));
 					} else {
-						Log.i(TAG, "【chunk " + i + " of " + chunkCount + "】:" + responseInfo.substring(3000 * i, max));
+						Log.i(TAG, "【" + i+ "】" + responseInfo.substring(3000 * i, max));
 					}
 				}
 			} else {
-				Log.v(TAG, "sb.length = " + responseInfo.length());
+				Log.d(TAG, "sb.length = " + responseInfo.length());
 				Log.i(TAG, responseInfo.toString());
 			}
 		}

+ 1 - 1
app_core/common/src/main/java/com/common/config/BaseApplication.java

@@ -6,7 +6,7 @@ import android.app.Application;
 /**
  * Created by Bitliker on 2017/6/19.
  */
-public abstract class BaseApplication extends Application {
+public abstract class BaseApplication extends com.me.network.app.base.BaseApplication {
     private static Application api = null;
 
     @Override

+ 4 - 2
app_core/common/src/main/java/com/common/data/JSONUtil.java

@@ -22,7 +22,9 @@ public class JSONUtil {
             builder.append("\"" + e.getKey() + "\":");
             if (e.getValue() instanceof String || e.getValue() instanceof CharSequence) {
                 builder.append("\"" + e.getValue() + "\",\n");
-            } else {
+            }else if (e.getValue() instanceof Map) {
+                builder.append( map2JSON((Map)e.getValue()) + ",\n");
+            }  else {
                 builder.append(e.getValue() + ",\n");
             }
         }
@@ -213,7 +215,7 @@ public class JSONUtil {
     public static long getLong(JSONObject object, String... keys) {
         try {
             String i = getDataForJson(object, keys);
-            return Long.valueOf(i);
+            return i==null?0:Long.valueOf(i);
         } catch (Exception e) {
             e.printStackTrace();
             return 0;

+ 25 - 3
app_core/common/src/main/java/com/common/system/ActivityUtils.java

@@ -7,6 +7,9 @@ import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 
+import com.common.LogUtil;
+import com.core.app.MyApplication;
+
 import java.util.List;
 
 /**
@@ -19,20 +22,39 @@ import java.util.List;
  */
 public class ActivityUtils {
 
+    /**
+     * 判断程序是否打开
+     * @return
+     */
+    public static boolean isRunningInForeground() {
+        boolean isActivityFound = false;
+        ActivityManager activityManager = (ActivityManager) MyApplication.getInstance().getSystemService(Context.ACTIVITY_SERVICE);
+        List<ActivityManager.RunningTaskInfo> services = activityManager
+                .getRunningTasks(1);
+        if (services.get(0).topActivity.getPackageName().toString()
+                .equalsIgnoreCase(MyApplication.getInstance().getPackageName().toString())) {
+            LogUtil.d("isOpenApp",""+services.get(0).topActivity.getPackageName().toString());
+            LogUtil.d("isOpenApp",""+MyApplication.getInstance().getPackageName().toString());
+            isActivityFound = true;
+        }
+        return isActivityFound;
+    }
+
     private ActivityUtils() {
         throw new UnsupportedOperationException("u can't instantiate me...");
     }
 
     /**
-     * 判断某一个类是否存在任务栈里面 
+     * 判断某一个类是否存在任务栈里面
+     *
      * @return
      */
-    public  static boolean isExsitMianActivity(Context ct,Class<?> cls){
+    public static boolean isExsitMianActivity(Context ct, Class<?> cls) {
         Intent intent = new Intent(ct, cls);
         ComponentName cmpName = intent.resolveActivity(ct.getPackageManager());
         boolean flag = false;
         if (cmpName != null) { // 说明系统中存在这个activity    
-            ActivityManager am = (ActivityManager)ct. getSystemService(ct.ACTIVITY_SERVICE);
+            ActivityManager am = (ActivityManager) ct.getSystemService(ct.ACTIVITY_SERVICE);
             List<ActivityManager.RunningTaskInfo> taskInfoList = am.getRunningTasks(15);
             for (ActivityManager.RunningTaskInfo taskInfo : taskInfoList) {
                 if (taskInfo.baseActivity.equals(cmpName)) { // 说明它已经启动了    

+ 0 - 1
app_core/common/src/main/java/com/core/app/ActionBackActivity.java

@@ -67,7 +67,6 @@ public class ActionBackActivity extends StackActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
         ActionBar actionBar = getSupportActionBar();
         if (actionBar != null) {
             actionBar.setDisplayShowHomeEnabled(true);

+ 13 - 4
app_core/common/src/main/java/com/core/app/Constants.java

@@ -12,11 +12,16 @@ public class Constants {
     public static final String IM_BASE_URL = "http://113.105.74.140:8092/";
     //IM测试地址
     public static final String IM_BASE_URL_TEST = "http://113.105.74.135:8092/";
+    //询价服务正式地址
+    public static final String API_INQUIRY = "https://api-inquiry.usoftmall.com/";
+//    public static final String API_INQUIRY = "http://192.168.253.192:8080/";
+//    public static final String API_INQUIRY = "http://192.168.253.102:24001/";
 
     public static String IM_BASE_URL() {
         String url = "";
         if (BaseConfig.isDebug()) {
-            url = IM_BASE_URL_TEST;
+//            url = IM_BASE_URL_TEST;
+            url = IM_BASE_URL;
         } else {
             url = IM_BASE_URL;
         }
@@ -24,6 +29,7 @@ public class Constants {
     }
 
     public static final String WXPAY_APPID = "wxd1deafafe3fd9a21";
+    public static final String WEIXIN_SECRET = "7475f0b85c140c68e7568c904fb68421";
 
     public static String charitBaseUrl() {
         return "http://lj.ubtob.com/app/";
@@ -475,6 +481,7 @@ public class Constants {
         String DEVICE_WHICH_PAGE = "device_which_page";
         String DEVICE_FROM_COMMON = "device_from_common";
         String DEVICE_FROM_QUERY = "device_from_query";
+        String MODEL = "model";
 
         /**
          * 一元捐
@@ -487,12 +494,11 @@ public class Constants {
          */
         String B2B_COMPANY_BEAN = "b2b_company_bean";
 
-        String KEY_PURCHASE_ID = "key_purchase_id";
-        String KEY_PURCHASE_STATUS = "key_purchase_status";
-
         String EXTRA_B2B_LIST_ID = "extra_b2b_list_id";
         String EXTRA_B2B_LIST_STATE = "extra_b2b_list_state";
+        String EXTRA_B2B_LIST_ENUU = "extra_b2b_list_enuu";
         String EXTRA_B2B_LIST_JSON = "extra_b2b_list_json";
+        String EXTRA_B2B_LIST_TEL = "extra_b2b_list_tel";
 
         String STATE_PURCHASE_ORDER_TODO = "todo";
         String STATE_PURCHASE_ORDER_END = "end";
@@ -509,6 +515,8 @@ public class Constants {
         String STATE_PUBLIC_INQUIRY_DONE = "public_done";
         String STATE_PUBLIC_INQUIRY_TODO = "public_todo";
 
+        String GET_LOCAL_ENUU = "get_local_enuu";
+
         int RESULT_PURCHASE_ORDER = 111;
         int RESULT_CUSTOMER_INQUIRY = 112;
         int RESULT_PUBLIC_INQUIRY = 113;
@@ -517,5 +525,6 @@ public class Constants {
 
     public interface CACHE {
         String B2B_BUSINESS_ENUU = "b2b_business_enuu";
+        String EN_BUSINESS_CODE = "en_business_code";
     }
 }

+ 100 - 11
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -6,14 +6,22 @@ import android.graphics.Bitmap;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
+import android.os.Handler;
+import android.os.StrictMode;
 import android.support.multidex.MultiDex;
 import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.volley.RequestQueue;
 import com.android.volley.toolbox.Volley;
+import com.baidu.mapapi.SDKInitializer;
 import com.common.config.BaseApplication;
 import com.common.config.BaseConfig;
+import com.common.preferences.PreferenceUtils;
+import com.common.preferences.SharedUtil;
+import com.core.db.DBOpenHelper;
+import com.core.db.DatabaseManager;
+import com.core.db.SQLiteHelper;
 import com.core.model.ConfigBean;
 import com.core.model.User;
 import com.core.net.NetWorkObservable;
@@ -21,7 +29,10 @@ import com.core.net.location.BdLocationHelper;
 import com.core.net.ssl.AuthImageDownloader;
 import com.core.net.utils.NetUtils;
 import com.core.net.volley.FastVolley;
-import com.core.service.InitializeService;
+import com.core.utils.CommonUtil;
+import com.facebook.stetho.Stetho;
+import com.iflytek.cloud.SpeechConstant;
+import com.iflytek.cloud.SpeechUtility;
 import com.lidroid.xutils.HttpUtils;
 import com.me.network.app.http.ssl.TrustAllCerts;
 import com.nostra13.universalimageloader.cache.disc.impl.TotalSizeLimitedDiscCache;
@@ -33,12 +44,20 @@ import com.nostra13.universalimageloader.core.DisplayImageOptions;
 import com.nostra13.universalimageloader.core.ImageLoader;
 import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
 import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
+import com.tencent.mm.opensdk.openapi.IWXAPI;
+import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 import com.tencent.smtt.sdk.QbSdk;
+import com.umeng.analytics.MobclickAgent;
+import com.umeng.socialize.Config;
+import com.umeng.socialize.PlatformConfig;
+import com.uuzuche.lib_zxing.activity.ZXingLibrary;
 
 import org.apache.http.cookie.Cookie;
 
 import java.io.File;
 
+import cat.ereza.customactivityoncrash.CustomActivityOnCrash;
+
 /**
  * Created by Arison on 2017/8/25.
  */
@@ -102,7 +121,19 @@ public class MyApplication extends BaseApplication {
     @Override
     public void initConfig() throws Exception {
         //后台服务初始化application
-        InitializeService.initApplication(this);
+//        InitializeService.initApplication(this);
+        Stetho.initializeWithDefaults(this);
+        SpeechUtility.createUtility(this, SpeechConstant.APPID + "=5876dc99");
+        //自定义闪退页面初始化
+        CustomActivityOnCrash.install(this);
+        //设置ErrorActivity在后台启动,默认为true
+        CustomActivityOnCrash.setLaunchErrorActivityWhenInBackground(true);
+        //设置展示详细错误信息,默认为true
+        CustomActivityOnCrash.setShowErrorDetails(true);
+        //启用APP Restart,默认为true
+        CustomActivityOnCrash.setEnableAppRestart(true);
+        //设置重新启动的activity
+        //  CustomActivityOnCrash.setRestartActivityClass(SplashActivity.class);
 
         INSTANCE = this;
         TrustAllCerts.allowAllSSL();//信任所有证书
@@ -110,14 +141,38 @@ public class MyApplication extends BaseApplication {
 
         mHttpUtils = new HttpUtils();
         configHttpUtils();
-        // 初始化定位
-        getBdLocationHelper();
-        // 初始化App目录
-        initAppDir();
-        // 初始化图片加载
-        initImageLoader();
-        //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
 
+        Config.REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";
+        ZXingLibrary.initDisplayOpinion(this);
+        SharedUtil.init(this);
+
+        initShareAPI();
+
+        initWxPay(this);
+        //  CrashReport.initCrashReport(getApplicationContext(), "900050585", false);
+        PreferenceUtils.putBoolean(this, Constants.IS_NOTIFICATION, false);//不进行通知
+
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                //定位场景设置
+                MobclickAgent.setScenarioType(MyApplication.this, MobclickAgent.EScenarioType.E_UM_NORMAL);
+                initUmengStatistics();
+
+                SDKInitializer.initialize(getApplicationContext());
+                // 初始化数据库
+                SQLiteHelper.copyDatabaseFile(getApplicationContext());
+
+                // 初始化定位
+                getBdLocationHelper();
+                // 初始化App目录
+                initAppDir();
+                // 初始化图片加载
+                initImageLoader();
+            }
+        }, 1);
+
+        //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
         QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
 
             @Override
@@ -133,8 +188,16 @@ public class MyApplication extends BaseApplication {
             }
         };
         //x5内核初始化接口
-        QbSdk.initX5Environment(getApplicationContext(),  cb);
-  
+        QbSdk.initX5Environment(getApplicationContext(), cb);
+
+        if (AppConfig.DEBUG) {
+            Log.d(AppConfig.TAG, "MyApplication onCreate");
+        }
+        if (AppConfig.DEBUG) {
+            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
+            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
+        }
+        initErpDB();
         // 初始化网络监听
         mNetWorkObservable = new NetWorkObservable(this);
 
@@ -188,6 +251,32 @@ public class MyApplication extends BaseApplication {
         android.os.Process.killProcess(android.os.Process.myPid());
     }
 
+    public void initShareAPI() {
+//        PlatformConfig.setWeixin("wx2539cc96bf158e00", "b057aa3e807ba7c505a2f03cc541bbf6");
+        PlatformConfig.setWeixin(Constants.WXPAY_APPID, Constants.WEIXIN_SECRET);
+        PlatformConfig.setSinaWeibo("493318722", "7def652c3683603b08bab87d34b1f944");
+        PlatformConfig.setQQZone("1104894295", "Nk8zMIz5YSqwRQ1F");
+        Config.IsToastTip = false;
+    }
+
+    public void initWxPay(Context context) {
+        IWXAPI wxApi = WXAPIFactory.createWXAPI(context, Constants.WXPAY_APPID, false);
+        wxApi.registerApp(Constants.WXPAY_APPID);
+    }
+
+    private void initErpDB() {
+        DatabaseManager.initializeInstance(DBOpenHelper.getInstance(this));
+    }
+
+    private void initUmengStatistics() {
+        MobclickAgent.UMAnalyticsConfig config = new MobclickAgent.UMAnalyticsConfig(this, "57ea27bb67e58e088c003bbf",
+                "baidu", MobclickAgent.EScenarioType.E_UM_NORMAL);
+        MobclickAgent.startWithConfigure(config);
+        if (!CommonUtil.isReleaseVersion()) {//当前为开发版本时候不需要上传友盟
+            MobclickAgent.setCatchUncaughtExceptions(false);
+        }
+    }
+
     private void configHttpUtils() {
         mHttpUtils.configRequestThreadPoolSize(4);
         mHttpUtils.configRequestRetryCount(3);

+ 5 - 1
app_core/common/src/main/java/com/core/base/BaseActivity.java

@@ -91,7 +91,11 @@ public abstract class BaseActivity extends ActionBackActivity {
         activity = this;
         setNotTouchEvent(true);
         mFastVolley = MyApplication.getInstance().getFastVolley();
-        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
+        Intent intent=getIntent();
+        if (intent==null||intent.getBooleanExtra("ORIENTATION_PORTRAIT",true)){
+           LogUtil.i("ORIENTATION_PORTRAIT");
+            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
+        }
         progressDialog = CustomProgressDialog.createDialog(this);
 
         //重启之后恢复到之前的语言

+ 0 - 1
app_core/common/src/main/java/com/core/base/StackActivity.java

@@ -11,7 +11,6 @@ public class StackActivity extends DefaultResourceActivity {
 	@Override
 	protected void onCreate(Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
-		setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
 		ActivityStack.getInstance().push(this);
 	}
 

+ 29 - 13
app_core/common/src/main/java/com/core/model/Approval.java

@@ -20,6 +20,10 @@ import java.util.Map;
  */
 
 public class Approval {
+    public static final String VALUES_YES = "是";
+    public static final String VALUES_NO = "否";
+    public static final String VALUES_UNKNOWN = "未选择";
+
     public static final int
             TITLE = 11//标题
             , MAIN = 12  //主表
@@ -61,8 +65,9 @@ public class Approval {
         }
         this.oldValues = oldValues;
     }
+
     public String getDbFind() {
-        return dbFind==null?"":dbFind;
+        return dbFind == null ? "" : dbFind;
     }
 
     public void setDbFind(String dbFind) {
@@ -213,10 +218,12 @@ public class Approval {
             return 1;
         else if (isDftypeEQ("DT", "D")) {
             return 2;
-        } else if (isDftypeEQ("C", "YN", "B")) {
+        } else if (isDftypeEQ("C")) {
             return 3;
         } else if (isDBFind()) {
             return 4;
+        } else if (isDftypeEQ("B", "YN")) {
+            return 5;
         }
         return 0;
     }
@@ -245,29 +252,38 @@ public class Approval {
                 }
             }
         } else if ("C".equals(dfType) || "YN".equals(dfType)) {
-            if (values.equals("-1")) values = "是";
-            else if (values.equals("0")) values = "否";
-            if (oldValues.equals("-1")) oldValues = "是";
-            else if (oldValues.equals("0")) oldValues = "否";
-
+            if (values.equals("-1")) {
+                values = VALUES_YES;
+            } else if ("YN".equals(dfType) &&values.equals("1")&& type == DETAIL && isNeerInput()) {
+                values = VALUES_UNKNOWN;
+            } else {
+                values = VALUES_NO;
+            }
+            if (!StringUtil.isEmpty(oldValues)) {
+                if (oldValues.equals("-1")) oldValues = VALUES_YES;
+                else if (oldValues.equals("0")) oldValues = VALUES_NO;
+            }
         } else if ("B".equals(dfType)) {
-            if (values.equals("1")) values = "是";
-            else values = "否";
-            if (oldValues.equals("1")) oldValues = "是";
-            else oldValues = "否";
+            if (values.equals("1")) values = VALUES_YES;
+            else values = VALUES_NO;
+            if (!StringUtil.isEmpty(oldValues)) {
+                if (oldValues.equals("1")) oldValues = VALUES_YES;
+                else oldValues = VALUES_NO;
+            }
         }
     }
 
+
     public void addValues(String str) {
         values = StringUtil.isEmpty(values) ? str : values + str;
     }
 
     public boolean isDftypeEQ(String... str) {
-        return isEQ(getDfType(),str);
+        return isEQ(getDfType(), str);
     }
 
     public boolean isDBFind() {
-        return isEQ(getDbFind(),"T","AT","M","DF");
+        return isEQ(getDbFind(), "T", "AT", "M", "DF");
     }
 
     public boolean isEQ(String key, String... str) {

+ 19 - 1
app_core/common/src/main/java/com/core/model/LoginEntity.java

@@ -13,15 +13,17 @@ public class LoginEntity {
     private String website;
     private String name;
     private Integer masterId;
+    private String businessCode;
     //b2b
     private Integer spaceId;
     private String userName;
     private List<Spaces> spaces = new ArrayList<>();
-	
+
     public class Spaces {
         private Integer id;
         private String enuu;
         private String name;
+        private String businessCode;
 
         public String getEnuu() {
             return enuu;
@@ -46,6 +48,14 @@ public class LoginEntity {
         public void setId(Integer id) {
             this.id = id;
         }
+
+        public String getBusinessCode() {
+            return businessCode;
+        }
+
+        public void setBusinessCode(String businessCode) {
+            this.businessCode = businessCode;
+        }
     }
 
     public Integer getMasterId() {
@@ -112,6 +122,14 @@ public class LoginEntity {
         this.userName = userName;
     }
 
+    public String getBusinessCode() {
+        return businessCode;
+    }
+
+    public void setBusinessCode(String businessCode) {
+        this.businessCode = businessCode;
+    }
+
     public List<Spaces> getSpaces() {
         return spaces;
     }

+ 7 - 1
app_core/common/src/main/java/com/core/net/ProgressDownloader.java

@@ -1,5 +1,8 @@
 package com.core.net;
 
+import com.alibaba.fastjson.JSON;
+import com.common.LogUtil;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -84,7 +87,10 @@ public class ProgressDownloader {
         }
     }
 
-    private void save(Response response, long startsPoint) {
+    protected void save(Response response, long startsPoint) {
+      String fileName=  response.headers().get("Content-Disposition");
+        LogUtil.i("fileName="+fileName);
+        LogUtil.i("response.headers()="+ JSON.toJSONString(response.headers()));
         ResponseBody body = response.body();
         InputStream in = body.byteStream();
         FileChannel channelOut = null;

+ 7 - 5
app_core/common/src/main/java/com/core/net/ProgressResponseBody.java

@@ -16,11 +16,6 @@ import okio.Source;
  */
 
 public class ProgressResponseBody extends ResponseBody {
-    public interface ProgressListener {
-        void onPreExecute(long contentLength);
-
-        void update(long totalBytes, boolean done);
-    }
 
     private final ResponseBody responseBody;
     private final ProgressListener progressListener;
@@ -69,4 +64,11 @@ public class ProgressResponseBody extends ResponseBody {
             }
         };
     }
+
+    public interface ProgressListener {
+        void onPreExecute(long contentLength);
+
+        void update(long totalBytes, boolean done);
+    }
+
 }

+ 0 - 128
app_core/common/src/main/java/com/core/net/http/HttpUtil.java

@@ -6,10 +6,7 @@ import android.util.Log;
 import com.common.LogUtil;
 import com.common.data.JSONUtil;
 import com.common.data.ObjectUtils;
-import com.common.data.StringUtil;
 import com.common.hmac.HmacUtils;
-import com.common.thread.ThreadUtil;
-import com.core.utils.OpenFilesUtils;
 
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
@@ -296,132 +293,7 @@ public class HttpUtil {
     }
 
 
-    public static void download(final String httpurl, final String path, final String fileName,final OpenFilesUtils.OnFileLoadListener onFileLoadListener) {
-        if (Looper.myLooper() == Looper.getMainLooper()) {
-            ThreadUtil.getInstance().addTask(new Runnable() {
-                @Override
-                public void run() {
-                    onFileLoadResult(downloadAsyn(httpurl, path, fileName, onFileLoadListener), onFileLoadListener);
-                }
-            });
-        } else {
-            onFileLoadResult(downloadAsyn(httpurl, path, fileName, onFileLoadListener), onFileLoadListener);
-        }
-    }
-
-    private static void onFileLoadResult(final String filePath,    final OpenFilesUtils.OnFileLoadListener onFileLoadListener) {
-        boolean ok;
-        LogUtil.i("filePath=" + filePath);
-        if (!StringUtil.isEmpty(filePath) && new File(filePath).exists()) {
-            ok = true;
-        } else {
-            ok = false;
-        }
-        if (Looper.myLooper() == Looper.getMainLooper()) {
-            if (ok) {
-                onFileLoadListener.onSuccess(new File(filePath));
-            } else {
-                onFileLoadListener.onFailure(filePath);
-            }
-        } else {
-            final boolean finalOk = ok;
-//            OAHttpHelper.getInstance().post(new Runnable() {
-//                @Override
-//                public void run() {
-//                    if (finalOk) {
-//                        onFileLoadListener.onSuccess(new File(filePath));
-//                    } else {
-//                        onFileLoadListener.onFailure(filePath);
-//                    }
-//                }
-//            });
-        }
-
-
-    }
-
 
-    private static String downloadAsyn(String httpurl, String path, String fileName, final OpenFilesUtils.OnFileLoadListener onFileLoadListener) {
-        URL url = null;
-        try {
-            url = new URL(httpurl);
-            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-            boolean useHttps = httpurl.startsWith("https");
-            if (useHttps) {
-                SSLContext sscontext = SSLContext.getInstance("SSL");
-                sscontext.init(null, SSLUtil.trustAllCerts, new java.security.SecureRandom());
-                javax.net.ssl.SSLSocketFactory ssf = sscontext.getSocketFactory();
-                HttpsURLConnection https = (HttpsURLConnection) connection;
-                https.setSSLSocketFactory(ssf);
-                https.setHostnameVerifier(SSLUtil.DO_NOT_VERIFY);
-            }
-            connection.setRequestMethod("GET");
-            connection.setRequestProperty("Charset", "UTF-8");
-            connection.setReadTimeout(50 * 1000);
-            connection.setConnectTimeout(50 * 1000);
-            connection.connect();
 
-            final int file_leng = connection.getContentLength();
-            InputStream bin = connection.getInputStream();
-            LogUtil.i("path=" + path);
-            LogUtil.i("fileName=" + fileName);
-            File file = new File(path);
-            if (!file.exists()) {
-                LogUtil.i("!file.exists()");
-                file.mkdirs();
-            }
-            file = new File(path + "/" + fileName);
-            if (!file.exists()) {
-                LogUtil.i("!file.exists()2");
-                file.createNewFile();
-            }
-            OutputStream out = new FileOutputStream(file);
-            int size = 0;
-            int len = 0;
-            byte[] buf = new byte[1024];
-            while ((size = bin.read(buf)) != -1) {
-                len += size;
-                out.write(buf, 0, size);
-                //TODO 下载过程
-                final int finalLen = len;
-//                OAHttpHelper.getInstance().post(new Runnable() {
-//                    @Override
-//                    public void run() {
-//                        onFileLoadListener.onLoadIng(finalLen * 100, file_leng);
-//                    }
-//                });
-                LogUtil.i("下载了=" + len * 100 / file_leng);
-            }
-            bin.close();
-            out.close();
-            return path + "/" + fileName;
-        } catch (MalformedURLException e) {
-            if (e != null) {
-                LogUtil.i("MalformedURLException=" + e.getMessage());
-                return e.getMessage();
-            }
-        } catch (IOException e) {
-            if (e != null) {
-                LogUtil.i("IOException=" + e.getMessage());
-                return e.getMessage();
-            }
-        } catch (NoSuchAlgorithmException e) {
-            if (e != null) {
-                LogUtil.i("NoSuchAlgorithmException=" + e.getMessage());
-                return e.getMessage();
-            }
-        } catch (KeyManagementException e) {
-            if (e != null) {
-                LogUtil.i("KeyManagementException=" + e.getMessage());
-                return e.getMessage();
-            }
-        } catch (Exception e) {
-            if (e != null) {
-                LogUtil.i("Exception=" + e.getMessage());
-                return e.getMessage();
-            }
-        }
-        return "";
-    }
 
 }

+ 35 - 11
app_core/common/src/main/java/com/core/net/http/ViewUtil.java

@@ -17,6 +17,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.common.LogUtil;
+import com.common.config.BaseConfig;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
@@ -34,6 +35,7 @@ import com.core.net.utils.NetUtils;
 import com.core.utils.CommonUtil;
 import com.core.utils.DialogUtils;
 import com.core.utils.FlexJsonUtil;
+import com.core.utils.ToastUtil;
 import com.core.widget.crouton.Crouton;
 import com.core.widget.crouton.Style;
 
@@ -58,6 +60,7 @@ public class ViewUtil {
     public static String erp_uu;//推送切公司
     public static String erp_masterId;//推送切公司
     public static String erp_company;
+    public static String mBusinessCode;//公司营业执照
     public static MaterialDialog mdProcessDialog;
     private static MaterialDialog loginERPDialog;
     private static List<LoginEntity> erpEntities;
@@ -359,6 +362,10 @@ public class ViewUtil {
                     break;
                 case Constants.SUCCESS_ERP:
                     String result = msg.getData().getString("result");
+                    Log.d("erp_success", result);
+                    //B2B商务以及邀请注册等功能需要用到B2B的个人uu号
+                    CommonUtil.setSharedPreferences(ct, "b2b_uu", b2b_uu);
+                    CommonUtil.setSharedPreferences(ct, Constants.CACHE.EN_BUSINESS_CODE, mBusinessCode);
                     try {
                         if (JSONUtil.validate(result) && result != null) {
                             //登录ERP成功,清除B2B缓存
@@ -428,12 +435,16 @@ public class ViewUtil {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        //必须补位空,才能不覆盖原有的根路径
+        //必须不为空,才能不覆盖原有的根路径
         if (!StringUtil.isEmpty(erp_baseurl)) {
             CommonUtil.setSharedPreferences(ct, "erp_master", erp_master);
             CommonUtil.setSharedPreferences(ct, "erp_commpany", erp_company);
-            CommonUtil.setSharedPreferences(ct, "erp_uu", String.valueOf(dataMap.get("uu")));
-            LogUtil.d("ERPLOGIN", "erp_uu1:" + String.valueOf(dataMap.get("uu")));
+            String enuu = String.valueOf(dataMap.get("uu"));
+            if ("null".equals(enuu) || "(null)".equals(enuu)) {
+                enuu = "";
+            }
+            CommonUtil.setSharedPreferences(ct, "erp_uu", enuu);
+            LogUtil.d("ERPLOGIN", "erp_uu1:" + enuu);
             LogUtil.d("ERPLOGIN", "erp_uu2:" + CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_uu"));
             CommonUtil.setSharedPreferences(ct, "erp_masterId", erp_masterId);
             CommonUtil.setSharedPreferences(ct, "erp_login", true);
@@ -491,6 +502,7 @@ public class ViewUtil {
 
         CommonUtil.setSharedPreferences(ct, "erp_login", false);
         CommonUtil.setSharedPreferences(ct, "b2b_uu", b2b_uu);
+        CommonUtil.setSharedPreferences(ct, Constants.CACHE.EN_BUSINESS_CODE, mBusinessCode);
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_success_b2b));
         handler.postDelayed(new Runnable() {
             @Override
@@ -574,7 +586,7 @@ public class ViewUtil {
     public static void LoginSucess(Message msg) {
         String json = msg.getData().getString("result");
         LogUtil.prinlnLongMsg("HttpLogs", "管理平台登录:" + json);
-        CommonUtil.setSharedPreferences(ct, "loginJson", json);
+        CommonUtil.setSharedPreferences(MyApplication.getInstance(), "loginJson", json);
         String phone = msg.getData().getString("phone");
         String password = msg.getData().getString("password");
         try {
@@ -584,7 +596,7 @@ public class ViewUtil {
                 if (object != null && object.containsKey("userName")) {
                     String userName = getNameByB2b(object.getString("userName"), phone);
                     if (!StringUtil.isEmpty(userName))
-                        CommonUtil.setSharedPreferences(ct, "erp_emname", userName);
+                        CommonUtil.setSharedPreferences(MyApplication.getInstance(), "erp_emname", userName);
                 }
             }
         } catch (Exception e) {
@@ -615,7 +627,7 @@ public class ViewUtil {
                     loginEntities.add(model);
                 } else if (model.getPlatform().equals("B2B")) {
                     List<LoginEntity.Spaces> sModel = model.getSpaces();
-                    b2b_uu= model.getAccount();
+                    b2b_uu = model.getAccount();
                     if (!ListUtils.isEmpty(sModel)) {
                         for (int j = 0; j < sModel.size(); j++) {
                             //去重逻辑
@@ -633,6 +645,7 @@ public class ViewUtil {
                                 bModel.setSpaceId(sModel.get(j).getId());
                                 bModel.setPlatform("B2B");
                                 bModel.setUserName(model.getUserName());
+                                bModel.setBusinessCode(sModel.get(j).getBusinessCode());
                                 loginEntities.add(bModel);
                             }
                         }
@@ -642,6 +655,8 @@ public class ViewUtil {
 //                            model.setPlatform("个人");
 //                            model.setName(model.getUserName() + "(个人用户)");
 //                            loginEntities.add(model);
+                            CommonUtil.setSharedPreferences(ct, "b2b_uu", b2b_uu);
+                            CommonUtil.clearSharedPreferences(ct, Constants.CACHE.EN_BUSINESS_CODE);
                             CommonUtil.setSharedPreferences(MyApplication.getInstance(), "userRole", "1");
                             ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
                         } else {
@@ -655,7 +670,7 @@ public class ViewUtil {
             if (ListUtils.isEmpty(loginEntities)) return;
             erpEntities = loginEntities;
             String[] items = new String[loginEntities.size()];
-            int select =0;
+            int select = 0;
             for (int j = 0; j < loginEntities.size(); j++) {
                 items[j] = loginEntities.get(j).getName();
             }
@@ -663,10 +678,10 @@ public class ViewUtil {
                 if (loginERPDialog != null) {
                     select = loginERPDialog.getSelectedIndex();
                 }
-                if (select>items.length){
-                    select=0;
+                if (select > items.length) {
+                    select = 0;
                 }
-                LogUtil.d("AppLogs","select:"+select+"");
+                LogUtil.d("AppLogs", "select:" + select + "");
                 loginERPDialog = new MaterialDialog.Builder(ct)
                         .title(ct.getString(R.string.user_dialog_company))
                         .items(items)
@@ -675,10 +690,15 @@ public class ViewUtil {
                                     @Override
                                     public boolean onSelection(MaterialDialog dialog,
                                                                View view, int which, CharSequence text) {
+                                        if (!CommonUtil.isNetWorkConnected(ct)) {
+                                            ToastUtil.showToast(ct, R.string.networks_out);
+                                            return true;
+                                        }
                                         if (!StringUtil.isEmpty(text.toString())) {
                                             LoginEntity entity = erpEntities.get(which);
                                             erp_phone = phone;
                                             erp_password = password;
+                                            mBusinessCode = entity.getBusinessCode();
                                             if ("ERP".equals(entity.getPlatform())) {
                                                 erp_username = entity.getAccount();
                                                 erp_master = entity.getMaster();
@@ -1051,7 +1071,9 @@ public class ViewUtil {
                                     String password) {
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_progress_erp));
         url = url + "mobile/login.action";
-//        url = CommonUtil.getAppBaseUrl(MyApplication.getInstance()) + "mobile/login.action";
+//        if (BaseConfig.isDebug()){
+//            url = CommonUtil.getAppBaseUrl(MyApplication.getInstance()) + "mobile/login.action";
+//        }
         Map<String, String> params = new HashMap<String, String>();
         params.put("username", username);
         params.put("password", password);
@@ -1076,5 +1098,7 @@ public class ViewUtil {
         CommonUtil.clearSharedPreferences(ct, "userRole");
         CommonUtil.clearSharedPreferences(ct, Constants.B2B_SESSION_CACHE);
         CommonUtil.clearSharedPreferences(ct, Constants.B2B_UID_CACHE);
+        CommonUtil.clearSharedPreferences(ct, Constants.CACHE.EN_BUSINESS_CODE);
+        CommonUtil.clearSharedPreferences(ct, Constants.CACHE.B2B_BUSINESS_ENUU);
     }
 }

+ 1 - 1
app_core/common/src/main/java/com/core/net/location/BdLocationHelper.java

@@ -194,7 +194,7 @@ public class BdLocationHelper {
 	}
 
 	public LatLng getLocation() {
-		return latLng;
+		return latLng==null?latLng=new LatLng(0,0):latLng;
 	}
 
 	public String getCityName() {

+ 11 - 10
app_core/common/src/main/java/com/core/service/InitializeService.java

@@ -62,10 +62,10 @@ public class InitializeService extends IntentService {
     }
 
     private void initApplication() {
-        Stetho.initializeWithDefaults(this);
-        SpeechUtility.createUtility(this, SpeechConstant.APPID + "=5876dc99");
+        Stetho.initializeWithDefaults(mContext);
+        SpeechUtility.createUtility(mContext, SpeechConstant.APPID + "=5876dc99");
         //自定义闪退页面初始化
-        CustomActivityOnCrash.install(this);
+        CustomActivityOnCrash.install(mContext);
         //设置ErrorActivity在后台启动,默认为true
         CustomActivityOnCrash.setLaunchErrorActivityWhenInBackground(true);
         //设置展示详细错误信息,默认为true
@@ -75,14 +75,14 @@ public class InitializeService extends IntentService {
         //设置重新启动的activity
         //  CustomActivityOnCrash.setRestartActivityClass(SplashActivity.class);
         Config.REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";
-        ZXingLibrary.initDisplayOpinion(this);
-        SharedUtil.init(this);
+        ZXingLibrary.initDisplayOpinion(mContext);
+        SharedUtil.init(mContext);
 
         initShareAPI();
 
-        initWxPay(this);
+        initWxPay(mContext);
         //  CrashReport.initCrashReport(getApplicationContext(), "900050585", false);
-        PreferenceUtils.putBoolean(this, Constants.IS_NOTIFICATION, false);//不进行通知
+        PreferenceUtils.putBoolean(mContext, Constants.IS_NOTIFICATION, false);//不进行通知
 
         if (AppConfig.DEBUG) {
             Log.d(AppConfig.TAG, "MyApplication onCreate");
@@ -96,9 +96,10 @@ public class InitializeService extends IntentService {
         //定位场景设置
         MobclickAgent.setScenarioType(mContext, MobclickAgent.EScenarioType.E_UM_NORMAL);
         initUmengStatistics();
-        SDKInitializer.initialize(getApplicationContext());
+
+        SDKInitializer.initialize(this);
         // 初始化数据库
-        SQLiteHelper.copyDatabaseFile(getApplicationContext());
+        SQLiteHelper.copyDatabaseFile(mContext);
         /*try {
             com.core.app.Constants.cleanRed(this);
         } catch (PackageManager.NameNotFoundException e) {
@@ -108,7 +109,7 @@ public class InitializeService extends IntentService {
     }
 
     public void initShareAPI() {
-        PlatformConfig.setWeixin("wx2539cc96bf158e00", "b057aa3e807ba7c505a2f03cc541bbf6");
+        PlatformConfig.setWeixin(Constants.WXPAY_APPID, Constants.WEIXIN_SECRET);
         PlatformConfig.setSinaWeibo("493318722", "7def652c3683603b08bab87d34b1f944");
         PlatformConfig.setQQZone("1104894295", "Nk8zMIz5YSqwRQ1F");
         Config.IsToastTip = false;

+ 18 - 15
app_core/common/src/main/java/com/core/utils/BaiduMapUtil.java

@@ -162,8 +162,6 @@ public class BaiduMapUtil {
     }
 
 
-
-
     //计算距离saaa
     public String getDistance(double a1, double a2, double b1, double b2) {
         LatLng a = new LatLng(a1, a2);
@@ -263,19 +261,24 @@ public class BaiduMapUtil {
     }
 
     public void getNearInfo(int radius, int pagerNum, LatLng latLng, OnSearchPoiListener onSearchPoiListener) {
-        this.onSearchPoiListener = onSearchPoiListener;
-        if (option == null)
-            option = new PoiNearbySearchOption();
-        if (mPoiSearch == null)
-            mPoiSearch = PoiSearch.newInstance();
-//        .keyword("公司|大厦")
-        option.keyword("公司")
-                .sortType(PoiSortType.distance_from_near_to_far)
-                .radius(radius)
-                .pageNum(pagerNum)
-                .pageCapacity(1000).location(latLng);
-        mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
-        mPoiSearch.searchNearby(option);
+        if (latLng != null) try {
+            this.onSearchPoiListener = onSearchPoiListener;
+            if (option == null)
+                option = new PoiNearbySearchOption();
+            if (mPoiSearch == null)
+                mPoiSearch = PoiSearch.newInstance();
+            option.keyword("公司")
+                    .sortType(PoiSortType.distance_from_near_to_far)
+                    .radius(radius)
+                    .pageNum(pagerNum)
+                    .pageCapacity(1000)
+                    .location(latLng);
+            mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
+            mPoiSearch.searchNearby(option);
+        } catch (Exception e) {
+
+        }
+
     }
 
     /**

+ 153 - 4
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -25,11 +25,15 @@ import android.text.Spannable;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
 import android.text.style.ForegroundColorSpan;
+import android.text.style.UnderlineSpan;
 import android.util.Base64;
 import android.util.Log;
+import android.view.Gravity;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -69,6 +73,7 @@ import java.io.InputStreamReader;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
 import java.net.URI;
 import java.net.URLEncoder;
 import java.text.DecimalFormat;
@@ -101,9 +106,9 @@ public class CommonUtil {
         }
         String baseUrl = getSharedPreferences(ct, "erp_baseurl");
 //        if (BaseConfig.isDebug()){
-//            baseUrl="http://192.168.253.203:8090/ERP/";
+//            baseUrl="http://192.168.253.41:8080/ERP/";
 //        }
-//        baseUrl="http://192.168.253.203:8090/ERP/
+//        baseUrl = "http://192.168.253.29:8080/ERP/";
 
         return baseUrl;
     }
@@ -120,7 +125,20 @@ public class CommonUtil {
         }
 //        return "https://admin-city.ubtob.com/";
         return "https://city-service.ubtob.com/city/thxz/";
-//        return "http://192.168.253.31:8687/city/thxz/";
+//        return "http://192.168.253.29:8080/ERP/";
+    }
+
+    /**
+     * 询价服务的根路径
+     *
+     * @param ct
+     * @return
+     */
+    public static String getInquiryBaseUrl(Context ct) {
+        if (ct == null) {
+            return "";
+        }
+        return "https://api-inquiry.usoftmall.com/";
     }
 
     /**
@@ -524,7 +542,7 @@ public class CommonUtil {
             }
         }
         if (StringUtil.isEmpty(name)) {
-            name = MyApplication.getInstance().mLoginUser.getNickName();
+//            name = MyApplication.getInstance().mLoginUser.getNickName();
         }
         return StringUtil.isEmpty(name) ? "" : name;
     }
@@ -1204,6 +1222,75 @@ public class CommonUtil {
     }
 
 
+    /**
+     * double 相减
+     *
+     * @param d1
+     * @param d2
+     * @return
+     */
+    public static double doublesubtract(double d1, double d2) {
+        BigDecimal bd1 = new BigDecimal(Double.toString(d1));
+        BigDecimal bd2 = new BigDecimal(Double.toString(d2));
+        return bd1.subtract(bd2).doubleValue();
+    }
+
+    /**
+     * double 相加
+     *
+     * @param d1
+     * @param d2
+     * @return
+     */
+    public static double doubleAddition(double d1, double d2) {
+        BigDecimal bigDecimal1 = new BigDecimal(Double.toString(d1));
+        BigDecimal bigDecimal2 = new BigDecimal(Double.toString(d2));
+        return bigDecimal1.add(bigDecimal2).doubleValue();
+    }
+
+    /**
+     * double 乘法
+     *
+     * @param d1
+     * @param d2
+     * @return
+     */
+    public static double doubleMul(double d1, double d2) {
+        BigDecimal bd1 = new BigDecimal(Double.toString(d1));
+        BigDecimal bd2 = new BigDecimal(Double.toString(d2));
+        return bd1.multiply(bd2).doubleValue();
+    }
+
+    /**
+     * double 除法
+     *
+     * @param d1
+     * @param d2
+     * @param scale 四舍五入 小数点位数
+     * @return
+     */
+    public static double doubleDiv(double d1, double d2, int scale) {
+        //  当然在此之前,你要判断分母是否为0,
+        //  为0你可以根据实际需求做相应的处理
+
+        BigDecimal bd1 = new BigDecimal(Double.toString(d1));
+        BigDecimal bd2 = new BigDecimal(Double.toString(d2));
+        return bd1.divide(bd2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+
+    /**
+     * double 相比较大小
+     *
+     * @param d1
+     * @param d2
+     * @return 小于:-1;等于:0;大于:1
+     */
+    public static int doubleCompare(double d1, double d2) {
+        BigDecimal data1 = new BigDecimal(Double.toString(d1));
+        BigDecimal data2 = new BigDecimal(Double.toString(d2));
+        return data1.compareTo(data2);
+    }
+
     /**
      * double值小数点后为0则不显示,保留四位小数
      *
@@ -1214,4 +1301,66 @@ public class CommonUtil {
         DecimalFormat decimalFormat = new DecimalFormat("###.####");
         return decimalFormat.format(v);
     }
+
+
+    /**
+     * 添加图片的toast
+     *
+     * @param context
+     * @param imageId  图片id
+     * @param content  文字内容
+     * @param duration 显示时长
+     */
+    public static void imageToast(Context context, int imageId, String content, int duration) {
+        Toast toast = new Toast(context);
+        //显示的时间
+        toast.setDuration(duration);
+        //显示的位置
+        toast.setGravity(Gravity.BOTTOM, 0, 300);
+
+        //自定义toast布局
+        LinearLayout toastLayout = new LinearLayout(context);
+        toastLayout.setGravity(Gravity.CENTER_VERTICAL);
+        toastLayout.setOrientation(LinearLayout.HORIZONTAL);
+
+        //添加ImageView
+        ImageView toastImage = new ImageView(context);
+        toastImage.setImageResource(imageId);
+        toastLayout.addView(toastImage);
+
+        //添加TextView
+        TextView toastText = new TextView(context);
+        toastText.setBackgroundColor(context.getResources().getColor(R.color.toast_bg));
+        toastText.setText(content);
+        toastLayout.addView(toastText);
+
+        toastLayout.setBackgroundColor(context.getResources().getColor(R.color.toast_bg));
+        toast.setView(toastLayout);
+        toast.show();
+    }
+
+    /**
+     * @desc:修改textView样式(添加下划线)
+     * @author:Arison on 2016/8/3
+     */
+    public static void textUnderlineForStyle(
+            TextView view,
+            String input,
+            String match) {
+        SpannableStringBuilder style = new SpannableStringBuilder(input);
+        Pattern highlight = Pattern.compile(match);
+        Matcher m = highlight.matcher(style.toString());
+        while (m.find()) {
+//            style.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), m.start(), m.end(),
+//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+//            style.setSpan(new ForegroundColorSpan(color), m.start(), m.end(),
+//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+//            style.setSpan(new StrikethroughSpan(), m.start(), m.end(),
+//                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+            style.setSpan(new UnderlineSpan(), m.start(), m.end(),
+                    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+        }
+        view.setText(style);
+    }
+
 }

+ 20 - 4
app_core/common/src/main/java/com/core/utils/IntentUtils.java

@@ -1,5 +1,6 @@
 package com.core.utils;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 
@@ -27,7 +28,7 @@ public class IntentUtils {
     }
 
     public static void linkCommonWeb(Context ct, String url, String title) {
-        LogUtil.i("url="+url);
+        LogUtil.i("url=" + url);
         linkCommonWeb(ct, url, title, null, null, false, false);
     }
 
@@ -39,14 +40,14 @@ public class IntentUtils {
         linkCommonWeb(ct, url, title, imageUrl, content, true, false);
     }
 
-
     public static void linkCommonWeb(Context ct,
                                      String url,
                                      String title,
                                      String imageUrl,
                                      String content,
                                      boolean neerShare,
-                                     boolean neerCookie) {
+                                     boolean neerCookie,
+                                     boolean needEnablePullDown) {
         Intent intent_web = new Intent("com.modular.message.MessageWebActivity");
         intent_web.putExtra(KEY_URL, url);
         intent_web.putExtra(KEY_TITLE, title);
@@ -54,7 +55,22 @@ public class IntentUtils {
         intent_web.putExtra(KEY_NEER_SHARE, neerShare);
         intent_web.putExtra(KEY_SHARE_IMAGE, imageUrl);
         intent_web.putExtra(KEY_SHARE_CONTENT, content);
-        ct.startActivity(intent_web);
+        intent_web.putExtra("EnablePullDown", needEnablePullDown);
+        if (ct instanceof Activity){
+            ((Activity)ct).startActivityForResult(intent_web,0x21);
+        }else{
+            ct.startActivity(intent_web);
+        }
+    }
+
+    public static void linkCommonWeb(Context ct,
+                                     String url,
+                                     String title,
+                                     String imageUrl,
+                                     String content,
+                                     boolean neerShare,
+                                     boolean neerCookie) {
+        linkCommonWeb(ct,url,title,imageUrl,content,neerShare,neerCookie,true);
     }
 
 

+ 32 - 0
app_core/common/src/main/java/com/core/widget/PinnedSectionListView.java

@@ -26,6 +26,7 @@ import android.graphics.drawable.GradientDrawable;
 import android.graphics.drawable.GradientDrawable.Orientation;
 import android.os.Parcelable;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.view.MotionEvent;
 import android.view.SoundEffectConstants;
 import android.view.View;
@@ -458,4 +459,35 @@ public class PinnedSectionListView extends ListView {
 		}
 		return ((PinnedSectionListAdapter) adapter).isItemViewTypePinned(viewType);
 	}
+
+	@Override
+	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+		/**@注释:这两个代码是用在嵌套scrollview控件中的,解决显示一行的问题,但是会产生新的问题  */
+//        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
+//                MeasureSpec.AT_MOST);
+//        super.onMeasure(widthMeasureSpec, expandSpec);
+		int height = getMeasuredHeight();
+		int width = 0;
+
+		int widthMode = MeasureSpec.getMode(widthMeasureSpec);
+		int widthSize = MeasureSpec.getSize(widthMeasureSpec);
+		if (widthMode == MeasureSpec.EXACTLY) {
+			//设置了精确的宽度,则为精确模式
+			Log.i("ListView", "精确模式");
+			width = widthSize;
+		} else {
+			if (widthMode == MeasureSpec.AT_MOST) {
+				Log.i("ListView", "AT_MOST模式");
+				final int childCount = getChildCount();
+				for (int i = 0; i < childCount; i++) {
+					View view = getChildAt(i);
+					measureChild(view, widthMeasureSpec, heightMeasureSpec);
+					width = Math.max(width, view.getMeasuredWidth());
+					//height =+Math.max(height, view.getMeasuredHeight());
+				}
+			}
+		}
+		setMeasuredDimension(width, height);
+	}
 }

+ 34 - 2
app_core/common/src/main/java/com/core/widget/SearchActionView.java

@@ -4,6 +4,8 @@ import android.app.Activity;
 import android.content.Context;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.text.Editable;
+import android.text.TextWatcher;
 import android.util.AttributeSet;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -27,6 +29,7 @@ public class SearchActionView extends FrameLayout {
     private OnVoiceCompleteListener mOnVoiceCompleteListener;
     private OnEnterActionListener mOnEnterActionListener;
     private OnMenuClickListener mOnMenuClickListener;
+    private OnTextChangedListener mOnTextChangedListener;
     private ClearEditText mSearchEditText;
 
     public void setOnVoiceCompleteListener(OnVoiceCompleteListener onVoiceCompleteListener) {
@@ -41,6 +44,10 @@ public class SearchActionView extends FrameLayout {
         mOnMenuClickListener = onMenuClickListener;
     }
 
+    public void setOnTextChangedListener(OnTextChangedListener onTextChangedListener) {
+        mOnTextChangedListener = onTextChangedListener;
+    }
+
     public void setMenuImage(int menuImage) {
         try {
             mMenuImageView.setImageResource(menuImage);
@@ -84,8 +91,10 @@ public class SearchActionView extends FrameLayout {
         mBackImageView.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
-                ((Activity) getContext()).finish();
-                ((Activity) getContext()).overridePendingTransition(R.anim.anim_activity_back_in, R.anim.anim_activity_back_out);
+                if (getContext() != null) {
+                    ((Activity) getContext()).finish();
+                    ((Activity) getContext()).overridePendingTransition(R.anim.anim_activity_back_in, R.anim.anim_activity_back_out);
+                }
             }
         });
 
@@ -117,6 +126,25 @@ public class SearchActionView extends FrameLayout {
                 return false;
             }
         });
+
+        mSearchEditText.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 (mOnTextChangedListener != null) {
+                    mOnTextChangedListener.onTextChanged(editable.toString());
+                }
+            }
+        });
     }
 
     public void setSearchHint(String hint) {
@@ -142,4 +170,8 @@ public class SearchActionView extends FrameLayout {
     public interface OnMenuClickListener {
         void onMenuClick(View view);
     }
+
+    public interface OnTextChangedListener {
+        void onTextChanged(String text);
+    }
 }

+ 3 - 0
app_core/common/src/main/java/com/core/xmpp/CoreService.java

@@ -15,6 +15,7 @@ import android.support.v7.app.NotificationCompat;
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.common.LogUtil;
 import com.common.preferences.PreferenceUtils;
 import com.common.system.SystemUtil;
 import com.core.app.Constants;
@@ -250,6 +251,7 @@ public class CoreService extends Service {
         public void notifyConnectionClosedOnError(Exception arg0) {
             if (CoreService.DEBUG)
                 Log.e(CoreService.TAG, "连接异常断开");
+            LogUtil.i("arg0="+arg0.getMessage());
             ListenerManager.getInstance().notifyAuthStateChange(AuthStateListener.AUTH_STATE_NOT);
         }
 
@@ -257,6 +259,7 @@ public class CoreService extends Service {
         public void notifyConnectionClosed() {
             if (CoreService.DEBUG)
                 Log.e(CoreService.TAG, "连接断开");
+            LogUtil.i("notifyConnectionClosed=");
             ListenerManager.getInstance().notifyAuthStateChange(AuthStateListener.AUTH_STATE_NOT);
         }
 

+ 2 - 0
app_core/common/src/main/java/com/core/xmpp/XMucChatManager.java

@@ -310,6 +310,8 @@ public class XMucChatManager {
 			e.printStackTrace();
 		} catch (NotConnectedException e) {
 			e.printStackTrace();
+		}catch (Exception e){
+			e.printStackTrace();
 		}
 	}
 

BIN
app_core/common/src/main/res/drawable-hdpi/uuu.png


BIN
app_core/common/src/main/res/drawable-mdpi/uuu.png


BIN
app_core/common/src/main/res/drawable-xhdpi/uuu.png


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


+ 31 - 9
app_core/common/src/main/res/layout/activity_common_docui.xml

@@ -356,17 +356,39 @@
 
     </LinearLayout>
 
-    <TextView
-        android:id="@+id/sureTv"
+    <LinearLayout
+        android:id="@+id/deviceLL"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:orientation="horizontal"
         android:layout_marginTop="10dp"
-        android:gravity="center"
-        android:paddingBottom="10dp"
-        android:paddingTop="10dp"
-        android:text="@string/common_sure"
-        android:background="@drawable/selector_me_menu_item_bg"
-        android:textColor="@color/titleBlue"
         android:visibility="gone"
-        android:textSize="18sp" />
+        >
+        <TextView
+            android:id="@+id/sureTv"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:paddingBottom="10dp"
+            android:paddingTop="10dp"
+            android:text="@string/common_sure"
+            android:background="@drawable/selector_me_menu_item_bg"
+            android:textColor="@color/titleBlue"
+            android:textSize="18sp" />
+        <TextView
+            android:id="@+id/turnScrapTv"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:paddingBottom="10dp"
+            android:paddingTop="10dp"
+            android:visibility="gone"
+            android:text="转报废申请单"
+            android:background="@drawable/selector_me_menu_item_bg"
+            android:textColor="@color/titleBlue"
+            android:textSize="18sp" />
+    </LinearLayout>
+
 </LinearLayout>

+ 6 - 3
app_core/common/src/main/res/layout/activity_holidays.xml

@@ -6,10 +6,13 @@
     android:background="@color/oa_bg"
     android:orientation="vertical">
 
-    <ImageView
+    <android.support.v7.widget.AppCompatTextView
         android:layout_width="match_parent"
-        android:layout_height="70dp"
-        android:src="@drawable/holiday_bg" />
+        android:layout_height="80dp"
+        android:gravity="center"
+        android:textColor="@color/titleBlue"
+        android:textSize="20sp"
+        android:text="2018年放假时间安排"/>
 
     <ScrollView
         android:layout_width="match_parent"

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

@@ -208,7 +208,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="商家设置"
+                    android:text="@string/business_setting"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView

+ 0 - 2
app_core/common/src/main/res/layout/activity_simple_pinned_list.xml

@@ -3,12 +3,10 @@
     android:layout_height="match_parent"
     android:background="@color/normal_bg"
     android:orientation="vertical" >
-
     <com.core.widget.PinnedSectionListView
         android:id="@+id/list_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:cacheColorHint="#00000000"
         android:gravity="fill" />
-
 </LinearLayout>

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

@@ -22,7 +22,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
-        <com.handmark.pulltorefresh.library.PullToRefreshWebView
+        <com.tencent.smtt.sdk.WebView
             android:id="@+id/webView_listview"
             android:layout_width="match_parent"
             android:layout_height="match_parent"

+ 12 - 12
app_core/common/src/main/res/layout/bsetting_activity.xml

@@ -26,7 +26,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="形象照片"
+                    android:text="@string/information_photo"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -65,7 +65,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="科室设置"
+                    android:text="@string/room_set"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -91,7 +91,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="人员设置"
+                    android:text="@string/person_set"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -117,7 +117,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="设置服务/场地/房间"
+                    android:text="@string/set_location"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -150,7 +150,7 @@
                         android:layout_height="wrap_content"
                         android:layout_centerVertical="true"
                         android:gravity="center"
-                        android:text="员工休息日设置"
+                        android:text="@string/set_e_relax"
                         android:textColor="@color/black"
                         android:textSize="14sp" />
 
@@ -180,7 +180,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="设置员工休息日"
+                    android:text="@string/set_e_relax"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -207,7 +207,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="设置企业休息日"
+                    android:text="@string/set_c_relax"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -233,7 +233,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="设置营业时间"
+                    android:text="@string/setting_worktime"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -259,7 +259,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="设置预约时间类型"
+                    android:text="@string/setting_time_type"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -286,7 +286,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="设置包房预订类型"
+                    android:text="@string/room_type"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -314,7 +314,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="桌位设置"
+                    android:text="@string/table_set"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView
@@ -341,7 +341,7 @@
                     android:layout_height="wrap_content"
                     android:layout_centerVertical="true"
                     android:gravity="center"
-                    android:text="商家详情"
+                    android:text="@string/business_detail1"
                     android:textColor="@color/black"
                     android:textSize="14sp" />
                 <ImageView

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

@@ -16,7 +16,7 @@
         android:id="@+id/image_tv"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="点击更换照片"
+        android:text="@string/click_change_img"
         android:textColor="@color/blue"
         android:layout_marginBottom="143dp"
         android:layout_centerHorizontal="true"
@@ -43,7 +43,7 @@
             android:layout_marginTop="10dp"
             android:background="@drawable/bg_bule_btn"
             android:padding="10dp"
-            android:text="@string/save"
+            android:text="@string/common_save_button"
             android:textColor="@color/white"
             android:textSize="@dimen/text_main" />
     </LinearLayout>

+ 31 - 9
app_core/common/src/main/res/layout/item_approval_rv.xml

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              style="@style/approvalStyle"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content"
-              android:paddingLeft="@dimen/paddingApp">
+    style="@style/approvalStyle"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingLeft="@dimen/paddingApp">
 
     <TextView
         android:id="@+id/captionTV"
@@ -11,7 +11,7 @@
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginRight="10dp"
-        android:layout_weight="1"/>
+        android:layout_weight="1" />
 
     <FrameLayout
         android:id="@+id/valuesFl"
@@ -26,7 +26,7 @@
             android:layout_height="match_parent"
             android:background="@drawable/edit_hint_right_angle"
             android:hint="@string/common_input2"
-            android:textColor="@color/text_main"/>
+            android:textColor="@color/text_main" />
 
         <WebView
             android:id="@+id/valueWeb"
@@ -34,7 +34,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:gravity="center|left"
-            android:visibility="gone"/>
+            android:visibility="gone" />
 
         <LinearLayout
             android:id="@+id/valueLL"
@@ -48,15 +48,37 @@
                 android:layout_width="match_parent"
                 android:gravity="center|left"
                 android:textColor="@color/text_main"
-                android:visibility="gone"/>
+                android:visibility="gone" />
 
             <TextView
                 android:id="@+id/valueTv"
                 style="@style/approvalItemStyle"
                 android:layout_width="match_parent"
                 android:gravity="center|left"
-                android:textColor="@color/text_main"/>
+                android:textColor="@color/text_main" />
         </LinearLayout>
 
+        <RadioGroup
+            android:id="@+id/valuesRG"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+
+            <RadioButton
+                android:id="@+id/yesRB"
+                android:button="@drawable/oa_checkbox"
+                android:layout_width="wrap_content"
+                android:layout_marginRight="@dimen/padding"
+                android:layout_height="wrap_content"
+                android:text="是" />
+
+            <RadioButton
+                android:id="@+id/notRB"
+                android:layout_marginLeft="@dimen/padding"
+                android:layout_width="wrap_content"
+                android:button="@drawable/oa_checkbox"
+                android:layout_height="wrap_content"
+                android:text="否" />
+        </RadioGroup>
     </FrameLayout>
 </LinearLayout>

+ 34 - 6
app_core/common/src/main/res/layout/item_approval_tag.xml

@@ -1,20 +1,20 @@
 <?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="wrap_content"
-              android:orientation="vertical">
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
 
     <View
         android:id="@+id/padding"
         android:layout_width="match_parent"
         android:layout_height="@dimen/paddingApp"
-        android:background="@color/item_line"/>
+        android:background="@color/item_line" />
 
     <View
         android:id="@+id/line"
         android:layout_width="match_parent"
         android:layout_height="2px"
-        android:background="@color/item_line"/>
+        android:background="@color/item_line" />
 
     <TextView
         android:id="@+id/tagTv"
@@ -27,5 +27,33 @@
         android:paddingLeft="6dp"
         android:paddingTop="8dp"
         android:text="tagTv"
-        android:textColor="@color/titleBlue"/>
+        android:textColor="@color/titleBlue" />
+
+    <RadioGroup
+        android:id="@+id/valuesRG"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:visibility="gone"
+        android:layout_marginLeft="@dimen/padding"
+        android:orientation="horizontal"
+        android:paddingLeft="@dimen/padding">
+
+        <RadioButton
+            android:id="@+id/yesRB"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="@dimen/padding"
+            android:button="@drawable/oa_checkbox"
+            android:paddingRight="@dimen/padding"
+            android:text="全部采纳" />
+
+        <RadioButton
+            android:id="@+id/notRB"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/padding"
+            android:button="@drawable/oa_checkbox"
+            android:paddingLeft="@dimen/padding"
+            android:text="全部不采纳" />
+    </RadioGroup>
 </LinearLayout>

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

@@ -14,7 +14,7 @@
         android:layout_height="wrap_content"
         android:layout_marginTop="5dp"
         android:layout_marginBottom="5dp"
-        android:text="明细1"
+        android:text="明细"
         android:textColor="#FF3300"/>
 
     <com.core.widget.MyListView

+ 12 - 11
app_core/common/src/main/res/layout/item_secondmsgs.xml

@@ -56,28 +56,29 @@
             android:layout_marginLeft="3dp"
             android:layout_toRightOf="@id/msgs_area"
             android:gravity="center_vertical">
-
             <TextView
-                android:id="@+id/msgs_title_tv"
+                android:id="@+id/msgs_time_tv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
                 android:ellipsize="end"
                 android:singleLine="true"
-                android:textColor="@color/text_main"
+                android:textColor="@color/text_hine"
                 android:textSize="16sp"
-                android:text="通知公告"
-                />
-
+                android:text="刚刚"/>
             <TextView
-                android:id="@+id/msgs_time_tv"
-                android:layout_width="wrap_content"
+                android:id="@+id/msgs_title_tv"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_alignParentRight="true"
                 android:ellipsize="end"
+                android:layout_toLeftOf="@id/msgs_time_tv"
                 android:singleLine="true"
-                android:textColor="@color/text_hine"
+                android:textColor="@color/text_main"
                 android:textSize="16sp"
-                android:text="刚刚"/>
+                android:text="通知公告"
+                />
+
+
 
             <TextView
                 android:id="@+id/msgs_content_tv"

+ 9 - 9
app_core/common/src/main/res/layout/person_setting_activity.xml

@@ -22,7 +22,7 @@
                 <TextView
                     style="@style/form_relative_left_text"
                     android:id="@+id/name_tv"
-                    android:text="姓名"
+                    android:text="@string/name"
                     android:layout_marginLeft="0dp"
                     android:textColor="@color/text_main"
                     android:textSize="15sp"/>
@@ -56,7 +56,7 @@
                 >
                 <TextView
                     style="@style/form_relative_left_text"
-                    android:text="性别"
+                    android:text="@string/user_sex"
                     android:layout_marginLeft="0dp"
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
@@ -88,7 +88,7 @@
                 <TextView
                     android:id="@+id/user_department_tv"
                     style="@style/form_relative_left_text"
-                    android:text="科室"
+                    android:text="@string/room"
                     android:layout_marginLeft="0dp"
                     android:textColor="@color/text_main"
                     android:textSize="15sp"/>
@@ -118,7 +118,7 @@
 
                 <TextView
                     style="@style/form_relative_left_text"
-                    android:text="职位"
+                    android:text="@string/user_position"
                     android:layout_marginLeft="0dp"
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
@@ -152,7 +152,7 @@
                 <TextView
                     android:id="@+id/tel_tv"
                     style="@style/form_relative_left_text"
-                    android:text="号码"
+                    android:text="@string/tel_number"
                     android:layout_marginLeft="0dp"
                     android:textColor="@color/text_main"
                     android:textSize="15sp"/>
@@ -185,7 +185,7 @@
                 <TextView
                     android:id="@+id/email_tv"
                     style="@style/form_relative_left_text"
-                    android:text="邮箱"
+                    android:text="@string/user_email"
                     android:layout_marginLeft="0dp"
                     android:textColor="@color/text_main"
                     android:textSize="15sp"/>
@@ -222,7 +222,7 @@
                 <TextView
                     android:id="@+id/image_tv"
                     style="@style/form_relative_left_text"
-                    android:text="头像"
+                    android:text="@string/user_images"
                     android:layout_marginLeft="0dp"
                     android:textColor="@color/text_main"
                     android:textSize="15sp"
@@ -232,7 +232,7 @@
                     android:id="@+id/image_tv_"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="点击更换照片"
+                    android:text="@string/click_change_img"
                     android:padding="10dp"
                     android:textColor="@color/blue"
                     android:textSize="18sp"
@@ -263,7 +263,7 @@
                     android:layout_marginTop="50dp"
                     android:background="@drawable/bg_bule_btn"
                     android:padding="10dp"
-                    android:text="@string/save"
+                    android:text="@string/common_save_button"
                     android:textColor="@color/white"
                     android:textSize="@dimen/text_main"/>
                 <Button

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

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<com.xzjmyk.pm.activity.view.shadow.ShadowLayout
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
@@ -12,8 +12,8 @@
         <ListView
             android:id="@+id/mList"
             style="@style/ListViewBasic"
-            android:listSelector="@drawable/selector_pop_items"
+         
             android:layout_height="wrap_content"
             android:dividerHeight="0dp">
         </ListView>
-</com.xzjmyk.pm.activity.view.shadow.ShadowLayout>
+</RelativeLayout>

File diff suppressed because it is too large
+ 983 - 933
app_core/common/src/main/res/values-en/strings.xml


+ 91 - 0
app_core/common/src/main/res/values-zh-rCN/strings.xml

@@ -1553,6 +1553,7 @@
     <string name="str_uu_application">UU应用</string>
     <string name="str_work_subscribe_secretary">预约小秘书</string>
     <string name="str_work_uu_sports">UU运动</string>
+    <string name="str_work_invite_register">邀请注册</string>
 
     <string name="str_administrative_office">行政办公</string>
     <string name="str_work_work_approval">我的审批</string>
@@ -1568,6 +1569,7 @@
     <string name="str_work_expense_account">费用报销</string>
     <string name="str_work_meeting_manage">会议管理</string>
     <string name="str_work_special_attendance">特殊考勤</string>
+    <string name="str_work_device_manage">设备管理</string>
 
     <string name="str_customer_relationship">客户关系管理</string>
     <string name="str_work_business_manage">商机管理</string>
@@ -1587,9 +1589,98 @@
     <string name="str_work_b2b_commerce">B2B商务</string>
     <string name="str_work_usoft_mall">优软商城</string>
     <string name="str_work_charitable_donations">一元捐</string>
+    <!--工作台菜单-->
+
     <string name="str_search_history">搜索历史</string>
     <string name="str_clear">清空</string>
     <string name="str_company_salary">工资条</string>
     <!--工作台菜单-->
+    <string name="who_is_champion">占领了封面</string>
+    <string name="get_again">重新获取</string>
+    <string name="msg_send_success">短信发送成功,请在一分钟内完成输入查询</string>
+    <string name="input_search_date">请输入查询日期</string>
+    <string name="input_search_ycode">请输入验证码</string>
+    <string name="input_search_password">请输入查询密码</string>
+    <string name="please_settting_password">请设置至少6位数查询密码</string>
+    <string name="setting_password_success">设置密码成功</string>
+    <string name="code_outtime">验证码超时,请重新获取</string>
+    <string name="please_settting_password1">请输入6位数验证码</string>
+    <string name="get_code">获取验证码</string>
+    <string name="salary_search">工资查询</string>
+    <string name="cannot_sign">工资数据为空,无法签字</string>
+    <string name="input_your_error">请输入你的报错问题</string>
+    <string name="not_sign">您没有签名</string>
+    <string name="salary">工资</string>
+    <string name="send_error_ok">报错成功</string>
+    <string name="ss_send_success">工资条签名提交成功</string>
+    <string name="no_salary_data">暂无工资信息</string>
+    <string name="error_msg">报错信息</string>
+    <string name="salary_sign">签名</string>
+    <string name="confirm_phone">请确认手机号</string>
+    <string name="code_send_phone">验证码已发送至手机</string>
+    <string name="please_set_pw">请设置密码</string>
+    <string name="password">密码</string>
+    <string name="input_6_pw">请输入新密码(限6-20位)</string>
+    <string name="need_6_str">需6-20位字符</string>
+    <string name="firstused_setpw">首次使用,请设置密码</string>
+    <string name="input_qpw">请输入查询密码(限20位)</string>
+    <string name="change_qpw">修改查詢密碼</string>
+    <string name="next_step">下一步</string>
 
+    <!--start 商家设置-->
+    <string name="business_setting">商家设置</string>
+    <string name="ranking">排行榜</string>
+    <string name="information_photo">形象照片</string>
+    <string name="set_e_relax">设置员工休息日</string>
+    <string name="set_c_relax">设置企业休息日</string>
+    <string name="set_location">设置服务/场地/房间</string>
+    <string name="click_change_img">点击更换照片</string>
+    <string name="cur_no_room">暂未获取到部门/科室</string>
+    <string name="select_room">选择科室</string>
+    <string name="please_add_headerimg">请添加头像照片</string>
+    <string name="room">科室</string>
+    <string name="tel_number">号码</string>
+    <string name="input_name_date">请输入完整姓名/休息日期</string>
+    <string name="hava_save_detail">存在重复的条目明细</string>
+    <string name="input_person_name">请输入人员名称</string>
+    <string name="cannot_select_beforedate">不可选择过去时间</string>
+    <string name="relax_time_rapeat">休息时间不可重复</string>
+    <string name="input_all_date">请输入完整休息日期</string>
+    <string name="update_room">更新服务/场地/房间</string>
+    <string name="input_name1">请输入名称</string>
+    <string name="add_img">请添加照片</string>
+    <string name="please_input_room">请输入服务/场地/房间名称</string>
+    <string name="please_input_time">请输入服务时间/分钟</string>
+    <string name="setting_worktime">设置营业时间</string>
+    <string name="setting_time_type">设置预约时间类型</string>
+    <string name="business_detail1">商家详情</string>
+    <string name="room_type">设置包房预订类型</string>
+    <string name="please_select_room_type">请选择包房预订类型</string>
+    <string name="please_input_bdi">请输入商家详情介绍</string>
+    <string name="unlaw_str">含违规字符</string>
+    <string name="select_bookT_type">请选择预约时间类型</string>
+    <string name="time_canot_empty">时间段不能为空</string>
+    <string name="booking_times">时间段:</string>
+    <string name="book_time_type">预约时间类型</string>
+    <string name="time_d">按时间段</string>
+    <string name="time_p">按时间点</string>
+    <string name="room_book_type"></string>
+    <string name="zzw">早中晚</string>
+    <string name="zw">中晚</string>
+    <string name="please_inpuy_bi">请输入商家详情介绍限400字</string>
+    <string name="table_set">桌位设置</string>
+    <string name="net_expection">服务器异常请稍后再试</string>
+    <string name="input_all_msg">请输全设置信息</string>
+    <string name="table_setting">桌位设置</string>
+    <string name="pi_tablecode">请输入桌位代码</string>
+    <string name="pi_number">请输入数量</string>
+    <string name="pi_remark">请输入备注</string>
+    <string name="pi_bookdays">请输入可被预约量/天</string>
+    <string name="pi_seatnumber">请输入最多可坐人数</string>
+    <string name="pi_tabletype">请选择桌位类型</string>
+    <string name="b_table">大桌</string>
+    <string name="m_table">中桌</string>
+    <string name="s_table">小桌</string>
+    <string name="table_repeat">桌位不可重复设置</string>
+    <string name="booking_time_set">预约时间段设置</string>
 </resources>

+ 146 - 40
app_core/common/src/main/res/values-zh-rTW/strings.xml

@@ -1525,58 +1525,164 @@
     <string name="input_phone_number">請輸入手機號</string>
     <string name="input_name">請輸入姓名</string>
 
-    <string name="give_up">放</string>
-    <string name="app_time_selecting">选择时间</string>
-    <string name="qzone_edit_weekly">编写周报</string>
-    <string name="qzone_edit_monthly">编写月报</string>
-    <string name="business_statistics">商家统计</string>
-    <string name="usoft_science">优软科技</string>
-    <string name="work_plat_setting">工作面板置</string>
+    <string name="give_up">放</string>
+    <string name="app_time_selecting">選擇時間</string>
+    <string name="qzone_edit_weekly">編寫週報</string>
+    <string name="qzone_edit_monthly">編寫月報</string>
+    <string name="business_statistics">商家統計</string>
+    <string name="usoft_science">優軟科技</string>
+    <string name="work_plat_setting">工作面板置</string>
     <string name="complete">完成</string>
 
     <!--工作台菜单-->
-    <string name="str_work_add_func">添加用</string>
+    <string name="str_work_add_func">添加用</string>
 
-    <string name="str_uu_application">UU应用</string>
-    <string name="str_work_subscribe_secretary">预约小秘书</string>
-    <string name="str_work_uu_sports">UU运动</string>
+    <string name="str_uu_application">UU應用</string>
+    <string name="str_work_subscribe_secretary">預約小秘書</string>
+    <string name="str_work_uu_sports">UU運動</string>
+    <string name="str_work_invite_register">邀請註冊</string>
 
-    <string name="str_administrative_office">行政公</string>
-    <string name="str_work_work_approval">我的批</string>
-    <string name="str_work_backlog">待工作</string>
-    <string name="str_work_work_calendar">工作日</string>
-    <string name="str_work_work_report">工作汇报</string>
-    <string name="str_work_punch_clock">打卡到</string>
-    <string name="str_work_outwork_sign">外勤到</string>
-    <string name="str_work_attendance_statistics">考勤统计</string>
-    <string name="str_work_overtime_request">加班申</string>
-    <string name="str_work_leave_request">请假申请</string>
-    <string name="str_work_travel_request">出差申</string>
-    <string name="str_work_expense_account">费用报销</string>
-    <string name="str_work_meeting_manage">会议管理</string>
+    <string name="str_administrative_office">行政公</string>
+    <string name="str_work_work_approval">我的批</string>
+    <string name="str_work_backlog">待工作</string>
+    <string name="str_work_work_calendar">工作日</string>
+    <string name="str_work_work_report">工作匯報</string>
+    <string name="str_work_punch_clock">打卡到</string>
+    <string name="str_work_outwork_sign">外勤到</string>
+    <string name="str_work_attendance_statistics">考勤統計</string>
+    <string name="str_work_overtime_request">加班申</string>
+    <string name="str_work_leave_request">請假申請</string>
+    <string name="str_work_travel_request">出差申</string>
+    <string name="str_work_expense_account">費用報銷</string>
+    <string name="str_work_meeting_manage">會議管理</string>
     <string name="str_work_special_attendance">特殊考勤</string>
+    <string name="str_work_device_manage">設備管理</string>
 
-    <string name="str_customer_relationship">客户关系管理</string>
-    <string name="str_work_business_manage">商管理</string>
-    <string name="str_work_customer_manage">客管理</string>
-    <string name="str_work_customer_visit">客户拜访</string>
-    <string name="str_work_sales_data">售看板</string>
-    <string name="str_work_honor_rank">荣誉墙</string>
+    <string name="str_customer_relationship">客戶關係管理</string>
+    <string name="str_work_business_manage">商管理</string>
+    <string name="str_work_customer_manage">客管理</string>
+    <string name="str_work_customer_visit">客戶拜訪</string>
+    <string name="str_work_sales_data">售看板</string>
+    <string name="str_work_honor_rank">榮譽墻</string>
 
-    <string name="str_enterprise_application">企业应用</string>
-    <string name="str_work_data_inquiry">数据查询</string>
-    <string name="str_work_report_statistics">报表统计</string>
-    <string name="str_work_real_time_subs">实时看板</string>
-    <string name="str_work_subs_manage">订阅号管理</string>
-    <string name="str_work_salary_bill">企业工资条</string>
+    <string name="str_enterprise_application">企業應用</string>
+    <string name="str_work_data_inquiry">數據查詢</string>
+    <string name="str_work_report_statistics">報表統計</string>
+    <string name="str_work_real_time_subs">實時看板</string>
+    <string name="str_work_subs_manage">訂閱號管理</string>
+    <string name="str_work_salary_bill">企業工資條</string>
 
-    <string name="str_usoft_cloud_platform">优软云平台</string>
-    <string name="str_work_b2b_commerce">B2B商</string>
-    <string name="str_work_usoft_mall">优软商城</string>
+    <string name="str_usoft_cloud_platform">優軟雲平台</string>
+    <string name="str_work_b2b_commerce">B2B商</string>
+    <string name="str_work_usoft_mall">優軟商城</string>
     <string name="str_work_charitable_donations">一元捐</string>
-    <string name="str_search_history">搜索历史</string>
+    <!--工作台菜单-->
+
+    <string name="str_search_history">搜索歷史</string>
     <string name="str_clear">清空</string>
     <string name="str_company_salary">工資條</string>
     <!--工作台菜单-->
+    <string name="who_is_champion">佔領了封面</string>
+    <string name="all_Amount_of_money">總金額</string>
+
+
+    <string name="get_again">重新獲取</string>
+    <string name="msg_send_success">短信發送成功,請在一分鐘內完成輸入查詢</string>
+    <string name="input_search_date">請輸入查詢日期</string>
+    <string name="input_search_ycode">請輸入驗證碼</string>
+    <string name="input_search_password">請輸入查詢密碼</string>
+    <string name="please_settting_password">請設置至少6位數查詢密碼</string>
+    <string name="setting_password_success">設置密碼成功</string>
+    <string name="code_outtime">驗證碼超時,請重新獲取</string>
+    <string name="please_settting_password1">請輸入6位數驗證碼</string>
+    <string name="get_code">獲取驗證碼</string>
+    <string name="salary_search">工資查詢</string>
+    <string name="cannot_sign">工資數據為空,無法簽字</string>
+    <string name="input_your_error">請輸入你的報錯問題</string>
+    <string name="not_sign">您沒有簽名</string>
+    <string name="salary">工資</string>
+    <string name="send_error_ok">報錯成功</string>
+    <string name="ss_send_success">工資條簽名提交成功</string>
+    <string name="no_salary_data">暫無工資信息</string>
+    <string name="error_msg">報錯信息</string>
+    <string name="salary_sign">簽名</string>
+    <string name="confirm_phone">請確認手機號</string>
+    <string name="code_send_phone">驗證碼已發送至手機</string>
+    <string name="please_set_pw">請設置密碼</string>
+    <string name="password">密碼</string>
+    <string name="input_6_pw">請輸入新密碼(限6-20位)</string>
+    <string name="need_6_str">需6-20位字符</string>
+    <string name="firstused_setpw">首次使用,請設置密碼</string>
+    <string name="input_qpw">請輸入查詢密碼(限20位)</string>
+    <string name="next_step">下一步</string>
+
+
+    <!--start 商家設置-->
+        <string name="business_setting">商家設置</string>
+        <string name="ranking">排行榜</string>
+        <string name="information_photo">形象照片</string>
+        <string name="set_e_relax">設置員工休息日</string>
+        <string name="set_c_relax">設置企業休息日</string>
+        <string name="set_location">設置服務/場地/房間</string>
+        <string name="click_change_img">點擊更換照片</string>
+        <string name="cur_no_room">暫未獲取到部門/科室</string>
+        <string name="select_room">選擇科室</string>
+        <string name="please_add_headerimg">請添加頭像照片</string>
+        <string name="room">科室</string>
+        <string name="tel_number">號碼</string>
+        <string name="input_name_date">請輸入完整姓名/休息日期</string>
+        <string name="hava_save_detail">存在重複的條目明細</string>
+        <string name="input_person_name">請輸入人員名稱</string>
+        <string name="cannot_select_beforedate">不可選擇過去時間</string>
+        <string name="relax_time_rapeat">休息時間不可重複</string>
+        <string name="input_all_date">請輸入完整休息日期</string>
+        <string name="update_room">更新服務/場地/房間</string>
+        <string name="input_name1">請輸入名稱</string>
+        <string name="add_img">請添加照片</string>
+        <string name="please_input_room">請輸入服務/場地/房間名稱</string>
+        <string name="please_input_time">請輸入服務時間/分鐘</string>
+        <string name="add">新增</string>
+        <string name="setting_worktime">設置營業時間</string>
+        <string name="setting_time_type">設置預約時間類型</string>
+        <string name="business_detail1">商家詳情</string>
+        <string name="room_type">設置包房預訂類型</string>
+        <string name="please_select_room_type">請選擇包房預訂類型</string>
+        <string name="please_input_bdi">請輸入商家詳情介紹</string>
+        <string name="unlaw_str">含違規字符</string>
+        <string name="select_bookT_type">請選擇預約時間類型</string>
+        <string name="time_canot_empty">時間段不能為空</string>
+        <string name="booking_times">時間段:</string>
+        <string name="book_time_type">預約時間類型</string>
+        <string name="time_d">按時間段</string>
+        <string name="time_p">按時間點</string>
+        <string name="room_book_type"></string>
+        <string name="zzw">早中晚</string>
+        <string name="zw">中晚</string>
+        <string name="please_inpuy_bi">請輸入商家詳情介紹限400字</string>
+        <string name="table_set">桌位設置</string>
+        <string name="net_expection">服務器異常請稍後再試</string>
+        <string name="input_all_msg">請輸全設置信息</string>
+        <string name="table_setting">桌位設置</string>
+        <string name="pi_tablecode">請輸入桌位代碼</string>
+        <string name="pi_number">請輸入數量</string>
+        <string name="pi_remark">請輸入備註</string>
+        <string name="pi_bookdays">請輸入可被預約量/天</string>
+        <string name="pi_seatnumber">請輸入最多可坐人數</string>
+        <string name="pi_tabletype">請選擇桌位類型</string>
+        <string name="b_table">大桌</string>
+        <string name="m_table">中桌</string>
+        <string name="s_table">小桌</string>
+        <string name="table_repeat">桌位不可重複設置</string>
+    <string name="room_set">科室設置</string>
+        <string name="person_set">人員設置</string>
+        <string name="e_relax_set">員工休息日設置</string>
+        <string name="person_list">人員列表</string>
+        <string name="e_relaxday">員工休息日</string>
+        <string name="c_relaxday">企業休息日</string>
+        <string name="room_location">服務/場地/房間</string>
+        <string name="relax_time">休息時間</string>
+    <string name="booking_time_set">預約時間段設置</string>
+    <string name="enter_details_money">請輸入明細金額</string>
+    <!--end s商家设置-->
 
 </resources>

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

@@ -111,7 +111,6 @@
     <string name="save_success">保存成功</string>
     <string name="save_failed">保存失败</string>
     <string name="delete">删除</string>
-    <string name="add">新增</string>
     <string name="add_friend">添加好友</string>
     <string name="next_step">下一步</string>
 
@@ -1841,7 +1840,6 @@
     <string name="booking_me">我的预约</string>
     <string name="booking_shared">预约共享</string>
     <string name="booking_time_set">预约时间段设置</string>
-    <string name="booking_times">时间段:</string>
 
     <string name="booking_add">预约计划</string>
     <string name="select_share_friend">分享好友</string>
@@ -1891,6 +1889,7 @@
     <string name="str_uu_application">UU应用</string>
     <string name="str_work_subscribe_secretary">预约小秘书</string>
     <string name="str_work_uu_sports">UU运动</string>
+    <string name="str_work_invite_register">邀请注册</string>
 
     <string name="str_administrative_office">行政办公</string>
     <string name="str_work_work_approval">我的审批</string>
@@ -1906,6 +1905,7 @@
     <string name="str_work_expense_account">费用报销</string>
     <string name="str_work_meeting_manage">会议管理</string>
     <string name="str_work_special_attendance">特殊考勤</string>
+    <string name="str_work_device_manage">设备管理</string>
 
     <string name="str_customer_relationship">客户关系管理</string>
     <string name="str_work_business_manage">商机管理</string>
@@ -1925,9 +1925,109 @@
     <string name="str_work_b2b_commerce">B2B商务</string>
     <string name="str_work_usoft_mall">优软商城</string>
     <string name="str_work_charitable_donations">一元捐</string>
+    //商旅服务
+    <string name="business_services">商旅服务</string>
+    <!--工作台菜单-->
+
     <string name="str_search_history">搜索历史</string>
     <string name="str_clear">清空</string>
     <string name="str_company_salary">工资条</string>
     <!--工作台菜单-->
-
+    <string name="who_is_champion">占领了封面</string>
+
+
+    <string name="get_again">重新获取</string>
+    <string name="msg_send_success">短信发送成功,请在一分钟内完成输入查询</string>
+    <string name="input_search_date">请输入查询日期</string>
+    <string name="input_search_ycode">请输入验证码</string>
+    <string name="input_search_password">请输入查询密码</string>
+    <string name="please_settting_password">请设置至少6位数查询密码</string>
+    <string name="setting_password_success">设置密码成功</string>
+    <string name="code_outtime">验证码超时,请重新获取</string>
+    <string name="please_settting_password1">请输入6位数验证码</string>
+    <string name="get_code">获取验证码</string>
+    <string name="salary_search">工资查询</string>
+    <string name="cannot_sign">工资数据为空,无法签字</string>
+    <string name="input_your_error">请输入你的报错问题</string>
+    <string name="not_sign">您没有签名</string>
+    <string name="salary">工资</string>
+    <string name="send_error_ok">报错成功</string>
+    <string name="ss_send_success">工资条签名提交成功</string>
+    <string name="no_salary_data">暂无工资信息</string>
+    <string name="error_msg">报错信息</string>
+    <string name="salary_sign">签名</string>
+    <string name="confirm_phone">请确认手机号</string>
+    <string name="code_send_phone">验证码已发送至手机</string>
+    <string name="please_set_pw">请设置密码</string>
+    <string name="password">密码</string>
+    <string name="input_6_pw">请输入新密码(限6-20位)</string>
+    <string name="need_6_str">需6-20位字符</string>
+    <string name="firstused_setpw">首次使用,请设置密码</string>
+    <string name="input_qpw">请输入查询密码(限20位)</string>
+
+    <!--start 商家设置-->
+    <string name="business_setting">商家设置</string>
+    <string name="ranking">排行榜</string>
+    <string name="information_photo">形象照片</string>
+    <string name="set_e_relax">设置员工休息日</string>
+    <string name="set_c_relax">设置企业休息日</string>
+    <string name="set_location">设置服务/场地/房间</string>
+    <string name="click_change_img">点击更换照片</string>
+    <string name="cur_no_room">暂未获取到部门/科室</string>
+    <string name="select_room">选择科室</string>
+    <string name="please_add_headerimg">请添加头像照片</string>
+    <string name="room">科室</string>
+    <string name="tel_number">号码</string>
+    <string name="input_name_date">请输入完整姓名/休息日期</string>
+    <string name="hava_save_detail">存在重复的条目明细</string>
+    <string name="input_person_name">请输入人员名称</string>
+    <string name="cannot_select_beforedate">不可选择过去时间</string>
+    <string name="relax_time_rapeat">休息时间不可重复</string>
+    <string name="input_all_date">请输入完整休息日期</string>
+    <string name="update_room">更新服务/场地/房间</string>
+    <string name="input_name1">请输入名称</string>
+    <string name="add_img">请添加照片</string>
+    <string name="please_input_room">请输入服务/场地/房间名称</string>
+    <string name="please_input_time">请输入服务时间/分钟</string>
+    <string name="add">新增</string>
+    <string name="setting_worktime">设置营业时间</string>
+    <string name="setting_time_type">设置预约时间类型</string>
+    <string name="business_detail1">商家详情</string>
+    <string name="room_type">设置包房预订类型</string>
+    <string name="please_select_room_type">请选择包房预订类型</string>
+    <string name="please_input_bdi">请输入商家详情介绍</string>
+    <string name="unlaw_str">含违规字符</string>
+    <string name="select_bookT_type">请选择预约时间类型</string>
+    <string name="time_canot_empty">时间段不能为空</string>
+    <string name="booking_times">时间段:</string>
+    <string name="book_time_type">预约时间类型</string>
+    <string name="time_d">按时间段</string>
+    <string name="time_p">按时间点</string>
+    <string name="room_book_type"></string>
+    <string name="zzw">早中晚</string>
+    <string name="zw">中晚</string>
+    <string name="please_inpuy_bi">请输入商家详情介绍限400字</string>
+    <string name="table_set">桌位设置</string>
+    <string name="net_expection">服务器异常请稍后再试</string>
+    <string name="input_all_msg">请输全设置信息</string>
+    <string name="table_setting">桌位设置</string>
+    <string name="pi_tablecode">请输入桌位代码</string>
+    <string name="pi_number">请输入数量</string>
+    <string name="pi_remark">请输入备注</string>
+    <string name="pi_bookdays">请输入可被预约量/天</string>
+    <string name="pi_seatnumber">请输入最多可坐人数</string>
+    <string name="pi_tabletype">请选择桌位类型</string>
+    <string name="b_table">大桌</string>
+    <string name="m_table">中桌</string>
+    <string name="s_table">小桌</string>
+    <string name="table_repeat">桌位不可重复设置</string>
+    <string name="room_set">科室设置</string>
+    <string name="person_set">人员设置</string>
+    <string name="e_relax_set">员工休息日设置</string>
+    <string name="person_list">人员列表</string>
+    <string name="e_relaxday">员工休息日</string>
+    <string name="c_relaxday">企业休息日</string>
+    <string name="room_location">服务/场地/房间</string>
+    <string name="relax_time">休息时间</string>
+    <!--end s商家设置-->
 </resources>

BIN
app_core/message/src/main/res/drawable-hdpi/uuu.png


BIN
app_core/message/src/main/res/drawable-xhdpi/uuu.png


+ 10 - 7
app_core/network/src/main/java/com/me/network/app/base/BaseApplication.java

@@ -6,12 +6,13 @@ import android.app.Application;
  * Created by Arison on 2017/5/15.
  */
 public abstract class BaseApplication extends Application {
-    private static Application mApplication=null;
+    private static Application mApplication = null;
+
     @Override
     public void onCreate() {
         super.onCreate();
-      
-        mApplication=this;
+
+        mApplication = this;
         init();
         //初始化网络库
         initHttpClient();
@@ -23,7 +24,7 @@ public abstract class BaseApplication extends Application {
         initNotifyHelper();
         //初始化日志打印
         initLogHelper();
-      
+
     }
 
     public void initLogHelper() {
@@ -33,7 +34,9 @@ public abstract class BaseApplication extends Application {
     }
 
 
-    public abstract void init();
+    public void init() {
+
+    }
 
     public void initHttpClient() {
 
@@ -51,7 +54,7 @@ public abstract class BaseApplication extends Application {
 
     }
 
-    public static Application getInstance(){
-        return  mApplication;
+    public static Application getInstance() {
+        return mApplication;
     }
 }

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

@@ -35,7 +35,7 @@ public class HttpClient {
 
     private HttpBase httpBase;
 
-    private int what;
+    private int what = -1;
 
     public HttpClient(Builder builder) {
         super();
@@ -117,7 +117,7 @@ public class HttpClient {
         private long retryTimeout = 5;//重试间隔时间
         private boolean isDebug;// 是否开启打印日志
         private HttpBase httpBase;//具体的网络请求类
-        private int what;
+        private int what = -1;
 
         //默认的参数
         public Builder() {

+ 42 - 2
app_core/network/src/main/java/com/me/network/app/http/HttpRequest.java

@@ -1,14 +1,22 @@
 package com.me.network.app.http;
 
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.text.TextUtils;
+import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.me.network.app.base.BaseApplication;
 import com.me.network.app.base.HttpCallback;
 import com.me.network.app.base.HttpParams;
 import com.me.network.app.http.rx.Result2Listener;
 import com.me.network.app.http.rx.ResultSubscriber;
 
+import base.android.com.network.R;
+
 /**
  * @author RaoMeng
  * @describe 发起网络请求
@@ -58,6 +66,15 @@ public class HttpRequest {
             throw new IllegalArgumentException("requestUrl can not be NULL");
         }
 
+        if (!isNetWorkConnected(BaseApplication.getInstance())) {
+            try {
+                callback.onFail(httpParams.getFlag(), BaseApplication.getInstance().getString(R.string.networks_out));
+                return;
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
         mHttpClient = new HttpClient.Builder(requestHost).build();
 
         mHttpClient.Api().send(new HttpClient.Builder()
@@ -84,10 +101,14 @@ public class HttpRequest {
                         JSONObject resultObject = JSON.parseObject(result);
                         failMsg = resultObject.getString("exceptionInfo");
                         if (TextUtils.isEmpty(failMsg) || "(null)".equals(failMsg) || "null".equals(failMsg)) {
-                            failMsg = result;
+                            failMsg = resultObject.getString("message");
+                            if (TextUtils.isEmpty(failMsg) || "(null)".equals(failMsg) || "null".equals(failMsg)) {
+                                failMsg = result;
+                            }
                         }
                     } catch (Exception e) {
-                        if (result.length() < 20) {
+                        Log.e("exceptionInfo", result);
+                        if (result.length() < 40) {
                             failMsg = result;
                         }
                     }
@@ -101,4 +122,23 @@ public class HttpRequest {
         }));
     }
 
+    /**
+     * 检测网络是否可用
+     *
+     * @param context
+     * @return
+     */
+    private boolean isNetWorkConnected(Context context) {
+        if (context != null) {
+            ConnectivityManager mConnectivityManager = (ConnectivityManager) context
+                    .getSystemService(Context.CONNECTIVITY_SERVICE);
+            @SuppressLint("MissingPermission")
+            NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
+            if (mNetworkInfo != null) {
+                return mNetworkInfo.isAvailable();
+            }
+        }
+        return false;
+    }
+
 }

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

@@ -1,3 +1,4 @@
 <resources>
     <string name="app_name">network</string>
+    <string name="networks_out">当前网络不可用,请稍后重试!</string>
 </resources>

+ 6 - 2
app_modular/appbooking/build.gradle

@@ -1,7 +1,11 @@
 apply plugin: 'com.android.library'
-
+apply plugin: 'me.tatarka.retrolambda'
 
 android {
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
     compileSdkVersion rootProject.ext.android.compileSdkVersion
     buildToolsVersion rootProject.ext.android.buildToolsVersion
     defaultConfig {
@@ -21,9 +25,9 @@ android {
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile deps.appcompatV7
+    compile deps.bottomsheet
     testCompile deps.junit
     compile project(':common')
     compile project(':appcontact')
-    compile 'com.android.support.constraint:constraint-layout:+'
     compile project(path: ':apputils')
 }

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

@@ -16,8 +16,13 @@
             android:name=".activity.services.BServiceSearchActivity"
             android:windowSoftInputMode="adjustPan|stateHidden" />
         <activity android:name=".activity.services.BServiceDetailActivity" />
-        <activity android:name=".activity.utils.GridSelectActivity"></activity>
-        <activity android:name=".activity.utils.GridSelectDateActivity"></activity>
+        <activity android:name=".activity.utils.GridSelectActivity" />
+        <activity android:name=".activity.utils.GridSelectDateActivity" />
+        <activity android:name=".activity.services.DishSelectActivity"></activity>
+
+        <activity android:name=".activity.services.DishMainActivity"></activity>
+        <activity android:name=".activity.test.BottomSheetActivity"></activity>
+       
     </application>
 
 </manifest>

+ 4 - 2
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingAddActivity.java

@@ -81,7 +81,7 @@ public class BBookingAddActivity extends OABaseActivity implements View.OnClickL
     List<DataState> dataStates;
     GridDataAdapter adapter;
     private String phone;
-    private String[] mTypes = {"商务洽谈", "开会", "外出娱乐", "吃饭", "卡拉OK", "高尔夫","麻将","电影","其它" };
+    private String[] mTypes ;
 
 
     @Override
@@ -129,7 +129,8 @@ public class BBookingAddActivity extends OABaseActivity implements View.OnClickL
         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("商务洽谈");
+        mTypes = getResources().getStringArray(R.array.booking_topics);
+        tv_book_topic.setText(mTypes[0]);
 
         if (getIntent() != null && getIntent().getExtras() != null) {
             model = getIntent().getExtras().getParcelable("model");
@@ -150,6 +151,7 @@ public class BBookingAddActivity extends OABaseActivity implements View.OnClickL
             }
         }
 
+   
         dataStates = new ArrayList<>();
         for (String str : mTypes) {
             DataState dataState = new DataState();

+ 96 - 16
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceAddActivity.java

@@ -14,6 +14,7 @@ import android.widget.Button;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.ListView;
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
 import android.widget.RelativeLayout;
@@ -47,6 +48,7 @@ import com.core.utils.ToastUtil;
 import com.core.utils.helper.AvatarHelper;
 import com.core.widget.NScrollerGridView;
 import com.core.widget.view.Activity.SelectActivity;
+import com.core.widget.view.ListViewInScroller;
 import com.core.widget.view.SwitchView;
 import com.core.widget.view.selectcalendar.SelectCalendarActivity;
 import com.core.xmpp.model.AddAttentionResult;
@@ -57,10 +59,13 @@ import com.me.network.app.http.rx.ResultSubscriber;
 import com.modular.booking.R;
 import com.modular.booking.activity.utils.GridSelectActivity;
 import com.modular.booking.activity.utils.GridSelectDateActivity;
+import com.modular.booking.activity.utils.ShoppingCart;
 import com.modular.booking.adapter.ItemFoodStateAdapter;
+import com.modular.booking.adapter.ItemFoodsDishlistAdapter;
 import com.modular.booking.model.SBListModel;
 import com.modular.booking.model.SBMenuModel;
 import com.modular.booking.model.SeatsStateModel;
+import com.modular.booking.model.ShoppingEntity;
 import com.modular.booking.widget.AddSubUtils;
 
 import java.util.ArrayList;
@@ -74,19 +79,21 @@ import de.hdodenhof.circleimageview.CircleImageView;
 import static com.common.data.JSONUtil.getJSONArray;
 
 public class BServiceAddActivity extends OABaseActivity implements View.OnClickListener {
+  
     private Button submit_btn;
+    
     private EditText et_book_notes, et_book_phone, et_book_name;//预约人的备注、电话、姓名
     //餐饮
     private TextView tv_food_times, tv_food_rooms, tv_food_peoples;//用餐时间、需要包厢、用餐人数
-    //  美容美发
+    //美容美发
     private TextView tv_hair_times, tv_hair_rooms;//服务时间、服务项目
-    //  运动
+    //运动
     private TextView tv_sport_time, tv_sport_rooms, tv_sport_peoples;//运动时间、运动项目、运动人数
-    //  医院挂号
+    //医院挂号
     private TextView tv_hospital_rooms, tag_hospital_doctor, tv_hospital_time;//科室、医生、时段
-    //  会所
+    //会所
     private TextView tv_club_technician, tv_club_time, tv_club_peoples;//技师、时间、人数
-    //  KTV
+    //KTV
     private TextView tv_ktv_times, tv_ktv_rooms, tv_ktv_peoples;//时间、房间、人数
     //抬头信息
     private CircleImageView iv_header;
@@ -116,6 +123,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
     private RelativeLayout notes_rl;
     private LinearLayout ll_seats_panel;
     private RelativeLayout food_seats_rl;
+    private RelativeLayout food_dishs_rl;
+
+    ItemFoodsDishlistAdapter itemFoodsDishlistAdapter;
+    ListViewInScroller mDishList;
+    private TextView tv_food_dishs;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -182,6 +194,10 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
          gvZSeats=(NScrollerGridView)findViewById(R.id.gvZSeats);
         tvDSeatsTitle=(TextView)findViewById(R.id.tvDSeatsTitle);
          gvDSeats=(NScrollerGridView)findViewById(R.id.gvDSeats);
+        food_dishs_rl=findViewById(R.id.food_dishs_rl);
+     //   food_dishs_rl.setEnabled(true);
+        mDishList=findViewById(R.id.lv_dish);
+        tv_food_dishs=findViewById(R.id.tv_food_dishs);
 
         tvSeatsLeft=findViewById(R.id.tvSeatsLeft);
         tvSeatsRight=findViewById(R.id.tvSeatsRight);
@@ -194,12 +210,12 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
         submit_btn.setOnClickListener(this);
         et_book_name.setText(CommonUtil.getName());
         et_book_phone.setText(MyApplication.getInstance().mLoginUser.getTelephone());
-
-
+        
         tv_sub.setOnClickListener(this);
         tv_title.setOnClickListener(this);
+        food_dishs_rl.setOnClickListener(this);
 
-        addSubUtils = (AddSubUtils) findViewById(R.id.add_sub);
+        addSubUtils = findViewById(R.id.add_sub);
         addSubUtils.setBuyMax(999)       // 最大购买数,默认为int的最大值
                 .setInventory(999)       // 库存,默认为int的最大值
                 .setCurrentNumber(1)    // 设置当前数,默认为1
@@ -446,19 +462,30 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
 
 
     private final int FOOD_ROOMS = 1;
-
+    
     private final int TIME_SELECT = 11//时间选择(包含时间段、时间点)
             , NUMBER_SELECT = 12//人数选择(1~10以上)
             , SERVICE_SELECT = 13//服务项目
             , MAN_SELECT = 14//医生选择
+            ,DISHS_SELECT=15//菜品选择
             ;
 
     @Override
     public void onClick(View v) {
         int id = v.getId();
-        if (id == R.id.tv_title) {
-            //简介
-//            ToastMessage("简介");
+        if(id==R.id. food_dishs_rl){
+            try {
+                startActivityForResult(
+                        new Intent(BServiceAddActivity.this,DishSelectActivity.class)
+                        .putExtra("tvTitle",model.getName())
+                        .putExtra("tvSub",model.getAddress())
+                        .putExtra("headImgUrl",model.getUrl())
+                        ,DISHS_SELECT);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+        }else if (id == R.id.tv_title) {
             try {
                 if (!StringUtil.isEmpty(dataService)) {
                     showDialog(JSON.parseObject(dataService).getString("sc_introduce"));
@@ -760,6 +787,14 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
 //                    }
 //                }
                 break;
+            case DISHS_SELECT:
+                List<ShoppingEntity>  shoppingEntities=  ShoppingCart.getInstance().getShoppingList();
+                LogUtil.d(TAG,"data:"+JSON.toJSONString(shoppingEntities));
+                itemFoodsDishlistAdapter=new ItemFoodsDishlistAdapter(mContext,shoppingEntities);
+                mDishList.setAdapter(itemFoodsDishlistAdapter);
+                
+                CommonUtil.textSpanForStyle(tv_food_dishs,"合计: "+ShoppingCart.getInstance().getTotalQuantity()+"份 ¥"+ShoppingCart.getInstance().getTotalPrice(),ShoppingCart.getInstance().getTotalQuantity()+"份 ¥"+ShoppingCart.getInstance().getTotalPrice(),ct.getResources().getColor(R.color.blue_seats_num));
+                break;
         }
         if (tvMessage != null && tv != null) {
             if (tv == tv_hospital_rooms) {
@@ -911,6 +946,23 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
 //				return;`
 //			}
         }
+
+
+     List<ShoppingEntity> shoppingEntities=  ShoppingCart.getInstance().getShoppingList();
+        List<Map<String,Object>>  shopMap=new ArrayList<>();
+        if(!ListUtils.isEmpty(shoppingEntities)){
+            for (int i = 0; i <shoppingEntities.size(); i++) {
+                //sd_name 菜名,sd_price价格,sd_number数量,sd_url
+                ShoppingEntity entity=shoppingEntities.get(i);
+                Map<String,Object> mapNode=new HashMap<String,Object>();
+                mapNode.put("sd_name",entity.getName());
+                mapNode.put("sd_price",entity.getUnitPrice());
+                mapNode.put("sd_number",entity.getQuantity());
+                mapNode.put("sd_url","");
+                shopMap.add(mapNode);
+            }
+        }
+            LogUtil.d(TAG,"save shop map:"+JSON.toJSONString(shopMap));
         final String startTime = map.get("sb_endtime").toString();
         new HttpClient
                 .Builder(Constants.IM_BASE_URL())
@@ -920,6 +972,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                 .send(new HttpClient.Builder()
                         .url("/user/appSaveService")
                         .add("map", JSONUtil.map2JSON(map))
+                        .add("mapdetail",JSON.toJSONString(shopMap))
                         .add("token", MyApplication.getInstance().mAccessToken)
                         .method(Method.POST)
                         .build(), new ResultSubscriber<>(new ResultListener<Object>() {
@@ -944,6 +997,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                             }
                         } catch (Exception e) {
                             e.printStackTrace();
+                            submiting = true;
                         }
 
                     }
@@ -1178,6 +1232,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
             data = JSON.parseObject(dataService);
         }
         if (!isEdited) {
+            food_dishs_rl.setEnabled(false);
             et_book_phone.setText(data.getString("sb_telephone"));
             et_book_name.setText(data.getString("sb_recordor"));
             if ("0".equals(data.getString("sb_sex"))){
@@ -1641,8 +1696,6 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
     //查询桌子余量
     public void searchSeatNumbers(String yearmonth,String companyid){
         //companyid,userid,yearmonth,token
-        
-    
         yearmonth=DateFormatUtil.getStrDate4Date(DateFormatUtil.getDate4StrDate(yearmonth,"yyyy-MM-dd HH:ss"),"yyyyMMdd");
         String peopleNumber=tv_food_peoples.getText().toString();
         String aType="小桌";
@@ -1656,14 +1709,15 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
             //小
             aType="小桌";
         }
-        final String  asType=aType;
-        LogUtil.i("座位:"+asType+"yearmonth:"+yearmonth+"  companyid:"+companyid+" peopleNumber:"+peopleNumber);
+          final String  asType=aType;
+          LogUtil.i(TAG,"座位:"+asType+"yearmonth:"+yearmonth+"  companyid:"+companyid+" peopleNumber:"+peopleNumber+" id:"+model.getId());
           HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL()).build();
                  httpClient.Api().send(new HttpClient.Builder()
                  .url("/user/appLineList")
                  .add("companyid",companyid)
                  .add("userid",MyApplication.getInstance().mLoginUser.getUserId())
                  .add("yearmonth",yearmonth)
+                 .add("id",model.getId())
                  .add("token",MyApplication.getInstance().mAccessToken)
                  .method(Method.POST)
                  .build(),new ResultSubscriber<Object>(new ResultListener<Object>() {
@@ -1677,6 +1731,8 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                              boolean isEnter=false;
                              JSONArray deskbook=JSON.parseObject(o.toString()).getJSONArray("deskbook");
                              JSONArray desklist=JSON.parseObject(o.toString()).getJSONArray("desklist");
+                             JSONArray detaillist=JSON.parseObject(o.toString()).getJSONArray("detaillist");
+                             
                              if (!ListUtils.isEmpty(deskbook)){
                                  CommonUtil.textSpanForStyle(tvMSeatsNum,"前方"+"0"+"桌","0",ct.getResources().getColor(R.color.blue_seats_num));
                                  CommonUtil.textSpanForStyle(tvZSeatsNum,"前方"+"0"+"桌","0",ct.getResources().getColor(R.color.blue_seats_num));
@@ -1770,6 +1826,30 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                              }
                              
                              
+                             if (!ListUtils.isEmpty(detaillist)){
+                                 List<ShoppingEntity>  shoppingEntities= new ArrayList<>();
+                                 int totalNum=0;
+                                 int totalPrice=0;
+                                 for (int i = 0; i <detaillist.size() ; i++) {
+                                     JSONObject object=detaillist.getJSONObject(i);
+                                     ShoppingEntity model=new ShoppingEntity();
+                                     model.setName(object.getString("sd_name"));
+                                     model.setQuantity(Integer.valueOf(object.getString("sd_number")));
+                                     totalNum=totalNum+Integer.valueOf(object.getString("sd_number"));
+                                     model.setUnitPrice(Integer.valueOf(object.getString("sd_price")));
+                                     Integer totalModePrice=    Integer.valueOf(object.getString("sd_price"))*Integer.valueOf(object.getString("sd_number"));
+                                     totalPrice=totalPrice+totalModePrice;
+                                     shoppingEntities.add(model);
+                                 }
+
+                                 itemFoodsDishlistAdapter=new ItemFoodsDishlistAdapter(mContext,shoppingEntities);
+                                 mDishList.setAdapter(itemFoodsDishlistAdapter);
+
+                                 CommonUtil.textSpanForStyle(tv_food_dishs,"合计: "+totalNum+"份 ¥"+totalPrice,totalNum+"份 ¥"+totalPrice,ct.getResources().getColor(R.color.blue_seats_num));
+                             }else{
+                                 
+                             }
+                             
                          } catch (Exception e) {
                              e.printStackTrace();
                          }

+ 1 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceDetailActivity.java

@@ -60,6 +60,7 @@ public class BServiceDetailActivity extends OABaseActivity implements View.OnCli
 		progressDialog.show();
 		mCompanyId = model.getCompanyid();
 		mServiceId = "0";
+		LogUtil.prinlnLongMsg("appStoreman","companyid = "+ mCompanyId + ",serviceid = " +mServiceId + ",Token = " + MyApplication.getInstance().mAccessToken);
 		mHttpClient.Api().send(new HttpClient.Builder()
 				.url("/user/appStoreman")
 				.add("companyid", mCompanyId)

+ 5 - 3
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceSearchActivity.java

@@ -110,7 +110,6 @@ public class BServiceSearchActivity extends OABaseActivity implements View.OnCli
 
             @Override
             public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
-                // TODO: 2017/9/30 加载更多
                 mPageIndex++;
                 loadListData(mPageIndex);
             }
@@ -142,7 +141,7 @@ public class BServiceSearchActivity extends OABaseActivity implements View.OnCli
 
         mBServiceList = new ArrayList<>();
         mBserviceListAdapter = new ItemBserviceListAdapter(this, mBServiceList);
-        mSearchListView = (PullToRefreshListView) findViewById(R.id.book_service_search_ptlv);
+        mSearchListView =  findViewById(R.id.book_service_search_ptlv);
         mSearchListView.setMode(PullToRefreshBase.Mode.PULL_FROM_END);
         mSearchListView.setAdapter(mBserviceListAdapter);
 
@@ -203,13 +202,16 @@ public class BServiceSearchActivity extends OABaseActivity implements View.OnCli
                             if (mPageIndex > 1)
                                 mPageIndex--;
                         }
+                        LogUtil.d("mBServiceList","mBServiceList.size:"+mBServiceList.size());
+                        mBserviceListAdapter.setObjects(mBServiceList);
                         mBserviceListAdapter.notifyDataSetChanged();
                         if (mBServiceList.size() == 0) {
                             mEmptyLayout.showEmpty();
                         }
                     }
                 } catch (Exception e) {
-
+                    LogUtil.d("o.toString 发生异常" + e.toString());
+                    e.printStackTrace();
                 }
             }
         }));

+ 52 - 17
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServicesActivity.java

@@ -115,8 +115,8 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
         bar.setBackgroundDrawable(drawBg);
         bar.setCustomView(view);
 
-        mListView = (PullToRefreshListView) findViewById(R.id.mListView);
 
+        mListView = (PullToRefreshListView) findViewById(R.id.mListView);
         initHeader();
         mListAdapter = new ItemBserviceListAdapter(mContext, modelList);
         mListView.setAdapter(mListAdapter);
@@ -129,29 +129,31 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
         MyGridView mGridView = findViewById(R.id.mGridView);
         mBanner = findViewById(R.id.city_industry_service_main_banner);
         mBanner.setImageLoader(new BannerImageLoader());
+        
         List<String> imgList=new ArrayList<>();
-        imgList.add("http://demo.sc.chinaz.com/Files/DownLoad/webjs1/201707/jiaoben5258/images/3-1.jpg");
-        imgList.add("http://demo.sc.chinaz.com/Files/DownLoad/webjs1/201707/jiaoben5258/images/2-1.jpg");
-        imgList.add("http://demo.sc.chinaz.com/Files/DownLoad/webjs1/201707/jiaoben5258/images/1-1.jpg");
-        imgList.add("http://demo.sc.chinaz.com/Files/DownLoad/webjs1/201707/jiaoben5258/images/2-1.jpg");
+        imgList.add("http://113.105.74.140:8081/u/123/100123/201801/o/f5624e77ca374a319a28d06c92752fbb.png");
+        imgList.add("http://113.105.74.140:8081/u/123/100123/201801/o/f5624e77ca374a319a28d06c92752fbb.png");
+        imgList.add("http://113.105.74.140:8081/u/123/100123/201801/o/f5624e77ca374a319a28d06c92752fbb.png");
         mBanner.update(imgList);
         mBanner.start();
+        
+        
         List<SBMenuModel> menuModels = new ArrayList<>();
         SBMenuModel menuModel = new SBMenuModel();
         menuModel.setUrl("");
         menuModel.setCode("10003");
         menuModel.setIcon(R.drawable.icon_food);
-        menuModel.setDesc("美味齐全");
+        menuModel.setDesc(getString(R.string.fulldelicious));
         menuModel.setDescColor(Color.parseColor("#FDC34F"));
-        menuModel.setTitle("餐饮");
+        menuModel.setTitle(getString(R.string.service_foods));
         menuModels.add(menuModel);
 
         menuModel = new SBMenuModel();
         menuModel.setUrl("");
         menuModel.setCode("10004");
         menuModel.setIcon(R.drawable.icon_hair);
-        menuModel.setDesc("时尚潮流");
-        menuModel.setTitle("美容美发");
+        menuModel.setDesc(getString(R.string.fashion));
+        menuModel.setTitle(getString(R.string.beautysalons));
         menuModel.setDescColor(Color.parseColor("#FE7F19"));
         menuModels.add(menuModel);
 
@@ -159,7 +161,7 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
         menuModel.setUrl("");
         menuModel.setCode("10006");
         menuModel.setIcon(R.drawable.icon_ktv);
-        menuModel.setDesc("音乐节");
+        menuModel.setDesc(getString(R.string.musicfestival));
         menuModel.setTitle("KTV");
         menuModel.setDescColor(Color.parseColor("#2ED3AE"));
         menuModels.add(menuModel);
@@ -168,8 +170,8 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
         menuModel.setUrl("");
         menuModel.setCode("10002");
         menuModel.setIcon(R.drawable.icon_sport);
-        menuModel.setDesc("hi起来");
-        menuModel.setTitle("运动健身");
+        menuModel.setDesc(getString(R.string.takeaction));
+        menuModel.setTitle(getString(R.string.exercise));
         menuModel.setDescColor(Color.parseColor("#F96173"));
         menuModels.add(menuModel);
 
@@ -177,8 +179,8 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
         menuModel.setUrl("");
         menuModel.setCode("10005");
         menuModel.setIcon(R.drawable.icon_club);
-        menuModel.setDesc("预约有优惠");
-        menuModel.setTitle("会所");
+        menuModel.setDesc(getString(R.string.discountforreservation));
+        menuModel.setTitle(getString(R.string.Club));
         menuModel.setDescColor(Color.parseColor("#65EA6E"));
         menuModels.add(menuModel);
 
@@ -186,8 +188,8 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
         menuModel.setUrl("");
         menuModel.setCode("10001");
         menuModel.setIcon(R.drawable.icon_hospital);
-        menuModel.setDesc("您的健康助手");
-        menuModel.setTitle("医院挂号");
+        menuModel.setDesc(getString(R.string.healthassistant));
+        menuModel.setTitle(getString(R.string.Hospitalregistration));
         menuModel.setDescColor(Color.parseColor("#D357DE"));
         menuModels.add(menuModel);
 
@@ -330,8 +332,37 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
 
     private void intData() {
         loadListData(pageSize);
+        initBannerData();
     }
 
+    
+    private void initBannerData(){
+          HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL()).build();
+                 httpClient.Api().send(new HttpClient.Builder()
+                 .url("user/appAd")
+                 .add("token",MyApplication.getInstance().mAccessToken)
+                 .method(Method.POST)
+                 .build(),new ResultSubscriber<Object>(new ResultListener<Object>() {
+          
+                     @Override
+                     public void onResponse(Object o) {
+                         try {
+                             LogUtil.d(TAG,toString());
+                             String result=  JSON.parseObject(o.toString()).getString("result");
+                             String url=  JSON.parseArray(result).getJSONObject(0).getString("aa_urlc");
+                             List<String> imgList=new ArrayList<>();
+                             imgList.add(url);
+                             imgList.add(url);
+                             imgList.add(url);
+                             mBanner.update(imgList);
+                             mBanner.start();
+                         } catch (Exception e) {
+                             e.printStackTrace();
+                         }
+                     }
+                 }));
+        
+    }
 
 //    @Override
 //    protected void onResume() {
@@ -494,7 +525,11 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
             onBackPressed();
         } else if (id == R.id.book_service_et) {
             Intent intent = new Intent();
-            intent.setClass(this, BServiceSearchActivity.class);
+//            intent.setClass(this, BServiceSearchActivity.class);
+            intent.setClass(this, BServiceListActivity.class);
+            SBMenuModel menuModel=new SBMenuModel();
+            menuModel.setCode("0");
+            intent.putExtra("SBMenuModel", menuModel);
             startActivity(intent);
         } else if (id == R.id.tv_distance) {
             //搜索距离-showPopupWindow

+ 520 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/DishMainActivity.java

@@ -0,0 +1,520 @@
+package com.modular.booking.activity.services;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Parcelable;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.AbsListView;
+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.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.common.LogUtil;
+import com.common.data.ListUtils;
+import com.common.system.DisplayUtil;
+import com.core.base.OABaseActivity;
+import com.core.utils.CommonUtil;
+import com.core.utils.helper.AvatarHelper;
+import com.core.widget.DrawableCenterTextView;
+import com.flipboard.bottomsheet.BottomSheetLayout;
+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.activity.utils.ShoppingCart;
+import com.modular.booking.activity.utils.ShoppingCartPanel;
+import com.modular.booking.adapter.ItemDishCategoryListAdapter;
+import com.modular.booking.adapter.ItemDishPinHeaderAdapter;
+import com.modular.booking.adapter.LayoutShoppingCartItemAdapter;
+import com.modular.booking.model.Product;
+import com.modular.booking.model.ProductCategory;
+import com.modular.booking.model.ShoppingEntity;
+import com.modular.booking.utils.EventMessage;
+import com.modular.booking.utils.RxBus;
+import com.modular.booking.widget.PinnedHeaderListView;
+import com.modular.booking.widget.ShoppingCountView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.hdodenhof.circleimageview.CircleImageView;
+import rx.Subscription;
+import rx.android.schedulers.AndroidSchedulers;
+
+/**
+  * @desc:选择菜品
+  * @author:Arison on 2018/1/24
+  */
+public class DishMainActivity extends OABaseActivity {
+    
+    public static final String TAG = "DishSelectActivity";
+    private CircleImageView iv_header;
+    private TextView tv_title;
+    private TextView tv_sub;
+    private TextView num_tv;
+    private BottomSheetLayout  mBottmSheetLayout;
+    private LinearLayout ll_bottom;
+    private ListView lv_product_category;
+    private PinnedHeaderListView lv_product;
+
+    private ShoppingCartPanel mShoppingCartPanel;
+
+    private Button bt_bottom;
+    private ImageView max_img;
+    private ImageView mBackImageView;
+    private DrawableCenterTextView mSearchTv;
+    private RelativeLayout mRelativeTop;
+    private Drawable drawBg;
+
+    private ImageView ivShopCar;
+    private TextView tvShopSure;
+    private TextView tvTotalPrice;
+    
+    private List<ProductCategory> productCategories=new ArrayList<>();
+    List<ProductCategory> productAllCategorys=new ArrayList<>();
+    private ItemDishCategoryListAdapter itemDishCategoryListAdapter;
+    //private ItemDishPinnedListAdapter itemDishPinnedListAdapter;
+    
+    private ItemDishPinHeaderAdapter itemDishPinHeaderAdapter;
+    
+    
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_dish_main);
+        initView();
+        initEvent();
+        initData();
+    }
+    
+    private void initView(){
+        mShoppingCartPanel = new ShoppingCartPanel(this);
+        lv_product_category= findViewById(R.id.lv_product_category);
+        mBottmSheetLayout=findViewById(R.id.bottom_sheet_layout);
+        lv_product=findViewById(R.id.lv_dish_product);
+        ll_bottom=findViewById(R.id.ll_bottom);
+        bt_bottom=findViewById(R.id.bt_bottom);
+        iv_header =findViewById(R.id.iv_header);
+        max_img = findViewById(R.id.max_img);
+        tv_title =findViewById(R.id.tv_title);
+        tv_sub =findViewById(R.id.tv_sub);
+        ivShopCar=findViewById(R.id.ivShopCar);
+        tvShopSure=findViewById(R.id.tvShopSure);
+        tvTotalPrice=findViewById(R.id.tvTotalPrice);
+        num_tv=findViewById(R.id.num_tv);
+        
+        itemDishCategoryListAdapter=new ItemDishCategoryListAdapter(DishMainActivity.this,productCategories);
+        lv_product_category.setAdapter( itemDishCategoryListAdapter);
+        lv_product_category.setSelection(0);
+        
+        
+//        itemDishPinnedListAdapter=new ItemDishPinnedListAdapter(mContext,productAllCategorys);
+//        itemDishPinnedListAdapter.setAnimTargetView(ivShopCar);
+
+        itemDishPinHeaderAdapter=new ItemDishPinHeaderAdapter(this);
+        itemDishPinHeaderAdapter.setAnimTargetView(num_tv);
+        lv_product.setAdapter(itemDishPinHeaderAdapter);
+
+        Intent data=getIntent();
+        if (data!=null) {
+            String sb_imageurl=data.getStringExtra("headImgUrl");
+            String tvsub=data.getStringExtra("tvSub");
+            String tvtitle=data.getStringExtra("tvTitle");
+            getSupportActionBar().setTitle(tvtitle);
+            tv_title.setText(tvtitle);
+            tv_sub.setText(tvsub);
+            AvatarHelper.getInstance().display(sb_imageurl, iv_header, true);
+            AvatarHelper.getInstance().display(sb_imageurl, max_img, true);
+        }
+
+    }
+    
+    private boolean isClickTrigger=true;
+    
+    private void initEvent(){
+        mBottmSheetLayout.addOnSheetStateChangeListener(new BottomSheetLayout.OnSheetStateChangeListener() {
+            @Override
+            public void onSheetStateChanged(BottomSheetLayout.State state) {
+                LogUtil.d(TAG,"BottomSheetLayout.State:"+state);
+            }
+        });
+        tvShopSure.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                //先确保购物车不为空
+                if (!ListUtils.isEmpty(ShoppingCart.getInstance().getShoppingList())) {
+                    setResult(0x01,new Intent().putParcelableArrayListExtra("data", (ArrayList<? extends Parcelable>) ShoppingCart.getInstance().getShoppingList()));
+                    finish();
+                }else{
+                    ToastMessage("您的购物车是空的哦");
+                }
+            }
+        });
+        
+        ll_bottom.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                showShoppingCartPanel();
+                //showShopWindow(view);
+            }
+        });
+
+        lv_product_category.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                itemDishCategoryListAdapter.setSelectIndex(position);
+                itemDishCategoryListAdapter.notifyDataSetChanged();
+                int productPos = 0;
+                for (int index = 0; index < position; index++) {
+                    productPos += itemDishPinHeaderAdapter.getCountForSection(index) + 1;
+                }
+                isClickTrigger = true;
+                lv_product.setSelection(productPos);
+            }
+        });
+
+   
+        lv_product.setOnScrollListener(new AbsListView.OnScrollListener() {
+            @Override
+            public void onScrollStateChanged(AbsListView absListView, int i) {
+
+            }
+
+            @Override
+            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+                if (isClickTrigger) {
+                    isClickTrigger = false;
+                } else {
+                    int section = itemDishPinHeaderAdapter.getSectionForPosition(firstVisibleItem);
+                    itemDishCategoryListAdapter.setSelectIndex(section);
+                    isClickTrigger = true;//非常关键的一点
+                    itemDishCategoryListAdapter.notifyDataSetChanged();//会触发onScroll事件,导致循环执行
+                    LogUtil.d(TAG,"LastVisiblePosition:"+lv_product_category.getLastVisiblePosition()+" section:"+section
+                    +"FirstVisiblePosition:"+lv_product_category.getFirstVisiblePosition());
+                    if (section>=lv_product_category.getLastVisiblePosition()){
+                        lv_product_category.smoothScrollToPosition(lv_product_category.getLastVisiblePosition()+2);
+                    }
+                    if (section<=lv_product_category.getFirstVisiblePosition()){
+                        lv_product_category.smoothScrollToPosition(lv_product_category.getFirstVisiblePosition()-2);
+                    }
+                    if (firstVisibleItem == 0) {
+                        View firstVisibleItemView = lv_product.getChildAt(0);
+                        if (firstVisibleItemView != null && firstVisibleItemView.getTop() == 0) {
+                            LogUtil.d(TAG,"scroll top"+0);
+                            lv_product_category.smoothScrollToPosition(0);
+                        }
+                    }
+                    if ((firstVisibleItem + visibleItemCount) == totalItemCount) {
+                        View lastVisibleItemView = lv_product.getChildAt(lv_product.getChildCount() - 1);
+                        if (lastVisibleItemView != null && lastVisibleItemView.getBottom() == lv_product.getHeight()) {
+                            LogUtil.d(TAG,"scroll bottom"+itemDishCategoryListAdapter.getCount());
+                            lv_product_category.smoothScrollToPosition(itemDishCategoryListAdapter.getCount()-1);
+                        }
+                    }
+                   
+                }
+
+            }
+        });
+        
+        lv_product.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
+                if (view.getTag() instanceof  ItemDishPinHeaderAdapter.ItemViewHolder){
+                    ItemDishPinHeaderAdapter.ItemViewHolder itemViewHolder= ( ItemDishPinHeaderAdapter.ItemViewHolder) view.getTag();
+                    final Product product=itemViewHolder.product;
+                    LogUtil.d(TAG,"product name:"+product.getName());
+                    itemViewHolder.img_product_photo.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            showPopupWindow(view,product);
+                        }
+                    });
+                    itemViewHolder.txt_product_name.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            showPopupWindow(view,product);
+                        }
+                    });
+                    itemViewHolder.txt_product_month_sales.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            showPopupWindow(view,product);
+                        }
+                    });
+                    
+                    itemViewHolder.txt_product_price.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            showPopupWindow(view,product);
+                        }
+                    });
+                }
+                
+            }
+        });
+        
+        mSubscription= RxBus.getInstance().toObservable()
+                .filter(o -> o instanceof EventMessage)
+                .map(o -> (EventMessage) o)
+                 .observeOn(AndroidSchedulers.mainThread())
+                .doOnNext(o -> onShoppingCartChange(o.getObject()))
+                .subscribe();
+    }
+ 
+    private void initData(){
+          HttpClient httpClient=new HttpClient.Builder("http://192.168.253.200:8080/Chapter/").build();
+                 httpClient.Api().send(new HttpClient.Builder()
+                 .url("data/dish")
+                 .method(Method.GET)
+                 .build(),new ResultSubscriber<Object>(new ResultListener<Object>() {
+          
+                     @Override
+                     public void onResponse(Object o) {
+                       //  LogUtil.d(TAG,o.toString());
+//                         try {
+                             String data=   JSON.parseObject(o.toString()).getString("Data");
+                             JSONArray dishCategories= JSON.parseObject(data).getJSONArray("DishCategories");
+                             JSONArray dishs=JSON.parseObject(data).getJSONArray("Dishs");
+                             List<ProductCategory> productCategorys= JSON.parseArray(dishCategories.toJSONString(), ProductCategory.class);
+                             productCategories.addAll(productCategorys);
+                             itemDishCategoryListAdapter.notifyDataSetChanged();
+                             List<Product> products= JSON.parseArray(dishs.toJSONString(), Product.class);
+                             for (int i = 0; i < productCategorys.size(); i++) {
+                                // LogUtil.d(TAG,"菜类:"+productCategorys.get(i).getName());
+                                 String code=productCategorys.get(i).getCode();  //关联菜单
+                                 String name=productCategorys.get(i).getName();
+                                 productCategorys.get(i).setDishCategoryId(i);
+                                 productAllCategorys.add(productCategorys.get(i));
+                                 //productCategories.add(productCategorys.get(i));
+                                 for (int j = 0; j < products.size(); j++) {
+                                     String dishCategoryCode=products.get(j).getDishCategoryCode();
+                                     if (code.equals(dishCategoryCode)){
+//                                         ProductCategory productCategory=new ProductCategory();
+//                                         productCategory.setType(ProductCategory.ITEM);
+//                                             products.get(j).setDishCategoryName(name);
+//                                             products.get(j).setDishCategoryId(i);
+//                                         productCategory.setProduct(products.get(j));
+//                                         productCategory.setName(products.get(j).getName());
+//                                         productAllCategorys.add(productCategory);
+                                        // productCategories.add(productCategory);
+                                         productCategorys.get(i).getProducts().add(products.get(j));
+                                         productCategorys.get(i).setType(ProductCategory.ITEM);
+                                     }
+                                 }
+                             }
+                         
+                             itemDishPinHeaderAdapter.setItems(productAllCategorys);
+                           // itemDishPinnedListAdapter.notifyDataSetChanged();
+                            LogUtil.prinlnLongMsg(TAG,JSON.toJSONString(productAllCategorys));
+                          
+//                         } catch (Exception e) {
+//                             LogUtil.d(TAG,"发生了异常 e:"+e.toString());
+//                             e.printStackTrace();
+//                         }
+                     }
+                 }));
+
+        refreshBottomUi();
+    }
+
+
+    /**
+     * 显示购物车面板
+     */
+    private void showShoppingCartPanel() {
+        int count = ShoppingCart.getInstance().getTotalQuantity();
+        if (count > 0 && !mBottmSheetLayout.isSheetShowing()) {
+            mShoppingCartPanel.refreshPanel();
+            mBottmSheetLayout.showWithSheetView(mShoppingCartPanel);
+        } else {
+            mBottmSheetLayout.dismissSheet();
+        }
+    }
+    
+    Subscription mSubscription;
+
+    public void onShoppingCartChange(Object o) {
+        refreshBottomUi();
+        LogUtil.d(TAG,"o:"+o.toString());
+        mShoppingCartPanel.refreshPanel();
+        itemDishCategoryListAdapter.notifyDataSetChanged();
+    //   itemDishPinnedListAdapter.notifyDataSetChanged();
+    }
+
+    private void refreshBottomUi() {
+        ShoppingCart shoppingCart = ShoppingCart.getInstance();
+        int totalCount = shoppingCart.getTotalQuantity();
+        double totalPrice = shoppingCart.getTotalPrice();
+        if (totalCount>0) {
+            tvTotalPrice.setText("共¥" + totalPrice);
+            num_tv.setVisibility(View.VISIBLE);
+            num_tv.setText(String.valueOf(totalCount));
+            ivShopCar.setBackgroundResource(R.drawable.icon_shop_car);
+            ivShopCar.setImageDrawable(getResources().getDrawable(R.drawable.icon_shop_car));
+        }else{
+            num_tv.setVisibility(View.INVISIBLE);
+            tvTotalPrice.setText(getString(R.string.tv_shop_empty) );
+            ivShopCar.setBackgroundResource(R.drawable.icon_shop_empty);
+            ivShopCar.setImageDrawable(getResources().getDrawable(R.drawable.icon_shop_empty));
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        // 注册 ---被观察者
+        if (mSubscription != null && !mSubscription.isUnsubscribed()) {
+            mSubscription.unsubscribe();
+        }
+    }
+
+
+
+    private PopupWindow popupWindow = null;
+    ImageView ivIconProduct = null;
+    TextView tvDishDesc = null;
+    TextView tvDishName = null;
+    TextView txtProductMonthSales = null;
+    TextView txtProductPrice = null;
+    TextView ptvShopSure = null;
+    ShoppingCountView shopping_count_view=null;
+    public void showPopupWindow(View parent,Product product) {
+        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.dialog_dish_product, null);
+            ivIconProduct = (ImageView) view.findViewById( R.id.iv_icon_product );
+            tvDishDesc = (TextView)view.findViewById( R.id.tv_dish_desc );
+            tvDishName = (TextView)view.findViewById( R.id.tv_dish_name );
+            txtProductMonthSales = (TextView)view.findViewById( R.id.txt_product_month_sales );
+            txtProductPrice = (TextView)view.findViewById( R.id.txt_product_price );
+            ptvShopSure = (TextView)view.findViewById( R.id.tvShopSure );
+            shopping_count_view=view.findViewById(R.id.shopping_count_view);
+            popupWindow = new PopupWindow(view,  
+                    windowManager.getDefaultDisplay().getWidth() - CommonUtil.dip2px(mContext,70),
+                    LinearLayout.LayoutParams.MATCH_PARENT);
+        }
+        int num= ShoppingCart.getInstance().getQuantityForProduct(product);
+        if (num>0){
+            ptvShopSure.setVisibility(View.GONE);
+            shopping_count_view.setShoppingCount(num);
+            shopping_count_view.setVisibility(View.VISIBLE);
+        }else{
+            ptvShopSure.setVisibility(View.VISIBLE);
+            shopping_count_view.setVisibility(View.GONE);
+        }
+        AvatarHelper.getInstance().display("http://p0.meituan.net/deal/__16971854__3919079.jpg@380w_214h_1e_1c",ivIconProduct,false);
+        tvDishName.setText(product.getName());
+        txtProductMonthSales.setText("月售0");
+        txtProductPrice.setText("¥"+product.getUnitItems().get(0).getPrice());
+
+        ptvShopSure.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                ptvShopSure.setVisibility(View.GONE);
+                ptvShopSure.setEnabled(false);
+                if (!ShoppingCart.getInstance().add(product)) {
+                }
+                shopping_count_view.setShoppingCount(1);
+                shopping_count_view.setVisibility(View.VISIBLE);
+            }
+        });
+        shopping_count_view.setOnShoppingClickListener(new ShoppingCountView.ShoppingClickListener() {
+            @Override
+            public void onAddClick(int num) {
+                    if (!ShoppingCart.getInstance().add(product)) {
+                    }
+            }
+
+            @Override
+            public void onMinusClick(int num) {
+                if (!ShoppingCart.getInstance().delete(product)) {
+                }
+                if (num==0){
+                   new Handler().postDelayed(new Runnable() {
+                       @Override
+                       public void run() {
+                           ptvShopSure.setVisibility(View.VISIBLE);
+                           ptvShopSure.setEnabled(true);
+                           shopping_count_view.setVisibility(View.GONE);
+                       }
+                   },10);
+                }
+            }
+        });
+        tvDishDesc.setText(product.getName());
+        popupWindow.setFocusable(true);
+        popupWindow.setOutsideTouchable(true);
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                DisplayUtil.backgroundAlpha(activity, 1f);
+            }
+        });
+        DisplayUtil.backgroundAlpha(this, 0.5f);
+        popupWindow.setBackgroundDrawable(new BitmapDrawable());
+        popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+        // 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半
+       // popupWindow.showAsDropDown(parent, windowManager.getDefaultDisplay().getWidth(), 0);
+        popupWindow .showAtLocation(activity.getWindow().getDecorView(), Gravity.CENTER, 0, 0);
+        
+    }
+    
+    
+    private PopupWindow pListWindow = null;
+    TextView mClearTxt;
+    ListView lv_data;
+    LayoutShoppingCartItemAdapter layoutShoppingCartItemAdapter;
+    public void showShopWindow(View parent){
+        View view = null;
+        WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
+        if (pListWindow == null) {
+            LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            view = layoutInflater.inflate(R.layout.layout_shopping_cart_panel, null);
+            mClearTxt=view.findViewById(R.id.txt_clear);
+            lv_data=view.findViewById(R.id.lv_data);
+            layoutShoppingCartItemAdapter=new LayoutShoppingCartItemAdapter(mContext);
+            lv_data.setAdapter(layoutShoppingCartItemAdapter);
+            pListWindow= new PopupWindow(view,
+                    windowManager.getDefaultDisplay().getWidth(),
+                    windowManager.getDefaultDisplay().getHeight()/2);
+            
+        }
+        ShoppingCart shoppingCart = ShoppingCart.getInstance();
+        List<ShoppingEntity> entities = shoppingCart.getShoppingList();
+        LogUtil.d("ShopCar", "面板data:"+JSON.toJSONString(entities));
+        layoutShoppingCartItemAdapter.setItems(entities);
+        pListWindow.setFocusable(true);
+        pListWindow.setOutsideTouchable(true);
+        pListWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                DisplayUtil.backgroundAlpha(activity, 1f);
+            }
+        });
+        DisplayUtil.backgroundAlpha(this, 0.5f);
+        pListWindow.setBackgroundDrawable(new BitmapDrawable());
+        pListWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+        // 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半
+        pListWindow.showAsDropDown(parent, windowManager.getDefaultDisplay().getWidth(), 0);
+    }
+    
+}

+ 527 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/DishSelectActivity.java

@@ -0,0 +1,527 @@
+package com.modular.booking.activity.services;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Parcelable;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.AbsListView;
+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.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.common.LogUtil;
+import com.common.data.ListUtils;
+import com.common.system.DisplayUtil;
+import com.core.base.OABaseActivity;
+import com.core.utils.CommonUtil;
+import com.core.utils.helper.AvatarHelper;
+import com.core.widget.CustomerListView;
+import com.core.widget.DrawableCenterTextView;
+import com.core.widget.PinnedSectionListView;
+import com.flipboard.bottomsheet.BottomSheetLayout;
+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.activity.utils.ShoppingCart;
+import com.modular.booking.activity.utils.ShoppingCartPanel;
+import com.modular.booking.adapter.ItemDishCategoryListAdapter;
+import com.modular.booking.adapter.ItemDishPinnedListAdapter;
+import com.modular.booking.adapter.LayoutShoppingCartItemAdapter;
+import com.modular.booking.model.Product;
+import com.modular.booking.model.ProductCategory;
+import com.modular.booking.model.ShoppingEntity;
+import com.modular.booking.utils.EventMessage;
+import com.modular.booking.utils.RxBus;
+import com.modular.booking.widget.ShoppingCountView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.hdodenhof.circleimageview.CircleImageView;
+import rx.Subscription;
+import rx.android.schedulers.AndroidSchedulers;
+
+/**
+  * @desc:选择菜品
+  * @author:Arison on 2018/1/24
+  */
+public class DishSelectActivity extends OABaseActivity {
+    
+    public static final String TAG = "DishSelectActivity";
+    private CircleImageView iv_header;
+    private TextView tv_title;
+    private TextView tv_sub;
+    private TextView num_tv;
+    private BottomSheetLayout  mBottmSheetLayout;
+    private LinearLayout ll_bottom;
+    private CustomerListView lv_product_category;
+    private PinnedSectionListView lv_product;
+
+    private ShoppingCartPanel mShoppingCartPanel;
+
+    private Button bt_bottom;
+    private ImageView max_img;
+    private ImageView mBackImageView;
+    private DrawableCenterTextView mSearchTv;
+    private RelativeLayout mRelativeTop;
+    private Drawable drawBg;
+
+    private ImageView ivShopCar;
+    private TextView tvShopSure;
+    private TextView tvTotalPrice;
+    
+    private List<ProductCategory> productCategories=new ArrayList<>();
+    List<ProductCategory> productAllCategorys=new ArrayList<>();
+    private ItemDishCategoryListAdapter itemDishCategoryListAdapter;
+    private ItemDishPinnedListAdapter itemDishPinnedListAdapter;
+  
+    
+    
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_dish_select);
+        initView();
+        initEvent();
+        initData();
+    }
+    
+    private void initView(){
+//        View view = LayoutInflater.from(ct).inflate(R.layout.action_book_service, null);
+//        mBackImageView = (ImageView) view.findViewById(R.id.book_service_back);
+//        mSearchTv = (DrawableCenterTextView) view.findViewById(R.id.book_service_et);
+//        mRelativeTop = (RelativeLayout) view.findViewById(R.id.book_service_action);
+//        ActionBar bar = this.getSupportActionBar();
+//        bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
+//        drawBg = getResources().getDrawable(R.color.antionbarcolor);
+//        bar.setBackgroundDrawable(drawBg);
+//        bar.setCustomView(view);
+   
+        mShoppingCartPanel = new ShoppingCartPanel(this);
+        lv_product_category= findViewById(R.id.lv_product_category);
+        mBottmSheetLayout=findViewById(R.id.bottom_sheet_layout);
+        lv_product=findViewById(R.id.lv_dish_product);
+        ll_bottom=findViewById(R.id.ll_bottom);
+        bt_bottom=findViewById(R.id.bt_bottom);
+        iv_header =findViewById(R.id.iv_header);
+        max_img = findViewById(R.id.max_img);
+        tv_title =findViewById(R.id.tv_title);
+        tv_sub =findViewById(R.id.tv_sub);
+        ivShopCar=findViewById(R.id.ivShopCar);
+        tvShopSure=findViewById(R.id.tvShopSure);
+        tvTotalPrice=findViewById(R.id.tvTotalPrice);
+        num_tv=findViewById(R.id.num_tv);
+        
+        itemDishCategoryListAdapter=new ItemDishCategoryListAdapter(DishSelectActivity.this,productCategories);
+        lv_product_category.setAdapter( itemDishCategoryListAdapter);
+        lv_product_category.setSelection(0);
+        
+        
+        itemDishPinnedListAdapter=new ItemDishPinnedListAdapter(mContext,productAllCategorys);
+        itemDishPinnedListAdapter.setAnimTargetView(ivShopCar);
+        lv_product.setAdapter(itemDishPinnedListAdapter);
+
+        Intent data=getIntent();
+        if (data!=null) {
+             String sb_imageurl=   data.getStringExtra("headImgUrl");
+             String tvsub=    data.getStringExtra("tvSub");
+             String tvtitle=    data.getStringExtra("tvTitle");
+            getSupportActionBar().setTitle(tvtitle);
+            tv_title.setText(tvtitle);
+            tv_sub.setText(tvsub);
+            AvatarHelper.getInstance().display(sb_imageurl, iv_header, true);
+            AvatarHelper.getInstance().display(sb_imageurl, max_img, true);
+        }
+
+    }
+    private boolean isClickTrigger=true;
+    private void initEvent(){
+        mBottmSheetLayout.addOnSheetStateChangeListener(new BottomSheetLayout.OnSheetStateChangeListener() {
+            @Override
+            public void onSheetStateChanged(BottomSheetLayout.State state) {
+                LogUtil.d(TAG,"BottomSheetLayout.State:"+state);
+            }
+        });
+        tvShopSure.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                //先确保购物车不为空
+                if (!ListUtils.isEmpty(ShoppingCart.getInstance().getShoppingList())) {
+                    setResult(0x01,new Intent().putParcelableArrayListExtra("data", (ArrayList<? extends Parcelable>) ShoppingCart.getInstance().getShoppingList()));
+                    finish();
+                }else{
+                    ToastMessage("您的购物车是空的哦");
+                }
+            }
+        });
+        
+        ll_bottom.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                showShoppingCartPanel();
+                //showShopWindow(view);
+            }
+        });
+
+        lv_product_category.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
+                ProductCategory category=   itemDishCategoryListAdapter.getItem(i);
+                String name=category.getCode();
+                isClickTrigger = true;
+                for (int j = 0; j <productAllCategorys.size() ; j++) {
+                    if (name.equals(productAllCategorys.get(j).getCode())){
+                        lv_product.setSelection(j);
+                    }
+                }
+                itemDishCategoryListAdapter.setSelectIndex(i);
+                itemDishCategoryListAdapter.notifyDataSetChanged();
+            }
+        });
+
+   
+        lv_product.setOnScrollListener(new AbsListView.OnScrollListener() {
+            @Override
+            public void onScrollStateChanged(AbsListView absListView, int i) {
+
+            }
+
+            @Override
+            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+                if (isClickTrigger) {
+                    isClickTrigger = false;
+                } else {
+                    if (itemDishPinnedListAdapter.getProductCategories().size() > 0) {
+                        if (itemDishPinnedListAdapter.getItem(firstVisibleItem).getProduct()!=null){
+                            itemDishCategoryListAdapter.setSelectIndex(itemDishPinnedListAdapter.getItem(firstVisibleItem).getProduct().getDishCategoryId());
+                           // lv_product_category.setItemChecked(itemDishPinnedListAdapter.getItem(firstVisibleItem).getProduct().getDishCategoryId(),true);
+                            lv_product_category.setSelection(itemDishPinnedListAdapter.getItem(firstVisibleItem).getProduct().getDishCategoryId());
+                           //itemDishCategoryListAdapter.notifyDataSetChanged();
+                        }else{
+                            itemDishCategoryListAdapter.setSelectIndex(itemDishPinnedListAdapter.getItem(firstVisibleItem).getDishCategoryId());
+                           // lv_product_category.setItemChecked(itemDishPinnedListAdapter.getItem(firstVisibleItem).getDishCategoryId(),true);
+                           lv_product_category.setSelection(itemDishPinnedListAdapter.getItem(firstVisibleItem).getDishCategoryId());
+                          // itemDishCategoryListAdapter.notifyDataSetChanged();
+                        }
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                itemDishCategoryListAdapter.notifyDataSetChanged();
+                            }
+                        },100);
+                    }
+                }
+
+            }
+        });
+        
+        lv_product.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
+                if (view.getTag() instanceof  ItemDishPinnedListAdapter.ItemViewHolder){
+                    ItemDishPinnedListAdapter.ItemViewHolder itemViewHolder= (ItemDishPinnedListAdapter.ItemViewHolder) view.getTag();
+                    final Product product=itemViewHolder.product;
+                    LogUtil.d(TAG,"product name:"+product.getName());
+                    itemViewHolder.img_product_photo.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            showPopupWindow(view,product);
+                        }
+                    });
+                    itemViewHolder.txt_product_name.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            showPopupWindow(view,product);
+                        }
+                    });
+                    itemViewHolder.txt_product_month_sales.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            showPopupWindow(view,product);
+                        }
+                    });
+                    
+                    itemViewHolder.txt_product_price.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            showPopupWindow(view,product);
+                        }
+                    });
+                }
+                
+            }
+        });
+
+
+        mSubscription= RxBus.getInstance().toObservable()
+                .filter(o -> o instanceof EventMessage)
+                .map(o -> (EventMessage) o)
+                 .observeOn(AndroidSchedulers.mainThread())
+                .doOnNext(o -> onShoppingCartChange(o.getObject()))
+                .subscribe();
+    }
+ 
+    private void initData(){
+         
+          HttpClient httpClient=new HttpClient.Builder("http://192.168.253.200:8080/Chapter/").build();
+                 httpClient.Api().send(new HttpClient.Builder()
+                 .url("data/dish")
+                 .method(Method.GET)
+                 .build(),new ResultSubscriber<Object>(new ResultListener<Object>() {
+          
+                     @Override
+                     public void onResponse(Object o) {
+                       //  LogUtil.d(TAG,o.toString());
+//                         try {
+                             String data=   JSON.parseObject(o.toString()).getString("Data");
+                             JSONArray dishCategories= JSON.parseObject(data).getJSONArray("DishCategories");
+                             JSONArray dishs=JSON.parseObject(data).getJSONArray("Dishs");
+                         
+                             List<ProductCategory> productCategorys= JSON.parseArray(dishCategories.toJSONString(), ProductCategory.class);
+                             productCategories.addAll(productCategorys);
+                             itemDishCategoryListAdapter.notifyDataSetChanged();
+                            
+                             List<Product> products= JSON.parseArray(dishs.toJSONString(), Product.class);
+                      
+                             for (int i = 0; i < productCategorys.size(); i++) {
+                                // LogUtil.d(TAG,"菜类:"+productCategorys.get(i).getName());
+                                 String code=productCategorys.get(i).getCode();  //关联菜单
+                                 String name=productCategorys.get(i).getName();
+                                 productCategorys.get(i).setDishCategoryId(i);
+                                 productAllCategorys.add(productCategorys.get(i));
+                                 //productCategories.add(productCategorys.get(i));
+                                 for (int j = 0; j < products.size(); j++) {
+                                    // LogUtil.d(TAG,"菜名:"+products.get(j).getDishCategoryCode());
+                                     String dishCategoryCode=products.get(j).getDishCategoryCode();
+                                     if (code.equals(dishCategoryCode)){
+                                         //建立分类Item 
+                                         ProductCategory productCategory=new ProductCategory();
+                                         productCategory.setType(ProductCategory.ITEM);
+                                         products.get(j).setDishCategoryName(name);
+                                         products.get(j).setDishCategoryId(i);
+                                         productCategory.setProduct(products.get(j));
+                                         productCategory.setName(products.get(j).getName());
+                                         productAllCategorys.add(productCategory);
+                                        // productCategories.add(productCategory);
+//                                         productCategorys.get(i).getProducts().add(products.get(j));
+//                                         productCategorys.get(i).setType(ProductCategory.ITEM);
+                                     }
+                                 }
+                             }
+
+                        
+                             
+                            itemDishPinnedListAdapter.notifyDataSetChanged();
+                            LogUtil.prinlnLongMsg(TAG,JSON.toJSONString(productAllCategorys));
+                          
+//                         } catch (Exception e) {
+//                             LogUtil.d(TAG,"发生了异常 e:"+e.toString());
+//                             e.printStackTrace();
+//                         }
+                     }
+                 }));
+
+        refreshBottomUi();
+    }
+
+
+    /**
+     * 显示购物车面板
+     */
+    private void showShoppingCartPanel() {
+        int count = ShoppingCart.getInstance().getTotalQuantity();
+        if (count > 0 && !mBottmSheetLayout.isSheetShowing()) {
+            mShoppingCartPanel.refreshPanel();
+            mBottmSheetLayout.showWithSheetView(mShoppingCartPanel);
+        } else {
+            mBottmSheetLayout.dismissSheet();
+        }
+    }
+    
+    Subscription mSubscription;
+
+    public void onShoppingCartChange(Object o) {
+        refreshBottomUi();
+        LogUtil.d(TAG,"o:"+o.toString());
+        mShoppingCartPanel.refreshPanel();
+        itemDishCategoryListAdapter.notifyDataSetChanged();
+       itemDishPinnedListAdapter.notifyDataSetChanged();
+    }
+
+    private void refreshBottomUi() {
+        ShoppingCart shoppingCart = ShoppingCart.getInstance();
+        int totalCount = shoppingCart.getTotalQuantity();
+        double totalPrice = shoppingCart.getTotalPrice();
+        if (totalCount>0) {
+            tvTotalPrice.setText("共¥" + totalPrice);
+            num_tv.setVisibility(View.VISIBLE);
+            num_tv.setText(String.valueOf(totalCount));
+            ivShopCar.setBackgroundResource(R.drawable.icon_shop_car);
+            ivShopCar.setImageDrawable(getResources().getDrawable(R.drawable.icon_shop_car));
+        }else{
+            num_tv.setVisibility(View.GONE);
+            tvTotalPrice.setText(getString(R.string.tv_shop_empty) );
+            ivShopCar.setBackgroundResource(R.drawable.icon_shop_empty);
+            ivShopCar.setImageDrawable(getResources().getDrawable(R.drawable.icon_shop_empty));
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        // 注册 ---被观察者
+        if (mSubscription != null && !mSubscription.isUnsubscribed()) {
+            mSubscription.unsubscribe();
+        }
+    }
+
+
+
+    private PopupWindow popupWindow = null;
+    ImageView ivIconProduct = null;
+    TextView tvDishDesc = null;
+    TextView tvDishName = null;
+    TextView txtProductMonthSales = null;
+    TextView txtProductPrice = null;
+    TextView ptvShopSure = null;
+    ShoppingCountView shopping_count_view=null;
+    public void showPopupWindow(View parent,Product product) {
+        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.dialog_dish_product, null);
+            ivIconProduct = (ImageView) view.findViewById( R.id.iv_icon_product );
+            tvDishDesc = (TextView)view.findViewById( R.id.tv_dish_desc );
+            tvDishName = (TextView)view.findViewById( R.id.tv_dish_name );
+            txtProductMonthSales = (TextView)view.findViewById( R.id.txt_product_month_sales );
+            txtProductPrice = (TextView)view.findViewById( R.id.txt_product_price );
+            ptvShopSure = (TextView)view.findViewById( R.id.tvShopSure );
+            shopping_count_view=view.findViewById(R.id.shopping_count_view);
+            popupWindow = new PopupWindow(view,  
+                    windowManager.getDefaultDisplay().getWidth() - CommonUtil.dip2px(mContext,70),
+                    LinearLayout.LayoutParams.MATCH_PARENT);
+        }
+        int num= ShoppingCart.getInstance().getQuantityForProduct(product);
+        if (num>0){
+            ptvShopSure.setVisibility(View.GONE);
+            shopping_count_view.setShoppingCount(num);
+            shopping_count_view.setVisibility(View.VISIBLE);
+        }else{
+            ptvShopSure.setVisibility(View.VISIBLE);
+            shopping_count_view.setVisibility(View.GONE);
+        }
+        AvatarHelper.getInstance().display("http://p0.meituan.net/deal/__16971854__3919079.jpg@380w_214h_1e_1c",ivIconProduct,false);
+        tvDishName.setText(product.getName());
+        txtProductMonthSales.setText("月售0");
+        txtProductPrice.setText("¥"+product.getUnitItems().get(0).getPrice());
+
+        ptvShopSure.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                ptvShopSure.setVisibility(View.GONE);
+                ptvShopSure.setEnabled(false);
+                if (!ShoppingCart.getInstance().add(product)) {
+                }
+                shopping_count_view.setShoppingCount(1);
+                shopping_count_view.setVisibility(View.VISIBLE);
+            }
+        });
+        shopping_count_view.setOnShoppingClickListener(new ShoppingCountView.ShoppingClickListener() {
+            @Override
+            public void onAddClick(int num) {
+                    if (!ShoppingCart.getInstance().add(product)) {
+                    }
+            }
+
+            @Override
+            public void onMinusClick(int num) {
+                if (!ShoppingCart.getInstance().delete(product)) {
+                }
+                if (num==0){
+                   new Handler().postDelayed(new Runnable() {
+                       @Override
+                       public void run() {
+                           ptvShopSure.setVisibility(View.VISIBLE);
+                           ptvShopSure.setEnabled(true);
+                           shopping_count_view.setVisibility(View.GONE);
+                       }
+                   },10);
+                }
+            }
+        });
+        tvDishDesc.setText(product.getName());
+        popupWindow.setFocusable(true);
+        popupWindow.setOutsideTouchable(true);
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                DisplayUtil.backgroundAlpha(activity, 1f);
+            }
+        });
+        DisplayUtil.backgroundAlpha(this, 0.5f);
+        popupWindow.setBackgroundDrawable(new BitmapDrawable());
+        popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+        // 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半
+       // popupWindow.showAsDropDown(parent, windowManager.getDefaultDisplay().getWidth(), 0);
+        popupWindow .showAtLocation(activity.getWindow().getDecorView(), Gravity.CENTER, 0, 0);
+        
+    }
+    
+    
+    private PopupWindow pListWindow = null;
+    TextView mClearTxt;
+    ListView lv_data;
+    LayoutShoppingCartItemAdapter layoutShoppingCartItemAdapter;
+    public void showShopWindow(View parent){
+        View view = null;
+        WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
+        if (pListWindow == null) {
+            LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            view = layoutInflater.inflate(R.layout.layout_shopping_cart_panel, null);
+            mClearTxt=view.findViewById(R.id.txt_clear);
+            lv_data=view.findViewById(R.id.lv_data);
+            layoutShoppingCartItemAdapter=new LayoutShoppingCartItemAdapter(mContext);
+            lv_data.setAdapter(layoutShoppingCartItemAdapter);
+            pListWindow= new PopupWindow(view,
+                    windowManager.getDefaultDisplay().getWidth(),
+                    windowManager.getDefaultDisplay().getHeight()/2);
+            
+        }
+        ShoppingCart shoppingCart = ShoppingCart.getInstance();
+        List<ShoppingEntity> entities = shoppingCart.getShoppingList();
+        LogUtil.d("ShopCar", "面板data:"+JSON.toJSONString(entities));
+        layoutShoppingCartItemAdapter.setItems(entities);
+        pListWindow.setFocusable(true);
+        pListWindow.setOutsideTouchable(true);
+        pListWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                DisplayUtil.backgroundAlpha(activity, 1f);
+            }
+        });
+        DisplayUtil.backgroundAlpha(this, 0.5f);
+        pListWindow.setBackgroundDrawable(new BitmapDrawable());
+        pListWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
+        // 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半
+        pListWindow.showAsDropDown(parent, windowManager.getDefaultDisplay().getWidth(), 0);
+    }
+    
+}

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

@@ -33,8 +33,8 @@ public class BBSharesListActivity extends BaseActivity {
     }
     
     private void initView(){
-        getSupportActionBar().setTitle("预约共享");
-        mlist= (PullToRefreshListView) findViewById(R.id.shareList);
+        getSupportActionBar().setTitle(getString(R.string.booking_shared));
+        mlist=  findViewById(R.id.shareList);
         emptyLayout=new EmptyLayout(mContext,mlist.getRefreshableView());
         if (getIntent()!=null){
             mDatas=getIntent().getParcelableArrayListExtra("model");
@@ -42,7 +42,7 @@ public class BBSharesListActivity extends BaseActivity {
             mAdapter.setTime(true);
             mlist.setAdapter(mAdapter);
             if (mAdapter.getCount()==0){
-                emptyLayout.setEmptyMessage("您还没有预约,现在就去约吧!");
+                emptyLayout.setEmptyMessage(getString(R.string.book_empty));
                 emptyLayout.showEmpty();
             }
         }

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

@@ -54,7 +54,7 @@ public class MuiltSelectShareActivity extends OABaseActivity {
             mAdapter.setTime(true);
             mlist.setAdapter(mAdapter);
             if (mAdapter.getCount()==0){
-                emptyLayout.setEmptyMessage("您还没有预约,现在就去约吧!");
+                emptyLayout.setEmptyMessage(getString(R.string.book_empty));
                 emptyLayout.showEmpty();
             }
         }

+ 60 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/test/BottomSheetActivity.java

@@ -0,0 +1,60 @@
+package com.modular.booking.activity.test;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.widget.Button;
+
+import com.core.widget.CustomerListView;
+import com.flipboard.bottomsheet.BottomSheetLayout;
+import com.modular.booking.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+
+public class BottomSheetActivity extends AppCompatActivity {
+   
+    BottomSheetLayout mBottomSheetLayout;
+    Button button;
+    ListPanel listPanel;
+    CustomerListView lv_left;
+    CustomerListView lv_right;
+    List<String> data=new ArrayList<>();
+    ItemTestDataAdapter itemTestDataAdapter;
+
+
+     @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.layout_test_bottomsheet);
+         mBottomSheetLayout=findViewById(R.id.bottom_sheet_layout);
+                 button=findViewById(R.id.bt_bottom);
+         lv_left =findViewById(R.id.lv_left);
+                 lv_right=findViewById(R.id.lv_right);
+        for (int i = 0; i <15; i++) {
+            data.add("姓名:"+i);
+        }
+        itemTestDataAdapter=new ItemTestDataAdapter(this,data);
+        lv_left.setAdapter(itemTestDataAdapter);
+        
+        lv_right.setAdapter(itemTestDataAdapter);
+        
+        
+        listPanel=new ListPanel(this);
+        mBottomSheetLayout.showWithSheetView(  listPanel);
+        
+        button.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (! mBottomSheetLayout.isSheetShowing()){
+                    listPanel.updateData(BottomSheetActivity.this);
+                    mBottomSheetLayout.showWithSheetView(  listPanel);
+                }else{
+                    mBottomSheetLayout.dismissSheet();
+                }
+            }
+        });
+    }
+}

+ 73 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/test/ItemTestDataAdapter.java

@@ -0,0 +1,73 @@
+package com.modular.booking.activity.test;
+
+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.modular.booking.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ItemTestDataAdapter extends BaseAdapter {
+
+    private List<String> objects = new ArrayList<String>();
+
+    private Context context;
+    private LayoutInflater layoutInflater;
+
+    public ItemTestDataAdapter(Context context, List<String> objects) {
+        this.context = context;
+        this.layoutInflater = LayoutInflater.from(context);
+        this.objects=objects;
+    }
+
+    public List<String> getObjects() {
+        return objects;
+    }
+
+    public void setObjects(List<String> objects) {
+        this.objects = objects;
+        
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public String 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_test_data, null);
+            convertView.setTag(new ViewHolder(convertView));
+        }
+        initializeViews((String)getItem(position), (ViewHolder) convertView.getTag());
+        return convertView;
+    }
+
+    private void initializeViews(String object, ViewHolder holder) {
+        //TODO implement
+    }
+
+    protected class ViewHolder {
+        private TextView tvName;
+
+        public ViewHolder(View view) {
+            tvName = (TextView) view.findViewById(R.id.tv_name);
+        }
+    }
+}

+ 51 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/test/ListPanel.java

@@ -0,0 +1,51 @@
+package com.modular.booking.activity.test;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ListView;
+
+import com.modular.booking.R;
+import com.modular.booking.adapter.LayoutShoppingCartItemAdapter;
+import com.modular.booking.model.ShoppingEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+
+/**
+ * Created by Arison on 2018/2/1.
+ */
+
+public class ListPanel extends FrameLayout {
+    
+    ListView lv_data;
+    List<String> data=new ArrayList<>();
+  
+    LayoutShoppingCartItemAdapter itemAdapter;
+    List<ShoppingEntity>  shoppingEntities=new ArrayList<>();
+    public ListPanel(@NonNull Context context) {
+        super(context);
+        View view= LayoutInflater.from(context).inflate(R.layout.activity_bottom_sheet, this);
+        lv_data=findViewById(R.id.lv_data);
+        updateData(context);
+    }
+
+    public  void updateData(@NonNull Context context) {
+        for (int i = 0; i <15; i++) {
+            data.add("姓名:"+i);
+            ShoppingEntity entity=new ShoppingEntity();
+            entity.setId("123"+i);
+            entity.setName("shangping"+i);
+            entity.setUnitPrice(12);
+            entity.setQuantity(2);
+            shoppingEntities.add(entity);
+        }
+        itemAdapter=new LayoutShoppingCartItemAdapter(context);
+        lv_data.setAdapter(itemAdapter);
+        itemAdapter.setItems(shoppingEntities);
+    }
+}

Some files were not shown because too many files changed in this diff