Browse Source

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

# Conflicts:
#	WeiChat/version.properties
Bitliker 8 years ago
parent
commit
8e3dfab7ed
47 changed files with 1161 additions and 588 deletions
  1. 8 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/ClientActivity.java
  2. 14 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkMenuChildAdapter.java
  3. 24 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkMenuParentAdapter.java
  4. 55 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorkPlatFragment.java
  5. 12 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskActivity.java
  6. 7 6
      WeiChat/src/main/res/layout/activity_report_query_criteria.xml
  7. 1 0
      WeiChat/src/main/res/values-en/strings.xml
  8. 1 0
      WeiChat/src/main/res/values-zh-rCN/strings.xml
  9. 1 0
      WeiChat/src/main/res/values-zh-rTW/strings.xml
  10. 1 0
      WeiChat/src/main/res/values/strings.xml
  11. 3 3
      WeiChat/version.properties
  12. 30 66
      app_core/common/src/main/assets/work_menu.json
  13. 16 43
      app_core/common/src/main/assets/work_menu_b2b.json
  14. 3 30
      app_core/common/src/main/assets/work_menu_personal.json
  15. BIN
      app_core/common/src/main/res/drawable-xxhdpi/received.png
  16. 101 0
      app_core/common/src/main/res/layout/input_error_msg.xml
  17. 12 0
      app_core/common/src/main/res/menu/wage_error.xml
  18. 39 0
      app_core/common/src/main/res/values-en/strings.xml
  19. 39 0
      app_core/common/src/main/res/values-zh-rCN/strings.xml
  20. 39 0
      app_core/common/src/main/res/values-zh-rTW/strings.xml
  21. 39 0
      app_core/common/src/main/res/values/strings.xml
  22. 0 28
      app_core/network/src/main/java/com/me/network/app/http/HttpResult.java
  23. 14 3
      app_core/network/src/main/java/com/me/network/app/http/impl/RetrofitImpl.java
  24. 0 174
      app_core/network/src/main/java/com/me/network/app/http/impl/RetrofitTagImpl.java
  25. 289 0
      app_core/network/src/main/java/com/me/network/app/http/interceptor/HttpLoggerInterceptor.java
  26. 3 5
      app_core/network/src/main/java/com/me/network/app/http/interceptor/NetInterceptor.java
  27. 20 0
      app_core/network/src/main/java/com/me/network/app/http/logger/HttpLogger.java
  28. 0 18
      app_core/network/src/main/java/com/me/network/app/http/rx/ResultSubscriber.java
  29. 0 14
      app_core/network/src/main/java/com/me/network/app/http/rx/ResultTagListener.java
  30. 0 29
      app_core/network/src/main/java/com/me/network/app/http/rx/ResultTagSubscriber.java
  31. 6 10
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceAddActivity.java
  32. 6 5
      app_modular/appbooking/src/main/res/layout/activity_bservice_add.xml
  33. 7 7
      app_modular/appbooking/src/main/res/layout/add_sub_layout.xml
  34. 4 0
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/BRestActivity.java
  35. 8 0
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/CheckWagesActivity.java
  36. 128 6
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/WagesDetailsActivity.java
  37. 15 16
      app_modular/appme/src/main/res/layout/sigature_pop.xml
  38. 23 9
      app_modular/appme/src/main/res/layout/wages_details_activity.xml
  39. 21 12
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/CustomerListActivity.java
  40. 71 64
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/SalesRankingActivity.java
  41. 8 2
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/TaskAddErpActivity.java
  42. 1 5
      app_modular/appworks/src/main/java/com/uas/appworks/activity/WorkModuleSortActivity.java
  43. 15 2
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/WorkFuncSetChildAdapter.java
  44. 9 4
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/WorkFuncSetParentAdapter.java
  45. 12 1
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/WorkModuleSortAddAdapter.java
  46. 13 1
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/WorkModuleSortDeleteAdapter.java
  47. 43 4
      app_modular/appworks/src/main/java/com/uas/appworks/model/WorkPlatModel.java

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

@@ -34,6 +34,7 @@ import com.common.system.DisplayUtil;
 import com.core.app.Constants;
 import com.core.base.BaseActivity;
 import com.core.net.http.ViewUtil;
+import com.core.utils.ToastUtil;
 import com.core.utils.time.wheel.DatePicker;
 import com.github.mikephil.charting.charts.BarChart;
 import com.github.mikephil.charting.components.Legend;
@@ -253,8 +254,12 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
     }
 
     private void initData() {
-        sendHttpResquest();
-        isHasSubordinate(6);//下属
+        if (CommonUtil.isNetWorkConnected(ct)) {
+            sendHttpResquest();
+            isHasSubordinate(6);//下属
+        } else {
+            ToastUtil.showToast(ct, R.string.networks_out);
+        }
     }
 
 
@@ -1211,7 +1216,7 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
         ViewUtil.httpSendRequest(ct, url, param, mHandler, headers, what, null, null, "get");
     }
 
-    public  Intent getVisitClass(Context ct) {
+    public Intent getVisitClass(Context ct) {
         return new Intent(ct, VersionUtil.canShowCrm2_0() ? AddVisitReportActivity.class : VisitReportAddActivity.class);
     }
 }

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

@@ -58,12 +58,24 @@ public class WorkMenuChildAdapter extends BaseAdapter {
     }
 
     private void initializeViews(WorkMenuBean.ModuleListBean object, ViewHolder holder) {
-        holder.workMenuChildNameTv.setText(object.getMenuName());
+        if (object.isLocalMenu()) {
+            try {
+                holder.workMenuChildNameTv.setText(mResources.getIdentifier(object.getMenuName(), "string", context.getPackageName()));
+            } catch (Exception e) {
+                holder.workMenuChildNameTv.setText(object.getMenuName());
+            }
+        } else {
+            holder.workMenuChildNameTv.setText(object.getMenuName());
+        }
         if (TextUtils.isEmpty(object.getMenuIcon())) {
             holder.workMenuChildIconIv.setImageResource(R.drawable.defaultpic);
         } else {
             if (object.isLocalMenu()) {
-                holder.workMenuChildIconIv.setImageResource(mResources.getIdentifier(object.getMenuIcon(), "drawable", context.getPackageName()));
+                try {
+                    holder.workMenuChildIconIv.setImageResource(mResources.getIdentifier(object.getMenuIcon(), "drawable", context.getPackageName()));
+                } catch (Exception e) {
+                    holder.workMenuChildIconIv.setImageResource(R.drawable.defaultpic);
+                }
             } else {
                 ImageLoaderUtil.getInstance().loadImage(object.getMenuIcon(), holder.workMenuChildIconIv);
             }

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

@@ -2,6 +2,7 @@ package com.xzjmyk.pm.activity.ui.erp.adapter;
 
 import android.content.Context;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -33,6 +34,7 @@ public class WorkMenuParentAdapter extends BaseAdapter {
     private LayoutInflater layoutInflater;
     private WorkMenuChildAdapter mWorkMenuChildAdapter;
     private OnAddFuncClickListener mOnAddFuncClickListener;
+    private Resources mResources;
     private boolean isB2b = false;
 
     public WorkMenuParentAdapter(Context context, List<WorkMenuBean> objects) {
@@ -40,6 +42,7 @@ public class WorkMenuParentAdapter extends BaseAdapter {
         this.objects = objects;
         this.layoutInflater = LayoutInflater.from(context);
         isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
+        mResources = context.getResources();
     }
 
     public void setOnAddFuncClickListener(OnAddFuncClickListener onAddFuncClickListener) {
@@ -76,7 +79,15 @@ public class WorkMenuParentAdapter extends BaseAdapter {
     }
 
     private void initializeViews(WorkMenuBean object, ViewHolder holder) {
-        holder.workParentTitleTv.setText(object.getModuleName());
+        if (object.isLocalModule()) {
+            try {
+                holder.workParentTitleTv.setText(mResources.getIdentifier(object.getModuleName(), "string", context.getPackageName()));
+            } catch (Exception e) {
+                holder.workParentTitleTv.setText(object.getModuleName());
+            }
+        } else {
+            holder.workParentTitleTv.setText(object.getModuleName());
+        }
         List<WorkMenuBean.ModuleListBean> typeList = object.getModuleList();
         List<WorkMenuBean.ModuleListBean> typeListBeen = new ArrayList<>();
         for (int i = 0; i < typeList.size(); i++) {
@@ -91,7 +102,7 @@ public class WorkMenuParentAdapter extends BaseAdapter {
             moduleListBean.setIsLocalMenu(true);
             moduleListBean.setMenuActivity("com.modular.work.WorkFuncSetActivity");
             moduleListBean.setMenuIcon("add_picture");
-            moduleListBean.setMenuName("添加应用");
+            moduleListBean.setMenuName("str_work_add_func");
             moduleListBean.setMenuUrl("");
 
             typeListBeen.add(moduleListBean);
@@ -215,7 +226,17 @@ public class WorkMenuParentAdapter extends BaseAdapter {
                 break;
             case "com.modular.work.CommonDataFormActivity":
                 intent.putExtra("serve_id", caller);
-                intent.putExtra("title", moduleListBean.getMenuName());
+                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;
             default:
                 break;

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

@@ -1,6 +1,7 @@
 package com.xzjmyk.pm.activity.ui.erp.fragment;
 
 import android.content.Intent;
+import android.content.res.Resources;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -50,6 +51,7 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
     private TextView mSetTextView;
     private List<WorkMenuBean> mCacheMenuTypeBeans;
     private String mUserId, mCompanyName, mMaster;
+    private Resources mResources;
 
     @Override
     protected WorkPlatPresenter initPresenter() {
@@ -80,6 +82,9 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
             mWorkMenuParentAdapter = new WorkMenuParentAdapter(mContext, mWorkMenuBeans);
             mWorkMenuListView.setAdapter(mWorkMenuParentAdapter);
         }
+        if (mResources == null) {
+            mResources = mContext.getResources();
+        }
     }
 
     @Override
@@ -278,18 +283,35 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
                 String netModuleName = netWorkMenuBean.getModuleName();
                 List<WorkMenuBean.ModuleListBean> netModuleList = netWorkMenuBean.getModuleList();
                 for (WorkMenuBean cacheWorkMenuBean : mCacheMenuTypeBeans) {
-                    String cacheModuleName = cacheWorkMenuBean.getModuleName();
+                    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();
+                    }
                     List<WorkMenuBean.ModuleListBean> cacheModuleList = cacheWorkMenuBean.getModuleList();
                     if (cacheModuleName.equals(netModuleName)) {
                         isExist = true;
                         cacheWorkMenuBean.setModuleId(netWorkMenuBean.getModuleId());
                         cacheWorkMenuBean.setModuleTag(netWorkMenuBean.getModuleTag());
-                        cacheWorkMenuBean.setModuleName(netWorkMenuBean.getModuleName());
                         for (WorkMenuBean.ModuleListBean netModuleListBean : netModuleList) {
                             boolean isFuncExist = false;
                             String netMenuName = netModuleListBean.getMenuName();
                             for (WorkMenuBean.ModuleListBean cacheModuleListBean : cacheModuleList) {
-                                String cacheMenuName = cacheModuleListBean.getMenuName();
+                                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)) {
                                     isFuncExist = true;
                                     if (!cacheModuleListBean.isLocalMenu()) {
@@ -311,7 +333,16 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
                             WorkMenuBean.ModuleListBean cacheModuleListBean = cacheModuleList.get(i);
                             if (!cacheModuleListBean.isLocalMenu()) {
                                 boolean isCacheExist = false;
-                                String cacheMenuName = cacheModuleListBean.getMenuName();
+                                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();
+                                }
                                 for (WorkMenuBean.ModuleListBean netModuleListBean : netModuleList) {
                                     String netMenuName = netModuleListBean.getMenuName();
                                     if (cacheMenuName.equals(netMenuName)) {
@@ -337,9 +368,27 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
                 WorkMenuBean cacheWorkMenuBean = mCacheMenuTypeBeans.get(i);
                 if (!cacheWorkMenuBean.isLocalModule()) {
                     boolean isCacheExist = false;
-                    String cacheModuleName = cacheWorkMenuBean.getModuleName();
+                    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();
+                    }
                     for (WorkMenuBean netWorkMenuBean : netWorkMenuBeans) {
-                        String netModuleName = netWorkMenuBean.getModuleName();
+                        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)) {
                             isCacheExist = true;
                             break;

+ 12 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskActivity.java

@@ -42,6 +42,7 @@ import com.core.net.http.ViewUtil;
 import com.core.utils.CommonUtil;
 import com.core.utils.FlexJsonUtil;
 import com.core.utils.IntentUtils;
+import com.core.utils.ToastUtil;
 import com.core.widget.EmptyLayout;
 import com.core.widget.VoiceSearchView;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
@@ -72,7 +73,7 @@ import java.util.regex.PatternSyntaxException;
 @SuppressWarnings({"unused", "deprecation"})
 public class TaskActivity extends BaseActivity implements OnClickListener {
     //TODO 应要求修改先修改为2000,后面再优化
-    private final int PAGE_SIZE=2000;
+    private final int PAGE_SIZE = 2000;
     private EmptyLayout mEmptyLayout;
     private Context context;
     private PullToRefreshListView listview_main;
@@ -278,7 +279,11 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
         new Thread(new getallprocess_run()).start();
 //        sendResquestForServer("START", 2);
         initHeaderView();//  头布局显示
-        sendResquestForServerAll(2, mCurrentPage);  // update TODO :出息进来请求所有任务数据
+        if (CommonUtil.isNetWorkConnected(ct)) {
+            sendResquestForServerAll(2, mCurrentPage);  // update TODO :出息进来请求所有任务数据
+        } else {
+            ToastUtil.showToast(ct, R.string.networks_out);
+        }
         initSearchEvent();
         /**注释:监听 */
         listview_main.setOnItemClickListener(new OnItemClickListener() {
@@ -329,14 +334,14 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
                     Blowfish blowfish = new Blowfish("00" + d);
                     t = blowfish.encryptString(password);
                 }
-                Intent intent = new Intent("com.modular.main.WebViewLoadActivity" );
+                Intent intent = new Intent("com.modular.main.WebViewLoadActivity");
                 if (allList != null || !allList.isEmpty()) {
                     String url = allList.get(position - 1).getLink();
                     String master = allList.get(position - 1).getMaster();
                     if (master == null) {
                         master = CommonUtil.getSharedPreferences(context, "erp_master");
                     }
-                    IntentUtils.webLinks(context,url,t);
+                    IntentUtils.webLinks(context, url, t);
                     intent.putExtra("url", url);
                     intent.putExtra("t", t);
                     intent.putExtra("d", d);
@@ -410,11 +415,11 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
 
                 for (int i = 0; i < real_List.size(); i++) {
                     boolean b = false;
-                    try{
+                    try {
                         b = getResult(real_List.get(i).getRecorder() + real_List.get(i).getDealpersoncode()
                                 + real_List.get(i).getStatus() + real_List.get(i).getTaskname()
                                 + real_List.get(i).getEndTime() + real_List.get(i).getDatetime(), strChche.trim());
-                    }catch (PatternSyntaxException e){
+                    } catch (PatternSyntaxException e) {
                         e.printStackTrace();
                     }
                     if (b) {
@@ -657,7 +662,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
             Blowfish blowfish = new Blowfish("00" + d);
             t = blowfish.encryptString(password);
         }
-        Intent intent = new Intent("com.modular.main.WebViewLoadActivity" );
+        Intent intent = new Intent("com.modular.main.WebViewLoadActivity");
         intent.putExtra("url", url);
         intent.putExtra("t", t);
         intent.putExtra("d", d);

+ 7 - 6
WeiChat/src/main/res/layout/activity_report_query_criteria.xml

@@ -16,13 +16,13 @@
             android:layout_height="wrap_content"
             android:drawableLeft="@drawable/ic_remind_bell"
             android:drawablePadding="10dp"
-            android:text="@string/report_query_prompt"/>
+            android:text="@string/report_query_prompt" />
     </LinearLayout>
 
     <View
         android:layout_width="match_parent"
         android:layout_height="1dp"
-        android:background="@color/gray_light"/>
+        android:background="@color/gray_light" />
 
     <ListView
         android:id="@+id/report_query_criteria_lv"
@@ -32,8 +32,9 @@
         android:layout_weight="1"
         android:hardwareAccelerated="true"
         android:layerType="hardware"
+        android:overScrollMode="never"
         android:scrollbars="none"
-        android:scrollingCache="false"/>
+        android:scrollingCache="false" />
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -52,7 +53,7 @@
             android:background="@drawable/selector_cancel_bg"
             android:gravity="center"
             android:text="@string/cancel"
-            android:textColor="@color/selector_cancel_text_color"/>
+            android:textColor="@color/selector_cancel_text_color" />
 
         <TextView
             android:id="@+id/report_query_criteria_reset_btn"
@@ -64,7 +65,7 @@
             android:background="@drawable/selector_confirm_bg"
             android:gravity="center"
             android:text="@string/reset"
-            android:textColor="@color/white"/>
+            android:textColor="@color/white" />
 
         <TextView
             android:id="@+id/report_query_criteria_confirm_btn"
@@ -75,6 +76,6 @@
             android:background="@drawable/selector_confirm_bg"
             android:gravity="center"
             android:text="@string/app_dialog_ok"
-            android:textColor="@color/white"/>
+            android:textColor="@color/white" />
     </LinearLayout>
 </LinearLayout>

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

@@ -1440,5 +1440,6 @@
     <string name="download_paused">下载已暂停</string>
     <string name="str_reloading">正在加载....</string>
     <string name="sales_statistics">销售看板</string>
+    <string name="str_work_add_func">添加应用</string>
 
 </resources>

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

@@ -1552,5 +1552,6 @@
     <string name="download_paused">下载已暂停</string>
     <string name="str_reloading">正在加载....</string>
     <string name="sales_statistics">销售看板</string>
+    <string name="str_work_add_func">添加应用</string>
 
 </resources>

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

@@ -1541,5 +1541,6 @@
     <string name="download_paused">下载已暂停</string>
     <string name="str_reloading">正在加载....</string>
     <string name="sales_statistics">销售看板</string>
+    <string name="str_work_add_func">添加应用</string>
 
 </resources>

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

@@ -1884,4 +1884,5 @@
     <string name="download_paused">下载已暂停</string>
     <string name="str_reloading">正在加载....</string>
     <string name="sales_statistics">销售看板</string>
+    <string name="str_work_add_func">添加应用</string>
 </resources>

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Thu Dec 14 15:31:52 CST 2017
-debugName=154
+#Thu Dec 14 10:48:06 CST 2017
+debugName=160
 versionName=624
-debugCode=154
+debugCode=160
 versionCode=163

+ 30 - 66
app_core/common/src/main/assets/work_menu.json

@@ -1,6 +1,6 @@
 [
   {
-    "moduleName": "UU应用",
+    "moduleName": "str_uu_application",
     "isLocalModule": true,
     "moduleTag": "uu_application",
     "moduleId": "",
@@ -8,7 +8,7 @@
     "moduleList": [
       {
         "isLocalMenu": true,
-        "menuName": "预约小秘书",
+        "menuName": "str_work_subscribe_secretary",
         "menuIcon": "ic_work_subscribe_secretary",
         "menuActivity": "com.modular.booking.BookingListActivity",
         "menuUrl": "",
@@ -17,44 +17,17 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "UU运动",
+        "menuName": "str_work_uu_sports",
         "menuIcon": "ic_work_uu_sports",
         "menuActivity": "com.modular.appme.UURanking",
         "menuUrl": "",
         "caller": "",
         "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "商旅服务",
-        "menuIcon": "ic_work_business_travel_service",
-        "menuActivity": "",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "一元捐",
-        "menuIcon": "ic_work_charitable_donations",
-        "menuActivity": "com.modular.work.CharitableActivity",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "产城服务",
-        "menuIcon": "ic_work_city_industry_service",
-        "menuActivity": "com.modular.cityIndustry.CityIndustryServiceMainActivity",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
       }
     ]
   },
   {
-    "moduleName": "行政办公",
+    "moduleName": "str_administrative_office",
     "isLocalModule": true,
     "moduleTag": "administrative_office",
     "moduleId": "",
@@ -62,7 +35,7 @@
     "moduleList": [
       {
         "isLocalMenu": true,
-        "menuName": "我的审批",
+        "menuName": "str_work_work_approval",
         "menuIcon": "ic_work_work_approval",
         "menuActivity": "com.modular.work.ProcessMsgActivity",
         "menuUrl": "",
@@ -71,7 +44,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "待办工作",
+        "menuName": "str_work_backlog",
         "menuIcon": "ic_work_backlog",
         "menuActivity": "com.modular.task.TaskActivity",
         "menuUrl": "",
@@ -80,7 +53,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "工作日历",
+        "menuName": "str_work_work_calendar",
         "menuIcon": "ic_work_work_calendar",
         "menuActivity": "com.modular.work.OAActivity",
         "menuUrl": "",
@@ -89,7 +62,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "工作汇报",
+        "menuName": "str_work_work_report",
         "menuIcon": "ic_work_work_report",
         "menuActivity": "com.modular.work.WorkReportMenuActivity",
         "menuUrl": "",
@@ -98,7 +71,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "打卡签到",
+        "menuName": "str_work_punch_clock",
         "menuIcon": "ic_work_punch_clock",
         "menuActivity": "com.modular.work.WorkActivity",
         "menuUrl": "",
@@ -107,7 +80,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "外勤签到",
+        "menuName": "str_work_outwork_sign",
         "menuIcon": "ic_work_outwork_sign",
         "menuActivity": "com.modular.work.MissionActivity",
         "menuUrl": "",
@@ -116,7 +89,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "考勤统计",
+        "menuName": "str_work_attendance_statistics",
         "menuIcon": "ic_work_attendance_statistics",
         "menuActivity": "com.modular.oa.StatisticsActivity",
         "menuUrl": "",
@@ -125,7 +98,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "加班申请",
+        "menuName": "str_work_overtime_request",
         "menuIcon": "ic_work_overtime_request",
         "menuActivity": "com.modular.form.DataFormDetailActivity",
         "menuUrl": "",
@@ -134,7 +107,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "请假申请",
+        "menuName": "str_work_leave_request",
         "menuIcon": "ic_work_leave_request",
         "menuActivity": "com.modular.form.DataFormDetailActivity",
         "menuUrl": "",
@@ -143,7 +116,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "出差申请",
+        "menuName": "str_work_travel_request",
         "menuIcon": "ic_work_travel_request",
         "menuActivity": "com.modular.form.DataFormDetailActivity",
         "menuUrl": "",
@@ -152,7 +125,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "费用报销",
+        "menuName": "str_work_expense_account",
         "menuIcon": "ic_work_expense_account",
         "menuActivity": "com.modular.oa.ExpenseReimbursementActivity",
         "menuUrl": "",
@@ -161,7 +134,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "会议管理",
+        "menuName": "str_work_meeting_manage",
         "menuIcon": "ic_work_meeting_manage",
         "menuActivity": "com.modular.oa.AddMeetingActivity",
         "menuUrl": "",
@@ -171,7 +144,7 @@
     ]
   },
   {
-    "moduleName": "客户关系管理",
+    "moduleName": "str_customer_relationship",
     "isLocalModule": true,
     "moduleTag": "customer_relationship",
     "moduleId": "",
@@ -179,7 +152,7 @@
     "moduleList": [
       {
         "isLocalMenu": true,
-        "menuName": "商机管理",
+        "menuName": "str_work_business_manage",
         "menuIcon": "ic_work_business_manage",
         "menuActivity": "com.modular.crm.BusinessActivity",
         "menuUrl": "",
@@ -188,7 +161,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "客户管理",
+        "menuName": "str_work_customer_manage",
         "menuIcon": "ic_work_customer_manage",
         "menuActivity": "com.modular.crm.CustomerListActivity",
         "menuUrl": "",
@@ -197,7 +170,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "客户拜访",
+        "menuName": "str_work_customer_visit",
         "menuIcon": "ic_work_customer_visit",
         "menuActivity": "com.modular.work.OAActivity",
         "menuUrl": "",
@@ -206,7 +179,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "销售看版",
+        "menuName": "str_work_sales_data",
         "menuIcon": "ic_work_sales_data",
         "menuActivity": "com.modular.crm.ClientActivity",
         "menuUrl": "",
@@ -215,7 +188,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "荣誉墙",
+        "menuName": "str_work_honor_rank",
         "menuIcon": "ic_work_honor_rank",
         "menuActivity": "com.modular.crm.SalesRankingActivity",
         "menuUrl": "",
@@ -225,7 +198,7 @@
     ]
   },
   {
-    "moduleName": "企业应用",
+    "moduleName": "str_enterprise_application",
     "isLocalModule": true,
     "moduleTag": "enterprise_application",
     "moduleId": "",
@@ -233,7 +206,7 @@
     "moduleList": [
       {
         "isLocalMenu": true,
-        "menuName": "数据查询",
+        "menuName": "str_work_data_inquiry",
         "menuIcon": "ic_work_data_inquiry",
         "menuActivity": "com.modular.company.DataInquiryActivity",
         "menuUrl": "",
@@ -242,7 +215,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "报表统计",
+        "menuName": "str_work_report_statistics",
         "menuIcon": "ic_work_report_statistics",
         "menuActivity": "com.modular.company.ReportStatisticsActivity",
         "menuUrl": "",
@@ -251,7 +224,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "实时看板",
+        "menuName": "str_work_real_time_subs",
         "menuIcon": "ic_work_real_time_subs",
         "menuActivity": "com.modular.company.RealTimeFormActivity",
         "menuUrl": "",
@@ -260,26 +233,17 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "订阅号管理",
+        "menuName": "str_work_subs_manage",
         "menuIcon": "ic_work_subs_manage",
         "menuActivity": "com.modular.company.SubcribeManageActivity",
         "menuUrl": "",
         "caller": "",
         "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "企业工资条",
-        "menuIcon": "ic_work_salary_bill",
-        "menuActivity": "",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
       }
     ]
   },
   {
-    "moduleName": "优软云平台",
+    "moduleName": "str_usoft_cloud_platform",
     "isLocalModule": true,
     "moduleTag": "usoft_cloud_platform",
     "moduleId": "",
@@ -287,7 +251,7 @@
     "moduleList": [
       {
         "isLocalMenu": true,
-        "menuName": "B2B商务",
+        "menuName": "str_work_b2b_commerce",
         "menuIcon": "ic_work_b2b_commerce",
         "menuActivity": "com.modular.main.WebViewCommActivity",
         "menuUrl": "",
@@ -296,7 +260,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "优软商城",
+        "menuName": "str_work_usoft_mall",
         "menuIcon": "ic_work_usoft_mall",
         "menuActivity": "com.modular.main.WebViewCommActivity",
         "menuUrl": "",

+ 16 - 43
app_core/common/src/main/assets/work_menu_b2b.json

@@ -1,6 +1,6 @@
 [
   {
-    "moduleName": "UU应用",
+    "moduleName": "str_uu_application",
     "isLocalModule": true,
     "moduleTag": "uu_application",
     "moduleId": "",
@@ -8,7 +8,7 @@
     "moduleList": [
       {
         "isLocalMenu": true,
-        "menuName": "预约小秘书",
+        "menuName": "str_work_subscribe_secretary",
         "menuIcon": "ic_work_subscribe_secretary",
         "menuActivity": "com.modular.booking.BookingListActivity",
         "menuUrl": "",
@@ -17,44 +17,17 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "UU运动",
+        "menuName": "str_work_uu_sports",
         "menuIcon": "ic_work_uu_sports",
         "menuActivity": "com.modular.appme.UURanking",
         "menuUrl": "",
         "caller": "",
         "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "商旅服务",
-        "menuIcon": "ic_work_business_travel_service",
-        "menuActivity": "",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "一元捐",
-        "menuIcon": "ic_work_charitable_donations",
-        "menuActivity": "com.modular.work.CharitableActivity",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "产城服务",
-        "menuIcon": "ic_work_city_industry_service",
-        "menuActivity": "com.modular.cityIndustry.CityIndustryServiceMainActivity",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
       }
     ]
   },
   {
-    "moduleName": "行政办公",
+    "moduleName": "str_administrative_office",
     "isLocalModule": true,
     "moduleTag": "administrative_office",
     "moduleId": "",
@@ -62,7 +35,7 @@
     "moduleList": [
       {
         "isLocalMenu": true,
-        "menuName": "我的审批",
+        "menuName": "str_work_work_approval",
         "menuIcon": "ic_work_work_approval",
         "menuActivity": "com.modular.work.ProcessB2BActivity",
         "menuUrl": "",
@@ -71,7 +44,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "待办工作",
+        "menuName": "str_work_backlog",
         "menuIcon": "ic_work_backlog",
         "menuActivity": "com.modular.task.TaskB2BActivity",
         "menuUrl": "",
@@ -80,7 +53,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "工作日历",
+        "menuName": "str_work_work_calendar",
         "menuIcon": "ic_work_work_calendar",
         "menuActivity": "com.modular.work.OAActivity",
         "menuUrl": "",
@@ -89,7 +62,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "工作汇报",
+        "menuName": "str_work_work_report",
         "menuIcon": "ic_work_work_report",
         "menuActivity": "com.modular.plat.WorkDailyAddActivity",
         "menuUrl": "",
@@ -98,7 +71,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "打卡签到",
+        "menuName": "str_work_punch_clock",
         "menuIcon": "ic_work_punch_clock",
         "menuActivity": "com.modular.work.WorkActivity",
         "menuUrl": "",
@@ -107,7 +80,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "外勤签到",
+        "menuName": "str_work_outwork_sign",
         "menuIcon": "ic_work_outwork_sign",
         "menuActivity": "com.modular.work.MissionActivity",
         "menuUrl": "",
@@ -116,7 +89,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "加班申请",
+        "menuName": "str_work_overtime_request",
         "menuIcon": "ic_work_overtime_request",
         "menuActivity": "com.modular.plat.WorkExtraActivity",
         "menuUrl": "",
@@ -125,7 +98,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "请假申请",
+        "menuName": "str_work_leave_request",
         "menuIcon": "ic_work_leave_request",
         "menuActivity": "com.modular.oa.PlatLeaveAddActivity",
         "menuUrl": "",
@@ -134,7 +107,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "出差申请",
+        "menuName": "str_work_travel_request",
         "menuIcon": "ic_work_travel_request",
         "menuActivity": "com.modular.plat.TravelActivity",
         "menuUrl": "",
@@ -144,7 +117,7 @@
     ]
   },
   {
-    "moduleName": "优软云平台",
+    "moduleName": "str_usoft_cloud_platform",
     "isLocalModule": true,
     "moduleTag": "usoft_cloud_platform",
     "moduleId": "",
@@ -152,7 +125,7 @@
     "moduleList": [
       {
         "isLocalMenu": true,
-        "menuName": "B2B商务",
+        "menuName": "str_work_b2b_commerce",
         "menuIcon": "ic_work_b2b_commerce",
         "menuActivity": "com.modular.main.WebViewCommActivity",
         "menuUrl": "",
@@ -161,7 +134,7 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "优软商城",
+        "menuName": "str_work_usoft_mall",
         "menuIcon": "ic_work_usoft_mall",
         "menuActivity": "com.modular.main.WebViewCommActivity",
         "menuUrl": "",

+ 3 - 30
app_core/common/src/main/assets/work_menu_personal.json

@@ -1,6 +1,6 @@
 [
   {
-    "moduleName": "UU应用",
+    "moduleName": "str_uu_application",
     "isLocalModule": true,
     "moduleTag": "uu_application",
     "moduleId": "",
@@ -8,7 +8,7 @@
     "moduleList": [
       {
         "isLocalMenu": true,
-        "menuName": "预约小秘书",
+        "menuName": "str_work_subscribe_secretary",
         "menuIcon": "ic_work_subscribe_secretary",
         "menuActivity": "com.modular.booking.BookingListActivity",
         "menuUrl": "",
@@ -17,39 +17,12 @@
       },
       {
         "isLocalMenu": true,
-        "menuName": "UU运动",
+        "menuName": "str_work_uu_sports",
         "menuIcon": "ic_work_uu_sports",
         "menuActivity": "com.modular.appme.UURanking",
         "menuUrl": "",
         "caller": "",
         "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "商旅服务",
-        "menuIcon": "ic_work_business_travel_service",
-        "menuActivity": "",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "一元捐",
-        "menuIcon": "ic_work_charitable_donations",
-        "menuActivity": "com.modular.work.CharitableActivity",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
-      },
-      {
-        "isLocalMenu": true,
-        "menuName": "产城服务",
-        "menuIcon": "ic_work_city_industry_service",
-        "menuActivity": "com.modular.cityIndustry.CityIndustryServiceMainActivity",
-        "menuUrl": "",
-        "caller": "",
-        "isHide": false
       }
     ]
   }

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


+ 101 - 0
app_core/common/src/main/res/layout/input_error_msg.xml

@@ -0,0 +1,101 @@
+<?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:gravity="center_horizontal"
+    android:orientation="vertical"
+    android:paddingLeft="10dp"
+    android:paddingRight="10dp"
+    android:paddingTop="10dp"
+    android:background="@drawable/pop_round_bg">
+
+    <TextView
+        android:id="@+id/title_tv"
+        android:layout_width="match_parent"
+        android:layout_height="20dp"
+        android:gravity="center"
+        android:text="请输入你的问题"
+        android:textColor="@color/text_main"
+        android:textSize="@dimen/text_main" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:gravity="center"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text=""
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <EditText
+            android:id="@+id/msg_et"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@null"
+            android:maxLines="3"
+            android:maxLength="100"
+            android:hint="@string/common_input"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main"
+            android:gravity="center_horizontal"
+            />
+        <EditText
+            android:id="@+id/editname_et2"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@null"
+            android:ellipsize="end"
+            android:maxLines="1"
+            android:hint="@string/common_input2"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main"
+            android:gravity="center_horizontal"
+            android:inputType="number"/>
+    </LinearLayout>
+
+
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:layout_marginTop="10dp"
+        android:background="@color/item_line" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:orientation="horizontal"
+        android:textColor="@color/text_main"
+        android:textSize="@dimen/text_main">
+
+        <TextView
+            android:id="@+id/cancel1_tv"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="@string/cancel"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <View
+            android:layout_width="2px"
+            android:layout_height="match_parent"
+            android:background="@color/item_line" />
+
+        <TextView
+            android:id="@+id/sure_tv"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="@string/common_sure"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+    </LinearLayout>
+</LinearLayout>

+ 12 - 0
app_core/common/src/main/res/menu/wage_error.xml

@@ -0,0 +1,12 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.xzjmyk.pm.activity.MainActivity">
+
+    <item
+        android:tooltipText="报错"
+        android:id="@+id/wage_error"
+        android:title="报错"
+        app:showAsAction="ifRoom" />
+
+</menu>

+ 39 - 0
app_core/common/src/main/res/values-en/strings.xml

@@ -1437,4 +1437,43 @@
     <string name="usoft_science">优软科技</string>
     <string name="work_plat_setting">工作面板设置</string>
     <string name="complete">完成</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_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_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_usoft_cloud_platform">优软云平台</string>
+    <string name="str_work_b2b_commerce">B2B商务</string>
+    <string name="str_work_usoft_mall">优软商城</string>
+    <!--工作台菜单-->
+
 </resources>

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

@@ -1550,4 +1550,43 @@
     <string name="usoft_science">优软科技</string>
     <string name="work_plat_setting">工作面板设置</string>
     <string name="complete">完成</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_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_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_usoft_cloud_platform">优软云平台</string>
+    <string name="str_work_b2b_commerce">B2B商务</string>
+    <string name="str_work_usoft_mall">优软商城</string>
+    <!--工作台菜单-->
+
 </resources>

+ 39 - 0
app_core/common/src/main/res/values-zh-rTW/strings.xml

@@ -1538,4 +1538,43 @@
     <string name="usoft_science">优软科技</string>
     <string name="work_plat_setting">工作面板设置</string>
     <string name="complete">完成</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_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_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_usoft_cloud_platform">优软云平台</string>
+    <string name="str_work_b2b_commerce">B2B商务</string>
+    <string name="str_work_usoft_mall">优软商城</string>
+    <!--工作台菜单-->
+
 </resources>

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

@@ -1889,4 +1889,43 @@
     <string name="work_plat_setting">工作面板设置</string>
     <string name="complete">完成</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_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_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_usoft_cloud_platform">优软云平台</string>
+    <string name="str_work_b2b_commerce">B2B商务</string>
+    <string name="str_work_usoft_mall">优软商城</string>
+    <!--工作台菜单-->
+
 </resources>

+ 0 - 28
app_core/network/src/main/java/com/me/network/app/http/HttpResult.java

@@ -1,28 +0,0 @@
-package com.me.network.app.http;
-
-/**
- * @author RaoMeng
- * @describe
- * @date 2017/11/14 10:34
- */
-
-public class HttpResult<T> {
-    private T t;
-    private int what;
-
-    public T getResponse() {
-        return t;
-    }
-
-    public void setResponse(T t) {
-        this.t = t;
-    }
-
-    public int getWhat() {
-        return what;
-    }
-
-    public void setWhat(int what) {
-        this.what = what;
-    }
-}

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

@@ -5,7 +5,9 @@ import com.google.gson.Gson;
 import com.me.network.app.http.HttpBase;
 import com.me.network.app.http.HttpClient;
 import com.me.network.app.http.interceptor.CacheInterceptor;
-import com.me.network.app.http.interceptor.LogInterceptor;
+import com.me.network.app.http.interceptor.HttpLoggerInterceptor;
+import com.me.network.app.http.interceptor.NetInterceptor;
+import com.me.network.app.http.logger.HttpLogger;
 import com.me.network.app.http.retrofit.StringConverterFactory;
 import com.me.network.app.http.rx.RxJavaUtils;
 import com.me.network.app.http.service.ParamService;
@@ -89,8 +91,17 @@ public class RetrofitImpl extends HttpBase {
                     }
                 });
 
-        LogInterceptor logInterceptor = new LogInterceptor(mbuilder);
-        mOkBuilder.addNetworkInterceptor(logInterceptor);
+        HttpLoggerInterceptor loggerInterceptor = new HttpLoggerInterceptor(new HttpLogger());
+        if (mbuilder.isDebug()) {
+            loggerInterceptor.setLevel(HttpLoggerInterceptor.Level.BODY);
+        } else {
+            loggerInterceptor.setLevel(HttpLoggerInterceptor.Level.NONE);
+        }
+
+        NetInterceptor netInterceptor = new NetInterceptor(mbuilder);
+        mOkBuilder
+                .addNetworkInterceptor(netInterceptor)
+                .addInterceptor(loggerInterceptor);
         if (mbuilder.getCacheFileSize() != 0) {
             mOkBuilder.cache(new Cache(mbuilder.getCacheFile(), mbuilder.getCacheFileSize()));
             mOkBuilder.addInterceptor(

+ 0 - 174
app_core/network/src/main/java/com/me/network/app/http/impl/RetrofitTagImpl.java

@@ -1,174 +0,0 @@
-package com.me.network.app.http.impl;
-
-import com.google.gson.Gson;
-import com.me.network.app.http.HttpBase;
-import com.me.network.app.http.HttpClient;
-import com.me.network.app.http.HttpResult;
-import com.me.network.app.http.interceptor.CacheInterceptor;
-import com.me.network.app.http.interceptor.LogInterceptor;
-import com.me.network.app.http.retrofit.StringConverterFactory;
-import com.me.network.app.http.rx.RxJavaUtils;
-import com.me.network.app.http.service.ParamService;
-import com.me.network.app.http.ssl.TrustAllCerts;
-import com.me.network.app.http.ssl.TrustAllHostnameVerifier;
-
-import java.io.File;
-import java.security.SecureRandom;
-import java.util.concurrent.TimeUnit;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-
-import okhttp3.Cache;
-import okhttp3.MultipartBody;
-import okhttp3.OkHttpClient;
-import okhttp3.RequestBody;
-import retrofit2.Retrofit;
-import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
-import retrofit2.converter.gson.GsonConverterFactory;
-import rx.Observable;
-import rx.Subscriber;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.functions.Func1;
-
-/**
- * @author RaoMeng
- * @describe
- * @date 2017/11/14 11:21
- */
-
-public class RetrofitTagImpl extends HttpBase {
-    public Retrofit retrofit;
-    public ParamService paramService;
-    private static RetrofitImpl instance;
-
-
-    public static RetrofitImpl getInstance() {
-        if (instance == null) {
-            synchronized (RetrofitImpl.class) {
-                if (instance == null) {
-                    instance = new RetrofitImpl();
-                }
-            }
-        }
-
-        return instance;
-    }
-
-    @Override
-    public void initClient() {
-
-        OkHttpClient.Builder okBuilder = new OkHttpClient.Builder()
-                .connectTimeout(mbuilder.getConnectTimeout(), TimeUnit.SECONDS)
-                .readTimeout(mbuilder.getReadTimeout(), TimeUnit.SECONDS)
-                .writeTimeout(mbuilder.getWriteTimeout(), TimeUnit.SECONDS)
-                .sslSocketFactory(createSSLSocketFactory(), new TrustAllCerts())// 信任所有证书
-                .hostnameVerifier(new TrustAllHostnameVerifier());
-
-        LogInterceptor logInterceptor = new LogInterceptor();
-        logInterceptor.setBuilder(mbuilder);
-        okBuilder.addInterceptor(logInterceptor);
-        if (mbuilder.getCacheFileSize() != 0) {
-            okBuilder.cache(new Cache(mbuilder.getCacheFile(), mbuilder.getCacheFileSize()));
-            okBuilder.addInterceptor(
-                    new CacheInterceptor(String.valueOf(mbuilder.getCacheTime()), mbuilder.getCacheType()));
-        }
-
-
-        OkHttpClient client = okBuilder.build();
-        retrofit = new Retrofit.Builder().client(client)
-                .baseUrl(mbuilder.getBaseUrl())
-                .addConverterFactory(StringConverterFactory.create())
-                .addConverterFactory(GsonConverterFactory.create(new Gson()))
-                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
-                .build();
-
-        paramService = initApi(ParamService.class);
-    }
-
-    public <T> T initApi(Class<T> service) {
-        return retrofit.create(service);
-    }
-
-    @Override
-    public void get(HttpClient builder, Subscriber<Object> s) {
-        Observable<Object> o = paramService.getParam(builder.getBaseUrl(), builder.getParams(), builder.getHeaders());
-        toSubscribe(o, builder.getWhat(), s);
-
-    }
-
-    @Override
-    public void post(HttpClient builder, Subscriber<Object> s) {
-        Observable<Object> o = paramService.postParam(builder.getBaseUrl(), builder.getParams(), builder.getHeaders());
-        toSubscribe(o, builder.getWhat(), s);
-    }
-
-    @Override
-    public void uploads(HttpClient mBuilder, Subscriber<Object> s) {
-        MultipartBody.Builder builder = new MultipartBody.Builder();
-        builder.setType(MultipartBody.FORM);
-        //追加参数
-        for (String key : mBuilder.getParams().keySet()) {
-            Object object = mBuilder.getParams().get(key);
-            if (!(object instanceof File)) {
-                builder.addFormDataPart(key, object.toString());
-            } else {
-                File file = (File) object;
-                //其中参数“file”和服务器接收的参数 一一对应,保证多文件上传唯一key不变
-                builder.addFormDataPart("businessImage", file.getName(), RequestBody.create(null, file));
-            }
-        }
-        //创建RequestBody
-        RequestBody body = builder.build();
-        Observable<Object> o = paramService.uploads(mBuilder.getBaseUrl(), body);
-        toSubscribe(o, mBuilder.getWhat(), s);
-    }
-
-    private <T> void toSubscribe(Observable<T> o, final int what, Subscriber<Object> s) {
-        o.retryWhen(new Func1<Observable<? extends Throwable>, Observable<?>>() {
-
-            @Override
-            public Observable<?> call(Observable<? extends Throwable> t) {
-
-                return t.flatMap(new Func1<Throwable, Observable<?>>() {
-                    private int count = 0;
-
-                    @Override
-                    public Observable<?> call(Throwable t) {
-                        if (++count <= mbuilder.getMaxRetryCount()) {
-//							Logger.d("请求重试"+count+":"+t.getMessage());
-                            Observable<?> ob = Observable.timer(mbuilder.getRetryTimeout(), TimeUnit.MILLISECONDS);
-                            return ob;
-                        }
-
-                        return Observable.error(t);
-                    }
-                });
-            }
-        }).map(new Func1<T, T>() {
-            @Override
-            public T call(T t) {
-                HttpResult<T> httpResult = new HttpResult<>();
-                httpResult.setResponse(t);
-                httpResult.setWhat(what);
-                return t;
-            }
-        }).subscribeOn(RxJavaUtils.getScheduler("newThread"))
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(s);
-    }
-
-
-    public SSLSocketFactory createSSLSocketFactory() {
-        SSLSocketFactory ssfFactory = null;
-        try {
-            SSLContext sc = SSLContext.getInstance("TLS");
-            sc.init(null, new TrustManager[]{new TrustAllCerts()}, new SecureRandom());
-            ssfFactory = sc.getSocketFactory();
-        } catch (Exception e) {
-        }
-        return ssfFactory;
-    }
-
-}

+ 289 - 0
app_core/network/src/main/java/com/me/network/app/http/interceptor/HttpLoggerInterceptor.java

@@ -0,0 +1,289 @@
+package com.me.network.app.http.interceptor;
+
+import java.io.EOFException;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.concurrent.TimeUnit;
+
+import okhttp3.Connection;
+import okhttp3.Headers;
+import okhttp3.Interceptor;
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+import okhttp3.internal.http.HttpHeaders;
+import okhttp3.internal.platform.Platform;
+import okio.Buffer;
+import okio.BufferedSource;
+
+import static okhttp3.internal.platform.Platform.INFO;
+
+/**
+ * An OkHttp interceptor which logs request and response information. Can be applied as an
+ * {@linkplain OkHttpClient#interceptors() application interceptor} or as a {@linkplain
+ * OkHttpClient#networkInterceptors() network interceptor}. <p> The format of the logs created by
+ * this class should not be considered stable and may change slightly between releases. If you need
+ * a stable logging format, use your own interceptor.
+ */
+public final class HttpLoggerInterceptor implements Interceptor {
+    private static final Charset UTF8 = Charset.forName("UTF-8");
+
+    public enum Level {
+        /**
+         * No logs.
+         */
+        NONE,
+        /**
+         * Logs request and response lines.
+         * <p>
+         * <p>Example:
+         * <pre>{@code
+         * --> POST /greeting http/1.1 (3-byte body)
+         *
+         * <-- 200 OK (22ms, 6-byte body)
+         * }</pre>
+         */
+        BASIC,
+        /**
+         * Logs request and response lines and their respective headers.
+         * <p>
+         * <p>Example:
+         * <pre>{@code
+         * --> POST /greeting http/1.1
+         * Host: example.com
+         * Content-Type: plain/text
+         * Content-Length: 3
+         * --> END POST
+         *
+         * <-- 200 OK (22ms)
+         * Content-Type: plain/text
+         * Content-Length: 6
+         * <-- END HTTP
+         * }</pre>
+         */
+        HEADERS,
+        /**
+         * Logs request and response lines and their respective headers and bodies (if present).
+         * <p>
+         * <p>Example:
+         * <pre>{@code
+         * --> POST /greeting http/1.1
+         * Host: example.com
+         * Content-Type: plain/text
+         * Content-Length: 3
+         *
+         * Hi?
+         * --> END POST
+         *
+         * <-- 200 OK (22ms)
+         * Content-Type: plain/text
+         * Content-Length: 6
+         *
+         * Hello!
+         * <-- END HTTP
+         * }</pre>
+         */
+        BODY
+    }
+
+    public interface Logger {
+        void log(String message);
+
+        /**
+         * A {@link Logger} defaults output appropriate for the current platform.
+         */
+        Logger DEFAULT = new Logger() {
+            @Override
+            public void log(String message) {
+                Platform.get().log(INFO, message, null);
+            }
+        };
+    }
+
+    public HttpLoggerInterceptor() {
+        this(Logger.DEFAULT);
+    }
+
+    public HttpLoggerInterceptor(Logger logger) {
+        this.logger = logger;
+    }
+
+    private final Logger logger;
+
+    private volatile Level level = Level.NONE;
+
+    /**
+     * Change the level at which this interceptor logs.
+     */
+    public HttpLoggerInterceptor setLevel(Level level) {
+        if (level == null) throw new NullPointerException("level == null. Use Level.NONE instead.");
+        this.level = level;
+        return this;
+    }
+
+    public Level getLevel() {
+        return level;
+    }
+
+    @Override
+    public Response intercept(Chain chain) throws IOException {
+        Level level = this.level;
+
+        Request request = chain.request();
+        if (level == Level.NONE) {
+            return chain.proceed(request);
+        }
+
+        boolean logBody = level == Level.BODY;
+        boolean logHeaders = logBody || level == Level.HEADERS;
+
+        RequestBody requestBody = request.body();
+        boolean hasRequestBody = requestBody != null;
+
+        Connection connection = chain.connection();
+        String requestStartMessage = "--> request:"
+                + request.method()
+                + ' ' + request.url()
+                + (connection != null ? " " + connection.protocol() : "");
+        if (!logHeaders && hasRequestBody) {
+            requestStartMessage += " (" + requestBody.contentLength() + "-byte body)";
+        }
+        logger.log(requestStartMessage);
+
+        if (logHeaders) {
+            if (hasRequestBody) {
+                // Request body headers are only present when installed as a network interceptor. Force
+                // them to be included (when available) so there values are known.
+                if (requestBody.contentType() != null) {
+                    logger.log("Content-Type: " + requestBody.contentType());
+                }
+                if (requestBody.contentLength() != -1) {
+                    logger.log("Content-Length: " + requestBody.contentLength());
+                }
+            }
+
+            Headers headers = request.headers();
+            for (int i = 0, count = headers.size(); i < count; i++) {
+                String name = headers.name(i);
+                // Skip headers from the request body as they are explicitly logged above.
+                if (!"Content-Type".equalsIgnoreCase(name) && !"Content-Length".equalsIgnoreCase(name)) {
+                    logger.log(name + ": " + headers.value(i));
+                }
+            }
+
+            if (!logBody || !hasRequestBody) {
+                logger.log("--> END " + request.method());
+            } else if (bodyEncoded(request.headers())) {
+                logger.log("--> END " + request.method() + " (encoded body omitted)");
+            } else {
+                Buffer buffer = new Buffer();
+                requestBody.writeTo(buffer);
+
+                Charset charset = UTF8;
+                MediaType contentType = requestBody.contentType();
+                if (contentType != null) {
+                    charset = contentType.charset(UTF8);
+                }
+
+                logger.log("");
+                if (isPlaintext(buffer)) {
+                    logger.log(buffer.readString(charset));
+                    logger.log("--> END " + request.method()
+                            + " (" + requestBody.contentLength() + "-byte body)");
+                } else {
+                    logger.log("--> END " + request.method() + " (binary "
+                            + requestBody.contentLength() + "-byte body omitted)");
+                }
+            }
+        }
+
+        long startNs = System.nanoTime();
+        Response response;
+        try {
+            response = chain.proceed(request);
+        } catch (Exception e) {
+            logger.log("<-- HTTP FAILED: " + e);
+            throw e;
+        }
+        long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs);
+
+        ResponseBody responseBody = response.body();
+        long contentLength = responseBody.contentLength();
+        String bodySize = contentLength != -1 ? contentLength + "-byte" : "unknown-length";
+        logger.log("<-- response:"
+                + response.code()
+                + (response.message().isEmpty() ? "" : ' ' + response.message())
+                + ' ' + response.request().url()
+                + " (" + tookMs + "ms" + (!logHeaders ? ", " + bodySize + " body" : "") + ')');
+
+        if (logHeaders) {
+            Headers headers = response.headers();
+            for (int i = 0, count = headers.size(); i < count; i++) {
+                logger.log(headers.name(i) + ": " + headers.value(i));
+            }
+
+            if (!logBody || !HttpHeaders.hasBody(response)) {
+                logger.log("<-- END HTTP");
+            } else if (bodyEncoded(response.headers())) {
+                logger.log("<-- END HTTP (encoded body omitted)");
+            } else {
+                BufferedSource source = responseBody.source();
+                source.request(Long.MAX_VALUE); // Buffer the entire body.
+                Buffer buffer = source.buffer();
+
+                Charset charset = UTF8;
+                MediaType contentType = responseBody.contentType();
+                if (contentType != null) {
+                    charset = contentType.charset(UTF8);
+                }
+
+                if (!isPlaintext(buffer)) {
+                    logger.log("");
+                    logger.log("<-- END HTTP (binary " + buffer.size() + "-byte body omitted)");
+                    return response;
+                }
+
+                if (contentLength != 0) {
+                    logger.log("");
+                    logger.log(buffer.clone().readString(charset));
+                }
+
+                logger.log("<-- END HTTP (" + buffer.size() + "-byte body)");
+            }
+        }
+
+        return response;
+    }
+
+    /**
+     * Returns true if the body in question probably contains human readable text. Uses a small sample
+     * of code points to detect unicode control characters commonly used in binary file signatures.
+     */
+    static boolean isPlaintext(Buffer buffer) {
+        try {
+            Buffer prefix = new Buffer();
+            long byteCount = buffer.size() < 64 ? buffer.size() : 64;
+            buffer.copyTo(prefix, 0, byteCount);
+            for (int i = 0; i < 16; i++) {
+                if (prefix.exhausted()) {
+                    break;
+                }
+                int codePoint = prefix.readUtf8CodePoint();
+                if (Character.isISOControl(codePoint) && !Character.isWhitespace(codePoint)) {
+                    return false;
+                }
+            }
+            return true;
+        } catch (EOFException e) {
+            return false; // Truncated UTF-8 sequence.
+        }
+    }
+
+    private boolean bodyEncoded(Headers headers) {
+        String contentEncoding = headers.get("Content-Encoding");
+        return contentEncoding != null && !contentEncoding.equalsIgnoreCase("identity");
+    }
+}

+ 3 - 5
app_core/network/src/main/java/com/me/network/app/http/interceptor/LogInterceptor.java → app_core/network/src/main/java/com/me/network/app/http/interceptor/NetInterceptor.java

@@ -14,15 +14,15 @@ import okhttp3.Request;
 import okhttp3.Response;
 import okhttp3.ResponseBody;
 
-public class LogInterceptor implements Interceptor {
+public class NetInterceptor implements Interceptor {
 
     private HttpClient builder;
 
-    public LogInterceptor() {
+    public NetInterceptor() {
         super();
     }
 
-    public LogInterceptor(HttpClient builder) {
+    public NetInterceptor(HttpClient builder) {
         this.builder = builder;
     }
 
@@ -30,9 +30,7 @@ public class LogInterceptor implements Interceptor {
     public Response intercept(Chain chain) throws IOException {
         Request request = chain.request();
         Map<String, Object> headers = new HashMap<>();
-        ;
         Map<String, Object> params = new HashMap<>();
-        ;
         Map<String, Object> postParam = new HashMap<>();
         //添加公共Header,公共参数
         if (builder != null) {

+ 20 - 0
app_core/network/src/main/java/com/me/network/app/http/logger/HttpLogger.java

@@ -0,0 +1,20 @@
+package com.me.network.app.http.logger;
+
+import android.util.Log;
+
+import com.me.network.app.http.interceptor.HttpLoggerInterceptor;
+
+/**
+ * @author RaoMeng
+ * @describe 请求信息打印类
+ * @date 2017/12/13 14:53
+ */
+
+public class HttpLogger implements HttpLoggerInterceptor.Logger {
+    @Override
+    public void log(String message) {
+        if (message != null) {
+            Log.d("HttpLogger", message);
+        }
+    }
+}

+ 0 - 18
app_core/network/src/main/java/com/me/network/app/http/rx/ResultSubscriber.java

@@ -16,14 +16,11 @@ public class ResultSubscriber<T> extends Subscriber<T> {
 
     private ResultListener<T> resultListener;
     private Result2Listener<T> result2Listener;
-    private ResultTagListener<T> mResultTagListener;
 
     public ResultSubscriber(ResultListener<T> listener) {
         if (listener != null) {
             if (listener instanceof Result2Listener) {
                 this.result2Listener = (Result2Listener<T>) listener;
-            } else if (listener instanceof ResultTagListener) {
-                this.mResultTagListener = (ResultTagListener<T>) listener;
             } else {
                 this.resultListener = listener;
             }
@@ -55,17 +52,6 @@ public class ResultSubscriber<T> extends Subscriber<T> {
             } else {
                 result2Listener.onFailure((T) e);
             }
-        } else if (mResultTagListener != null) {
-            if (e instanceof HttpException) {
-                HttpException he = (HttpException) e;
-                try {
-                    mResultTagListener.onError(he.response().errorBody().string());
-                } catch (IOException e1) {
-                    e1.printStackTrace();
-                }
-            } else {
-                mResultTagListener.onError((T) e);
-            }
         } else {
             if (e instanceof HttpException) {
                 try {
@@ -87,10 +73,6 @@ public class ResultSubscriber<T> extends Subscriber<T> {
         if (result2Listener != null) {
             result2Listener.onResponse(t);
         }
-        if (mResultTagListener != null) {
-            // TODO: 2017/11/13 实现带tag的回调方法
-            mResultTagListener.onSuccess(0, t);
-        }
     }
 
 }

+ 0 - 14
app_core/network/src/main/java/com/me/network/app/http/rx/ResultTagListener.java

@@ -1,14 +0,0 @@
-package com.me.network.app.http.rx;
-
-/**
- * @author RaoMeng
- * @describe
- * @date 2017/11/13 15:38
- */
-
-public interface ResultTagListener<T> extends ResultListener {
-
-    void onSuccess(int what, T t);
-
-    void onError(Object error);
-}

+ 0 - 29
app_core/network/src/main/java/com/me/network/app/http/rx/ResultTagSubscriber.java

@@ -1,29 +0,0 @@
-package com.me.network.app.http.rx;
-
-import com.me.network.app.http.HttpResult;
-
-import rx.Subscriber;
-
-/**
- * @author RaoMeng
- * @describe
- * @date 2017/11/14 10:45
- */
-
-public class ResultTagSubscriber<T extends HttpResult> extends Subscriber<T> {
-
-    @Override
-    public void onCompleted() {
-
-    }
-
-    @Override
-    public void onError(Throwable throwable) {
-
-    }
-
-    @Override
-    public void onNext(T t) {
-
-    }
-}

+ 6 - 10
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceAddActivity.java

@@ -1197,14 +1197,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                         tv_food_times.setText(data.getString("sb_starttime").substring(0, 10) + " "
                                 + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
-             
                     searchSeatNumbers(tv_food_times.getText().toString(),data.getString("sb_companyid"));
-                    getSteatListStates(data.getString("sb_companyid"));//获取餐饮类别状态信息
-                    
-                    if(StringUtil.isEmpty(data.getString("sb_stname"))){
-                        tv_food_rooms.setText("无");
+                    if(StringUtil.isEmpty(data.getString("sb_spname"))){
+                        tv_food_rooms.setText(" ");
                     }else{
-                        tv_food_rooms.setText(data.getString("sb_stname"));
+                        tv_food_rooms.setText(data.getString("sb_spname"));
                     }
                     tv_food_rooms.setText(data.getString("sb_stname"));
                     tv_food_peoples.setText(data.getString("sb_person"));
@@ -1362,12 +1359,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     }
 
                     searchSeatNumbers(tv_food_times.getText().toString(),data.getString("sb_companyid"));
-                    if(StringUtil.isEmpty(data.getString("sb_stname"))){
-                        tv_food_rooms.setText("");
+                    if(StringUtil.isEmpty(data.getString("sb_spname"))){
+                        tv_food_rooms.setText(" ");
                     }else{
-                        tv_food_rooms.setText(data.getString("sb_stname"));
+                        tv_food_rooms.setText(data.getString("sb_spname"));
                     }
-                    tv_food_rooms.setText(data.getString("sb_stname"));
                     tv_food_peoples.setText(data.getString("sb_person"));
                     tv_food_peoples.setVisibility(View.VISIBLE);
                     addSubUtils.setVisibility(View.GONE);

+ 6 - 5
app_modular/appbooking/src/main/res/layout/activity_bservice_add.xml

@@ -410,7 +410,7 @@
             android:id="@+id/ll_food"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:visibility="gone"
+            
             android:orientation="vertical">
 
             <RelativeLayout
@@ -440,13 +440,13 @@
                     android:layout_alignParentRight="true"
                     android:gravity="center_vertical"
                     jmf:editable="true"
+                    jmf:contentWidth="40dp"
                     jmf:all_background="@color/me_menu_item_normal"
                     jmf:contentTextColor="@color/black"
                     jmf:contentBackground="@color/me_menu_item_normal"
                     jmf:leftBackground="@drawable/icon_remove"
                     jmf:rightBackground="@drawable/icon_add"
-                    jmf:leftResources="@color/me_menu_item_normal"
-                    jmf:rightResources="@color/me_menu_item_normal">
+                  >
                 </com.modular.booking.widget.AddSubUtils>
             </RelativeLayout>
 
@@ -490,18 +490,19 @@
                     style="@style/item_menu_input"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
-                    android:layout_marginRight="45dp"
+                  
                     android:layout_toRightOf="@id/tag_food_rooms"
                     android:layout_toLeftOf="@+id/sv_food_rooms"
                     android:drawableRight="@drawable/oa_next"
                     android:contentDescription="@string/service_food_rooms"
                     android:hint="@string/common_select_not_must"
-                    android:text="否"
+                  
                     android:textColor="@color/hintColor" />
                 <com.core.widget.view.SwitchView
                     android:id="@+id/sv_food_rooms"
                     android:layout_width="40dp"
                     android:layout_height="25dp"
+                    android:visibility="gone"
                     android:layout_alignParentRight="true"
                     android:layout_centerVertical="true" />
             </RelativeLayout>

+ 7 - 7
app_modular/appbooking/src/main/res/layout/add_sub_layout.xml

@@ -2,18 +2,18 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:divider="@drawable/divider_horizontal"
-    android:background="@drawable/addsubutils_add_sub_bg"
+ 
     android:orientation="horizontal">
 
     <ImageView
         android:id="@+id/ic_minus"
-        android:layout_width="40dp"
+        android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:background="@null"
         android:clickable="true"
         android:padding="@dimen/addsubutils_btn_padding"
         android:scaleType="centerInside"
-        android:src="@drawable/icon_remove" />
+        />
 
     <EditText
         android:id="@+id/et_input"
@@ -26,18 +26,18 @@
         android:singleLine="true"
         android:inputType="number"
         android:minWidth="@dimen/addsubutils_et_minwidth"
-        android:text="1"
+        android:text=""
         android:textColor="@color/addsubutils_text"
         android:textCursorDrawable="@null"
         android:textSize="@dimen/addsubutils_textsize"/>
 
     <ImageView
         android:id="@+id/ic_plus"
-        android:layout_width="@dimen/addsubutils_btn_width"
+        android:layout_width="wrap_content"
         android:layout_height="match_parent"
-        android:background="@drawable/addsubutils_right_selector"
+        android:background="@null"
         android:clickable="true"
         android:padding="@dimen/addsubutils_btn_padding"
         android:scaleType="centerInside"
-        android:src="@drawable/addsubutils_ic_plus" />
+        />
 </LinearLayout>

+ 4 - 0
app_modular/appme/src/main/java/com/uas/appme/settings/activity/BRestActivity.java

@@ -145,6 +145,10 @@ public class BRestActivity extends BaseActivity implements BRestAdapter.OnItemCl
 
 	@Override
 	public void onClick(View v) {
+		if (!CommonUtil.isNetWorkConnected(ct)) {
+			ToastMessage(getString(R.string.common_notlinknet));
+			return;
+		}
 		if (v.getId() == R.id.saveBtn) {
 			submitSave();
 		}else if (v.getId() == R.id.deleteBtn){

+ 8 - 0
app_modular/appme/src/main/java/com/uas/appme/settings/activity/CheckWagesActivity.java

@@ -76,6 +76,7 @@ public class CheckWagesActivity extends BaseActivity implements View.OnClickList
                     seconds_tv.setVisibility(View.INVISIBLE);
                     mWagesCodeBtn.setVisibility(View.VISIBLE);
                     isRun = false;
+                    SecondT = 59;
                 }
                 Log.i("HttpLogs",SecondT+"");
             }
@@ -239,6 +240,10 @@ public class CheckWagesActivity extends BaseActivity implements View.OnClickList
                 ToastMessage("请输入查询密码");
                 return;
             }
+            if (!CommonUtil.isNetWorkConnected(ct)){
+                ToastMessage(getString(R.string.common_notlinknet));
+                return;
+            }
             searchWage();
         }else if (id == R.id.cancel_tv){
             popupWindow.dismiss();
@@ -315,8 +320,11 @@ public class CheckWagesActivity extends BaseActivity implements View.OnClickList
                             .putExtra("checkYear",checkYear)
                             .putExtra("checkMonth",checkMonth)
                             .putExtra("WageDatas",o.toString()));
+                    finish();
                 }else if (o.toString().contains("reason")){
                     ToastMessage(JSON.parseObject(o.toString()).getString("reason"));
+                }else if (o.toString().contains("exceptionInfo")){
+                    ToastMessage(JSON.parseObject(o.toString()).getString("exceptionInfo"));
                 }
 
             }

+ 128 - 6
app_modular/appme/src/main/java/com/uas/appme/settings/activity/WagesDetailsActivity.java

@@ -1,15 +1,21 @@
 package com.uas.appme.settings.activity;
 
+import android.app.Activity;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.Handler;
+import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
+import android.view.WindowManager;
 import android.widget.Button;
+import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.PopupWindow;
@@ -70,6 +76,8 @@ public class WagesDetailsActivity extends BaseActivity implements View.OnClickLi
     private ImageView clear_im;
     private String master;
     private String emcode;
+    private EditText msg_et;
+    private ImageView received_im;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -106,15 +114,23 @@ public class WagesDetailsActivity extends BaseActivity implements View.OnClickLi
                             LogUtil.prinlnLongMsg("fanglh",JSON.toJSONString(kvModeList));
                         }
                     }
-                }else
-                    mEmptyLayout.showEmpty();
-            }else
-                mEmptyLayout.showEmpty();
+                }else{
+                   showEnty();
+                }
+            }else{
+                showEnty();
+            }
+
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
+    private void showEnty() {
+        received_im.setVisibility(View.GONE);
+        mEmptyLayout.showEmpty();
+    }
+
     private EmptyLayout mEmptyLayout;
     private void initView() {
         //        emcode = MyApplication.getInstance().getLoginUserId();
@@ -138,6 +154,7 @@ public class WagesDetailsActivity extends BaseActivity implements View.OnClickLi
         mEmptyLayout.setShowEmptyButton(false);
         mEmptyLayout.setShowErrorButton(false);
         mEmptyLayout.setShowLoadingButton(false);
+        received_im = (ImageView) findViewById(R.id.received_im);
 //        findViewById(R.id.h_sign_tv).setOnClickListener(this);
 
         String result = getIntent().getStringExtra("WageDatas");
@@ -185,9 +202,46 @@ public class WagesDetailsActivity extends BaseActivity implements View.OnClickLi
             }else {
                 Toast.makeText(this,"您没有签名~", Toast.LENGTH_SHORT).show();
             }
+        }else if (v.getId() == R.id.sure_tv){
+            if (StringUtil.isEmpty(msg_et.getText().toString())){
+                ToastMessage("请输入你的问题");
+                return;
+            }
+            if (!CommonUtil.isNetWorkConnected(ct)){
+                ToastMessage(getString(R.string.common_notlinknet));
+                return;
+            }
+            doErrorMsgHandle();
+        }else if (v.getId() == R.id.cancel1_tv){
+            popupWindow.dismiss();
         }
     }
 
+    private void doErrorMsgHandle() {
+//        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).isDebug(true).build(true);
+        HttpClient httpClient = new HttpClient.Builder("http://192.168.253.58:8080/ERP/").isDebug(true).build(true);
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("mobile/salary/salaryWrong.action")
+                .add("sl_id",sl_id)
+                .add("emcode",emcode)
+                .add("msg",msg_et.getText().toString())
+                .add("result",true)
+                .add("master", master)
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                if (!JSONUtil.validate(o.toString()) || o == null) return;
+                LogUtil.prinlnLongMsg("salaryWrong", o.toString()+"");
+                if (o.toString().contains("success") && JSON.parseObject(o.toString()).getBoolean("success")){
+                    ToastMessage("你的问题已提交");
+                    popupWindow.dismiss();
+                }
+
+            }
+        }));
+    }
+
     private void doNewSubmit(Bitmap pathBm, String plainpath) {
         String url = "http://192.168.253.58:8080/ERP/"+"mobile/salary/salaryBack.action";
         byte[] ppp = getBitmapByte(pathBm);
@@ -211,11 +265,10 @@ public class WagesDetailsActivity extends BaseActivity implements View.OnClickLi
                 ViewUtil.ToastMessage(ct, getString(R.string.Uploaded_successfully));
                 Log.i("doNewSubmit",JSON.parseObject(responseInfo.result).toJSONString());
                 if (JSONUtil.validate(responseInfo.result) && JSON.parseObject(responseInfo.result).getBoolean("success")) {
-                    Toast.makeText(ct,"提交成功",Toast.LENGTH_LONG).show();
+                    Toast.makeText(ct,"工资条签名提交成功",Toast.LENGTH_LONG).show();
                     closePopupWindow();
                 }
                 progressDialog.dismiss();
-                Toast.makeText(ct,getString(R.string.fangkui_success),Toast.LENGTH_LONG).show();
                 new Handler().postDelayed(new Runnable() {
                     @Override
                     public void run() {
@@ -305,4 +358,73 @@ public class WagesDetailsActivity extends BaseActivity implements View.OnClickLi
             setWindow.dismiss();
         DisplayUtil.backgroundAlpha(this, 1f);
     }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.wage_error, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.wage_error){
+           showErrorWindow();
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    private PopupWindow popupWindow;
+    private void showErrorWindow() {
+
+        // 一个自定义的布局,作为显示的内容
+        View contentView = LayoutInflater.from(ct).inflate(
+                R.layout.input_error_msg, null);
+
+        // 设置按钮的点击事件
+        msg_et = (EditText) contentView.findViewById(R.id.msg_et);
+        contentView.findViewById(R.id.cancel1_tv).setOnClickListener(this);
+        contentView.findViewById(R.id.sure_tv).setOnClickListener(this);
+
+        DisplayMetrics dm = getResources().getDisplayMetrics();
+        int w_screen = dm.widthPixels;
+        int h_screen = dm.heightPixels;
+        w_screen = DisplayUtil.dip2px(this, 300);
+        h_screen = DisplayUtil.dip2px(this, 300);
+
+        popupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
+        popupWindow.setTouchable(true);
+        popupWindow.setOutsideTouchable(false);
+        // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
+        popupWindow.setBackgroundDrawable(getResources().getDrawable(com.uas.appworks.R.drawable.pop_round_bg));
+        // 设置好参数之后再show
+        popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
+        setbg(0.4f);
+    }
+    private void setbg(float alpha) {
+        setBackgroundAlpha(this, alpha);
+        if (popupWindow == null) return;
+        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                setBackgroundAlpha(WagesDetailsActivity.this, 1f);
+            }
+        });
+    }
+    /**
+     * 设置页面的透明度
+     * 兼容华为手机(在个别华为手机上 设置透明度会不成功)
+     *
+     * @param bgAlpha 透明度   1表示不透明
+     */
+    public void setBackgroundAlpha(Activity activity, float bgAlpha) {
+        WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
+        lp.alpha = bgAlpha;
+        if (bgAlpha == 1) {
+            activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//不移除该Flag的话,在有视频的页面上的视频会出现黑屏的bug
+        } else {
+            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//此行代码主要是解决在华为手机上半透明效果无效的bug
+        }
+        activity.getWindow().setAttributes(lp);
+    }
+
 }

+ 15 - 16
app_modular/appme/src/main/res/layout/sigature_pop.xml

@@ -40,12 +40,14 @@
             android:visibility="gone"/>
 
         <RelativeLayout
+            android:id="@+id/s_rl"
             android:layout_width="match_parent"
             android:layout_height="300dp"
             android:layout_alignParentTop="true"
             android:layout_centerHorizontal="true"
-            android:layout_marginTop="20dp"
-            android:background="@color/white">
+            android:layout_marginTop="30dp"
+            android:background="@color/white"
+            >
 
             <Button
                 android:id="@+id/hscreen_btn"
@@ -85,23 +87,20 @@
                 android:layout_gravity="center_horizontal"
                 android:background="@color/white" />
 
+
         </RelativeLayout>
+
+        <TextView
+            android:layout_below="@+id/s_rl"
+            android:gravity="center"
+            android:background="@color/white"
+            android:text="签名区域"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:padding="10dp"
+            android:layout_marginRight="10dp"/>
     </RelativeLayout>
-    <View
-        android:layout_marginTop="5dp"
-        android:layout_width="match_parent"
-        android:layout_height="2px"
-        android:background="@color/item_line" />
 
-    <TextView
-        android:gravity="center"
-        android:background="@color/white"
-        android:text="签名区域"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:padding="10dp"
-        android:layout_marginLeft="10dp"
-        android:layout_marginRight="10dp"/>
     <Button
         android:id="@+id/submit_btn"
         android:layout_width="match_parent"

+ 23 - 9
app_modular/appme/src/main/res/layout/wages_details_activity.xml

@@ -5,8 +5,7 @@
     android:orientation="vertical">
     <TextView
         android:background="@color/white"
-        android:paddingLeft="10dp"
-        android:paddingRight="10dp"
+        android:padding="10dp"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="公告:本月工资发放内容包括了上个月的餐补,请大家查看明细"/>
@@ -26,14 +25,29 @@
             android:layout_height="wrap_content"
             android:orientation="vertical">
 
-            <com.core.widget.MyListView
-
-                android:id="@+id/wages_lv"
+            <RelativeLayout
                 android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:padding="10dp"
-                android:background="@color/white">
-            </com.core.widget.MyListView>
+                android:layout_height="wrap_content">
+
+                <com.core.widget.MyListView
+
+                    android:id="@+id/wages_lv"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:padding="10dp"
+                    android:background="@color/white">
+                </com.core.widget.MyListView>
+                <ImageView
+                    android:id="@+id/received_im"
+                    android:layout_alignBottom="@+id/wages_lv"
+                    android:layout_alignRight="@+id/wages_lv"
+                    android:layout_width="100dp"
+                    android:layout_height="100dp"
+                    android:src="@drawable/received"
+                    android:layout_margin="30dp"
+                    />
+            </RelativeLayout>
+
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"

+ 21 - 12
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/CustomerListActivity.java

@@ -35,6 +35,7 @@ import com.core.model.Employees;
 import com.core.model.EmployeesEntity;
 import com.core.net.http.ViewUtil;
 import com.core.utils.CommonUtil;
+import com.core.utils.ToastUtil;
 import com.core.utils.helper.AvatarHelper;
 import com.core.widget.EmptyLayout;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
@@ -87,7 +88,7 @@ public class CustomerListActivity extends BaseActivity implements View.OnClickLi
         initListener();
     }
 
-    private void initIds(){
+    private void initIds() {
 
         iv_head = (ImageView) findViewById(R.id.iv_head);
         tv_change = (TextView) findViewById(R.id.tv_change);
@@ -105,7 +106,11 @@ public class CustomerListActivity extends BaseActivity implements View.OnClickLi
         ct = this;
         getSupportActionBar().setTitle(getString(R.string.crmmain_client));
 
-        loadParams(3);
+        if (CommonUtil.isNetWorkConnected(ct)) {
+            loadParams(3);
+        } else {
+            ToastUtil.showToast(ct, R.string.networks_out);
+        }
 
         mAdapter = new BussinessDetailAdapter(ct, jsonArray);
         mlist.setAdapter(mAdapter);
@@ -155,14 +160,18 @@ public class CustomerListActivity extends BaseActivity implements View.OnClickLi
 
 
     public void changeOnChange(View v) {
-       if (v.getId() == R.id.tv_change){
-           showPopupWindow(v);
-       }
+        if (v.getId() == R.id.tv_change) {
+            showPopupWindow(v);
+        }
     }
 
     private void initData() {
         em_code = CommonUtil.getSharedPreferences(ct, "erp_username");
-        sendHttpResquest(Constants.HTTP_SUCCESS_INIT, kind, page, 0, "");
+        if (CommonUtil.isNetWorkConnected(ct)) {
+            sendHttpResquest(Constants.HTTP_SUCCESS_INIT, kind, page, 0, "");
+        } else {
+            ToastUtil.showToast(ct, R.string.networks_out);
+        }
         dbManager = new DBManager(ct);
         List<EmployeesEntity> db = dbManager.select_getEmployee(
                 new String[]{CommonUtil.getSharedPreferences(ct, "erp_master"),
@@ -195,15 +204,15 @@ public class CustomerListActivity extends BaseActivity implements View.OnClickLi
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == R.id.crm_data_add){
+        if (item.getItemId() == R.id.crm_data_add) {
             if (falg == 0) {
                 startActivity(new Intent(ct, CustomerAddActivity.class).putExtra("type", 1));//正式
             } else {
                 startActivity(new Intent(ct, CustomerAddActivity.class).putExtra("type", 0));//预录
             }
-        }else if (item.getItemId() == R.id.crm_data_find){
+        } else if (item.getItemId() == R.id.crm_data_find) {
             startActivity(new Intent(ct, CustomerListSelectActivity.class));
-        }else if (item.getItemId() == android.R.id.home){
+        } else if (item.getItemId() == android.R.id.home) {
             onBackPressed();
         }
         return true;
@@ -211,7 +220,7 @@ public class CustomerListActivity extends BaseActivity implements View.OnClickLi
 
     @Override
     public void onClick(View v) {
-        if (v.getId() == R.id.tv_count_unend){
+        if (v.getId() == R.id.tv_count_unend) {
             tv_count_total.setSelected(false);
             tv_count_end.setSelected(false);
             tv_count_unend.setSelected(true);
@@ -220,7 +229,7 @@ public class CustomerListActivity extends BaseActivity implements View.OnClickLi
 //                Crouton.makeText(this,"切换成功", 0xffff8888, 10000).show();
             page = 1;
             sendHttpResquest(Constants.HTTP_SUCCESS_INIT, kind, page, 0, "");
-        }else if (v.getId() == R.id.tv_count_end){
+        } else if (v.getId() == R.id.tv_count_end) {
             tv_count_total.setSelected(false);
             tv_count_end.setSelected(true);
             tv_count_unend.setSelected(false);
@@ -229,7 +238,7 @@ public class CustomerListActivity extends BaseActivity implements View.OnClickLi
             jsonArray.clear();
 //                Crouton.makeText(this,"切换成功", Style.CONFIRM).show();
             sendHttpResquest(Constants.HTTP_SUCCESS_INIT, kind, page, 0, "");
-        }else if (v.getId() == R.id.tv_count_total){
+        } else if (v.getId() == R.id.tv_count_total) {
             tv_count_total.setSelected(true);
             tv_count_end.setSelected(false);
             tv_count_unend.setSelected(false);

+ 71 - 64
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/SalesRankingActivity.java

@@ -22,6 +22,7 @@ import com.core.app.Constants;
 import com.core.base.BaseActivity;
 import com.core.net.http.ViewUtil;
 import com.core.utils.CommonUtil;
+import com.core.utils.ToastUtil;
 import com.core.utils.helper.AvatarHelper;
 import com.core.utils.time.wheel.DatePicker;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
@@ -44,13 +45,15 @@ import static com.uas.appworks.R.id.list_business;
  * @param:
  * @return:
  */
-public class SalesRankingActivity extends BaseActivity {
+public class
+SalesRankingActivity extends BaseActivity {
     private BussinessDetailAdapter mAdapter;
     private TextView tv_date_title;
     private PullToRefreshGridView mlist;
     private TextView tv_msg;
     private ArrayList<Business> mData = new ArrayList<Business>();
     private Context ct;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -64,12 +67,16 @@ public class SalesRankingActivity extends BaseActivity {
     private void initListener() {
         mlist.setEnabled(false);
         mlist.setMode(PullToRefreshBase.Mode.DISABLED);
-     
+
     }
 
     private void initData() {
-        sendHttpResquest(Constants.HTTP_SUCCESS_INIT,DateFormatUtil.getStrDate4Date(new Date(),
-                "yyyyMM"));
+        if (CommonUtil.isNetWorkConnected(ct)) {
+            sendHttpResquest(Constants.HTTP_SUCCESS_INIT, DateFormatUtil.getStrDate4Date(new Date(),
+                    "yyyyMM"));
+        } else {
+            ToastUtil.showToast(ct, R.string.networks_out);
+        }
         for (int i = 0; i < 22; i++) {
             Business model = new Business();
             model.setNum("013223" + i);
@@ -90,8 +97,8 @@ public class SalesRankingActivity extends BaseActivity {
         mlist = (PullToRefreshGridView) findViewById(list_business);
         tv_msg = (TextView) findViewById(R.id.tv_msg);
 
-        tv_date_title.setText(DateFormatUtil.getStrDate4Date(new Date(),"yyyy年MM月")+getString(R.string.crmmain_wall_of_fame));
-       
+        tv_date_title.setText(DateFormatUtil.getStrDate4Date(new Date(), "yyyy年MM月") + getString(R.string.crmmain_wall_of_fame));
+
     }
 
 
@@ -100,16 +107,17 @@ public class SalesRankingActivity extends BaseActivity {
         getMenuInflater().inflate(R.menu.main_sale_ranking, menu);
         return true;
     }
+
     /**
-      * @desc:日历类
-      * @author:Arison on 2016/8/1
-      */
+     * @desc:日历类
+     * @author:Arison on 2016/8/1
+     */
     private Calendar calendar = Calendar.getInstance();
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() ==  R.id.sale_date_select){
-            DatePicker picker = new DatePicker(this,DatePicker.YEAR_MONTH);
+        if (item.getItemId() == R.id.sale_date_select) {
+            DatePicker picker = new DatePicker(this, DatePicker.YEAR_MONTH);
             picker.setRange(1950, 2030);
             picker.setAnimationStyle(R.style.Animation_CustomPopup);
             picker.setSelectedItem(
@@ -118,13 +126,13 @@ public class SalesRankingActivity extends BaseActivity {
             picker.setOnDatePickListener(new DatePicker.OnYearMonthPickListener() {
                 @Override
                 public void onDatePicked(String year, String month) {
-                    sendHttpResquest(Constants.HTTP_SUCCESS_INIT,year+month);
-                    tv_date_title.setText(year+getString(R.string.shorthand_year)+month+getString(R.string.sShorthand_month)
-                            +getString(R.string.crmmain_wall_of_fame));
+                    sendHttpResquest(Constants.HTTP_SUCCESS_INIT, year + month);
+                    tv_date_title.setText(year + getString(R.string.shorthand_year) + month + getString(R.string.sShorthand_month)
+                            + getString(R.string.crmmain_wall_of_fame));
                 }
             });
             picker.show();
-        }else if (item.getItemId() == android.R.id.home){
+        } else if (item.getItemId() == android.R.id.home) {
             onBackPressed();
         }
         return true;
@@ -143,7 +151,7 @@ public class SalesRankingActivity extends BaseActivity {
 
         @Override
         public int getCount() {
-            return mdata==null?0:mdata.size();
+            return mdata == null ? 0 : mdata.size();
         }
 
         @Override
@@ -162,19 +170,19 @@ public class SalesRankingActivity extends BaseActivity {
             if (convertView == null) {
                 convertView = inflater.inflate(R.layout.item_sale_ranking, null);
                 holder = new ViewHolder();
-                holder.tv_money= (TextView) convertView.findViewById(R.id.tv_sale_num);
-                holder.tv_name= (TextView) convertView.findViewById(R.id.tv_sale_name);
-                holder.tv_depart= (TextView) convertView.findViewById(R.id.tv_sale_dep);
-                holder.iv_head=(ImageView)convertView.findViewById(R.id.iv_sale_head);
-                holder.tv_desc=(TextView)convertView.findViewById(R.id.tv_sale_desc);
+                holder.tv_money = (TextView) convertView.findViewById(R.id.tv_sale_num);
+                holder.tv_name = (TextView) convertView.findViewById(R.id.tv_sale_name);
+                holder.tv_depart = (TextView) convertView.findViewById(R.id.tv_sale_dep);
+                holder.iv_head = (ImageView) convertView.findViewById(R.id.iv_sale_head);
+                holder.tv_desc = (TextView) convertView.findViewById(R.id.tv_sale_desc);
                 convertView.setTag(holder);
             } else {
                 holder = (ViewHolder) convertView.getTag();
             }
             holder.tv_name.setText(mdata.getJSONObject(position).getString("name"));
-            holder.tv_money.setText(mdata.getJSONObject(position).getFloatValue("id")+"万元");
+            holder.tv_money.setText(mdata.getJSONObject(position).getFloatValue("id") + "万元");
             holder.tv_depart.setText(mdata.getJSONObject(position).getString("position")
-            +"\n"+mdata.getJSONObject(position).getString("depart"));
+                    + "\n" + mdata.getJSONObject(position).getString("depart"));
             holder.tv_desc.setText(mdata.getJSONObject(position).getString("desc"));
             AvatarHelper.getInstance().display(
                     mdata.getJSONObject(position).getString("imId")
@@ -193,45 +201,44 @@ public class SalesRankingActivity extends BaseActivity {
     }
 
 
-
-    private Handler mHandler=new Handler(){
+    private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
-            switch (msg.what){
+            switch (msg.what) {
                 case Constants.HTTP_SUCCESS_INIT:
                     progressDialog.dismiss();
                     Log.i(TAG, "handleMessage:" + msg.getData().getString("result"));
-                    JSONObject ranklist= JSON.parseObject(msg.getData().getString("result")).getJSONObject("ranklist");
-                    JSONArray sales =ranklist.getJSONArray("sales");
-                    JSONArray profits =ranklist.getJSONArray("profits");
-                    if (sales!=null&&profits!=null){
-                        JSONArray rootArray=new JSONArray();
-                        JSONObject s=new JSONObject();
-                        JSONObject p=new JSONObject();
-                        
-                        float s_id=sales.getFloatValue(0);
-                        String s_name=sales.getString(1);
-                        String s_position=sales.getString(2);
-                        String s_depart=sales.getString(3);
-                        int s_imid=sales.getIntValue(4);
-                        s.put("id",s_id);
-                        s.put("name",s_name);
-                        s.put("position",s_position);
-                        s.put("depart",s_depart);
-                        s.put("imId",s_imid);
-                        s.put("desc","销售总额冠军");
-                        
-                        float p_id=profits.getFloatValue(0);
-                        String p_name=profits.getString(1);
-                        String p_position=profits.getString(2);
-                        String p_depart=profits.getString(3);
-                        int p_imid=profits.getIntValue(4);
-                        p.put("id",p_id);
-                        p.put("name",p_name);
-                        p.put("position",p_position);
-                        p.put("depart",p_depart);
+                    JSONObject ranklist = JSON.parseObject(msg.getData().getString("result")).getJSONObject("ranklist");
+                    JSONArray sales = ranklist.getJSONArray("sales");
+                    JSONArray profits = ranklist.getJSONArray("profits");
+                    if (sales != null && profits != null) {
+                        JSONArray rootArray = new JSONArray();
+                        JSONObject s = new JSONObject();
+                        JSONObject p = new JSONObject();
+
+                        float s_id = sales.getFloatValue(0);
+                        String s_name = sales.getString(1);
+                        String s_position = sales.getString(2);
+                        String s_depart = sales.getString(3);
+                        int s_imid = sales.getIntValue(4);
+                        s.put("id", s_id);
+                        s.put("name", s_name);
+                        s.put("position", s_position);
+                        s.put("depart", s_depart);
+                        s.put("imId", s_imid);
+                        s.put("desc", "销售总额冠军");
+
+                        float p_id = profits.getFloatValue(0);
+                        String p_name = profits.getString(1);
+                        String p_position = profits.getString(2);
+                        String p_depart = profits.getString(3);
+                        int p_imid = profits.getIntValue(4);
+                        p.put("id", p_id);
+                        p.put("name", p_name);
+                        p.put("position", p_position);
+                        p.put("depart", p_depart);
                         p.put("imId", p_imid);
-                        p.put("desc","毛利润冠军");
+                        p.put("desc", "毛利润冠军");
                         rootArray.add(0, s);
                         rootArray.add(1, p);
 
@@ -239,12 +246,12 @@ public class SalesRankingActivity extends BaseActivity {
                         mlist.setAdapter(mAdapter);
                         mlist.setVisibility(View.VISIBLE);
                         tv_msg.setVisibility(View.GONE);
-                    }else{
+                    } else {
                         //空数据处理
-                        JSONArray rootArray=new JSONArray();
+                        JSONArray rootArray = new JSONArray();
                         mAdapter = new BussinessDetailAdapter(ct, rootArray);
                         mlist.setAdapter(mAdapter);
-                        
+
                         mlist.setVisibility(View.GONE);
                         tv_msg.setText(getString(R.string.crm_nodatas));
                         tv_msg.setVisibility(View.VISIBLE);
@@ -259,12 +266,12 @@ public class SalesRankingActivity extends BaseActivity {
         }
     };
 
-    private void sendHttpResquest(int what,String date){
+    private void sendHttpResquest(int what, String date) {
         progressDialog.show();
-        String url= CommonUtil.getAppBaseUrl(ct)+"mobile/crm/getRankList.action";
-        Map<String,Object> params=new HashMap<>();
-        params.put("condition", "and to_char(pi_date,'yyyymm')="+ date);
-        LinkedHashMap<String , Object> headers=new LinkedHashMap<>();
+        String url = CommonUtil.getAppBaseUrl(ct) + "mobile/crm/getRankList.action";
+        Map<String, Object> params = new HashMap<>();
+        params.put("condition", "and to_char(pi_date,'yyyymm')=" + date);
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, what, null, null, "post");
     }

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

@@ -28,6 +28,7 @@ import com.core.model.SelectEmUser;
 import com.core.net.http.ViewUtil;
 import com.core.utils.CommonUtil;
 import com.core.utils.RecognizerDialogUtil;
+import com.core.utils.ToastUtil;
 import com.core.utils.time.wheel.DateTimePicker;
 import com.core.widget.view.selectcalendar.SelectCalendarActivity;
 import com.core.xmpp.utils.audio.voicerecognition.JsonParser;
@@ -247,9 +248,14 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
         if (item.getItemId() == android.R.id.home) {
             onBackPressed();
         } else if (item.getItemId() == R.id.save) {
-            if (save == 0 && MyApplication.getInstance().isNetworkActive()) {
-                dosaveJudge();
+            if (MyApplication.getInstance().isNetworkActive()) {
+                if (save == 0) {
+                    dosaveJudge();
+                }
+            } else {
+                ToastUtil.showToast(ct, R.string.networks_out);
             }
+
         }
         return true;
     }

+ 1 - 5
app_modular/appworks/src/main/java/com/uas/appworks/activity/WorkModuleSortActivity.java

@@ -113,10 +113,8 @@ public class WorkModuleSortActivity extends BaseMVPActivity<WorkPlatPresenter> i
             @Override
             public void onDeleteItemClick(View view, int position) {
                 if (mAddWorkMenuBeans != null && mDeleteWorkMenuBeans != null && mAddWorkMenuBeans.size() > 0) {
-                    mDeleteWorkMenuBeans.add(mAddWorkMenuBeans.get(position));
-//                    mWorkModuleSortDeleteAdapter.notifyItemInserted(mDeleteWorkMenuBeans.size() - 1);
+                    mDeleteWorkMenuBeans.add(0, mAddWorkMenuBeans.get(position));
                     mAddWorkMenuBeans.remove(position);
-//                    mWorkModuleSortAddAdapter.notifyItemRemoved(position);
                     mWorkModuleSortAddAdapter.notifyDataSetChanged();
                     mWorkModuleSortDeleteAdapter.notifyDataSetChanged();
                     visiableOrGone();
@@ -129,9 +127,7 @@ public class WorkModuleSortActivity extends BaseMVPActivity<WorkPlatPresenter> i
             public void onAddItemClick(View view, int position) {
                 if (mDeleteWorkMenuBeans != null && mAddWorkMenuBeans != null && mDeleteWorkMenuBeans.size() > 0) {
                     mAddWorkMenuBeans.add(mDeleteWorkMenuBeans.get(position));
-//                    mWorkModuleSortAddAdapter.notifyItemInserted(mAddWorkMenuBeans.size() - 1);
                     mDeleteWorkMenuBeans.remove(position);
-//                    mWorkModuleSortDeleteAdapter.notifyItemRemoved(position);
                     mWorkModuleSortAddAdapter.notifyDataSetChanged();
                     mWorkModuleSortDeleteAdapter.notifyDataSetChanged();
                     visiableOrGone();

+ 15 - 2
app_modular/appworks/src/main/java/com/uas/appworks/adapter/WorkFuncSetChildAdapter.java

@@ -54,12 +54,25 @@ public class WorkFuncSetChildAdapter extends RecyclerView.Adapter<WorkFuncSetChi
 
     @Override
     public void onBindViewHolder(final ChildViewHolder holder, final int position) {
-        holder.mTextView.setText(mModuleListBeans.get(position).getMenuName());
+        if (mModuleListBeans.get(position).isLocalMenu()) {
+            try {
+                holder.mTextView.setText(mResources.getIdentifier(mModuleListBeans.get(position).getMenuName(), "string", mContext.getPackageName()));
+            } catch (Exception e) {
+                holder.mTextView.setText(mModuleListBeans.get(position).getMenuName());
+            }
+        } else {
+            holder.mTextView.setText(mModuleListBeans.get(position).getMenuName());
+        }
+
         if (TextUtils.isEmpty(mModuleListBeans.get(position).getMenuIcon())) {
             holder.mImageView.setImageResource(R.drawable.defaultpic);
         } else {
             if (mModuleListBeans.get(position).isLocalMenu()) {
-                holder.mImageView.setImageResource(mResources.getIdentifier(mModuleListBeans.get(position).getMenuIcon(), "drawable", mContext.getPackageName()));
+                try {
+                    holder.mImageView.setImageResource(mResources.getIdentifier(mModuleListBeans.get(position).getMenuIcon(), "drawable", mContext.getPackageName()));
+                } catch (Exception e) {
+                    holder.mImageView.setImageResource(R.drawable.defaultpic);
+                }
             } else {
                 ImageLoaderUtil.getInstance().loadImage(mModuleListBeans.get(position).getMenuIcon(), holder.mImageView);
             }

+ 9 - 4
app_modular/appworks/src/main/java/com/uas/appworks/adapter/WorkFuncSetParentAdapter.java

@@ -7,13 +7,11 @@ import android.os.Build;
 import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.helper.ItemTouchHelper;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
-import com.core.widget.RecyclerViewGridDivider;
 import com.uas.appworks.R;
 import com.uas.appworks.model.bean.WorkMenuBean;
 
@@ -52,10 +50,17 @@ public class WorkFuncSetParentAdapter extends RecyclerView.Adapter<WorkFuncSetPa
 
     @Override
     public void onBindViewHolder(final ParentViewHolder holder, final int position) {
-        Log.d("ParentAdapter", "onBindViewHolder");
         holder.setIsRecyclable(false);
         WorkMenuBean workMenuBean = mWorkMenuBeans.get(position);
-        holder.titleTextView.setText(workMenuBean.getModuleName());
+        if (workMenuBean.isLocalModule()) {
+            try {
+                holder.titleTextView.setText(mResources.getIdentifier(workMenuBean.getModuleName(), "string", mContext.getPackageName()));
+            } catch (Exception e) {
+                holder.titleTextView.setText(workMenuBean.getModuleName());
+            }
+        } else {
+            holder.titleTextView.setText(workMenuBean.getModuleName());
+        }
         final List<WorkMenuBean.ModuleListBean> mModuleListBeans = workMenuBean.getModuleList();
         final WorkFuncSetChildAdapter mChildAdapter = new WorkFuncSetChildAdapter(mContext, mModuleListBeans);
         GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 4);

+ 12 - 1
app_modular/appworks/src/main/java/com/uas/appworks/adapter/WorkModuleSortAddAdapter.java

@@ -1,6 +1,7 @@
 package com.uas.appworks.adapter;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -24,6 +25,7 @@ import java.util.List;
 public class WorkModuleSortAddAdapter extends RecyclerView.Adapter<WorkModuleSortAddAdapter.MyViewHolder> {
     private Context mContext;
     private List<WorkMenuBean> mWorkMenuBeans;
+    private Resources mResources;
     private OnItemClickListener mOnItemClickListener;
     private OnItemLongClickListener mOnItemLongClickListener;
     private OnItemDragListener mOnItemDragListener;
@@ -52,6 +54,7 @@ public class WorkModuleSortAddAdapter extends RecyclerView.Adapter<WorkModuleSor
     public WorkModuleSortAddAdapter(Context context, List<WorkMenuBean> workMenuBeans) {
         mContext = context;
         this.mWorkMenuBeans = workMenuBeans;
+        mResources = mContext.getResources();
     }
 
     class MyViewHolder extends RecyclerView.ViewHolder {
@@ -77,7 +80,15 @@ public class WorkModuleSortAddAdapter extends RecyclerView.Adapter<WorkModuleSor
     @Override
     public void onBindViewHolder(final MyViewHolder holder, final int position) {
         final WorkMenuBean msg = mWorkMenuBeans.get(position);
-        holder.contentTv.setText(msg.getModuleName());
+        if (msg.isLocalModule()){
+            try {
+                holder.contentTv.setText(mResources.getIdentifier(msg.getModuleName(), "string", mContext.getPackageName()));
+            } catch (Exception e) {
+                holder.contentTv.setText(msg.getModuleName());
+            }
+        }else {
+            holder.contentTv.setText(msg.getModuleName());
+        }
 
         holder.wholeItem.setOnClickListener(new View.OnClickListener() {
             @Override

+ 13 - 1
app_modular/appworks/src/main/java/com/uas/appworks/adapter/WorkModuleSortDeleteAdapter.java

@@ -1,6 +1,7 @@
 package com.uas.appworks.adapter;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -21,6 +22,7 @@ import java.util.List;
 
 public class WorkModuleSortDeleteAdapter extends RecyclerView.Adapter<WorkModuleSortDeleteAdapter.MyViewHolder> {
     private Context mContext;
+    private Resources mResources;
     private List<WorkMenuBean> mWorkMenuBeans;
     private OnAddItemClickListener mOnAddItemClickListener;
 
@@ -31,6 +33,7 @@ public class WorkModuleSortDeleteAdapter extends RecyclerView.Adapter<WorkModule
     public WorkModuleSortDeleteAdapter(Context context, List<WorkMenuBean> workMenuBeans) {
         mContext = context;
         this.mWorkMenuBeans = workMenuBeans;
+        mResources = mContext.getResources();
     }
 
     public void setOnAddItemClickListener(OnAddItemClickListener onAddItemClickListener) {
@@ -45,7 +48,16 @@ public class WorkModuleSortDeleteAdapter extends RecyclerView.Adapter<WorkModule
 
     @Override
     public void onBindViewHolder(final MyViewHolder holder, final int position) {
-        holder.contentTextView.setText(mWorkMenuBeans.get(position).getModuleName());
+        if (mWorkMenuBeans.get(position).isLocalModule()) {
+            try {
+                holder.contentTextView.setText(mResources.getIdentifier(mWorkMenuBeans.get(position).getModuleName(), "string", mContext.getPackageName()));
+            } catch (Exception e) {
+                holder.contentTextView.setText(mWorkMenuBeans.get(position).getModuleName());
+            }
+
+        } else {
+            holder.contentTextView.setText(mWorkMenuBeans.get(position).getModuleName());
+        }
         holder.addImageView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {

+ 43 - 4
app_modular/appworks/src/main/java/com/uas/appworks/model/WorkPlatModel.java

@@ -1,6 +1,7 @@
 package com.uas.appworks.model;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.support.annotation.NonNull;
 
 import com.alibaba.fastjson.JSON;
@@ -32,6 +33,7 @@ import java.util.List;
 public class WorkPlatModel implements IWorkPlatModel {
     private List<WorkMenuBean> mMenuTypeBeen;
     private HttpClient mHttpClient;
+    private Resources mResources;
 
     @Override
     public void uasRequest(Context context, final Request request, final WorkPlatCallback workCallback) {
@@ -105,6 +107,7 @@ public class WorkPlatModel implements IWorkPlatModel {
     }
 
     private void loadWorkMenuCache(final Context context, final WorkPlatCallback workCallback, final int what) {
+        mResources = context.getResources();
         String cacheJson = CommonUtil.getUniqueSharedPreferences(context, Constants.WORK_MENU_CACHE);
         String localJson = null;
         String role = CommonUtil.getUserRole();
@@ -126,13 +129,31 @@ public class WorkPlatModel implements IWorkPlatModel {
             // TODO: 2017/11/15 循环逻辑待优化
             for (WorkMenuBean cacheWorkMenuBean : cacheWorkMenuBeans) {
                 String cacheModuleTag = cacheWorkMenuBean.getModuleTag();
-                String cacheModuleName = cacheWorkMenuBean.getModuleName();
+                String cacheModuleName = null;
+                if (cacheWorkMenuBean.isLocalModule()) {
+                    try {
+                        cacheModuleName = context.getString(mResources.getIdentifier(cacheWorkMenuBean.getModuleName(), "string", context.getPackageName()));
+                    } catch (Exception e) {
+                        cacheModuleName = cacheWorkMenuBean.getModuleName();
+                    }
+                } else {
+                    cacheModuleName = cacheWorkMenuBean.getModuleName();
+                }
                 List<WorkMenuBean.ModuleListBean> cacheTypeList = cacheWorkMenuBean.getModuleList();
                 boolean isWorkMenuExist = false;
 
                 for (WorkMenuBean localWorkMenuBean : localWorkMenuBeans) {
                     String localModuleTag = localWorkMenuBean.getModuleTag();
-                    String localModuleName = localWorkMenuBean.getModuleName();
+                    String localModuleName = null;
+                    if (localWorkMenuBean.isLocalModule()) {
+                        try {
+                            localModuleName = context.getString(mResources.getIdentifier(localWorkMenuBean.getModuleName(), "string", context.getPackageName()));
+                        } catch (Exception e) {
+                            localModuleName = localWorkMenuBean.getModuleName();
+                        }
+                    } else {
+                        localModuleName = localWorkMenuBean.getModuleName();
+                    }
                     List<WorkMenuBean.ModuleListBean> localModuleList = localWorkMenuBean.getModuleList();
                     if (localModuleName.equals(cacheModuleName)) {
                         isWorkMenuExist = true;
@@ -195,10 +216,28 @@ public class WorkPlatModel implements IWorkPlatModel {
             for (WorkMenuBean localWorkMenuBean : localWorkMenuBeans) {
                 boolean isExist = false;
                 String localModuleTag = localWorkMenuBean.getModuleTag();
-                String localModuleName = localWorkMenuBean.getModuleName();
+                String localModuleName = null;
+                if (localWorkMenuBean.isLocalModule()) {
+                    try {
+                        localModuleName = context.getString(mResources.getIdentifier(localWorkMenuBean.getModuleName(), "string", context.getPackageName()));
+                    } catch (Exception e) {
+                        localModuleName = localWorkMenuBean.getModuleName();
+                    }
+                } else {
+                    localModuleName = localWorkMenuBean.getModuleName();
+                }
                 for (WorkMenuBean workMenuBean : mMenuTypeBeen) {
                     String moduleTag = workMenuBean.getModuleTag();
-                    String moduleName = workMenuBean.getModuleName();
+                    String moduleName = null;
+                    if (workMenuBean.isLocalModule()) {
+                        try {
+                            moduleName = context.getString(mResources.getIdentifier(workMenuBean.getModuleName(), "string", context.getPackageName()));
+                        } catch (Exception e) {
+                            moduleName = workMenuBean.getModuleName();
+                        }
+                    } else {
+                        moduleName = workMenuBean.getModuleName();
+                    }
                     if (localModuleName.equals(moduleName)) {
                         isExist = true;
                         break;