Browse Source

工作台备份

raomeng 8 years ago
parent
commit
54a1666210
100 changed files with 1841 additions and 113 deletions
  1. 28 8
      WeiChat/src/main/AndroidManifest.xml
  2. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  3. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  4. 83 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkMenuChildAdapter.java
  5. 224 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkMenuParentAdapter.java
  6. 316 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorkPlatFragment.java
  7. 4 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/im/UserRoleUtils.java
  8. 2 1
      WeiChat/src/main/res/layout/activity_client.xml
  9. 37 34
      WeiChat/src/main/res/layout/activity_oamain.xml
  10. 16 0
      WeiChat/src/main/res/layout/fragment_work.xml
  11. 36 0
      WeiChat/src/main/res/layout/item_work_menu_child.xml
  12. 36 0
      WeiChat/src/main/res/layout/item_work_parent_layout.xml
  13. 308 0
      app_core/common/src/main/assets/work_menu.json
  14. 173 0
      app_core/common/src/main/assets/work_menu_b2b.json
  15. 56 0
      app_core/common/src/main/assets/work_menu_personal.json
  16. 17 6
      app_core/common/src/main/java/com/core/app/Constants.java
  17. 112 0
      app_core/common/src/main/java/com/core/base/activity/BaseMVPActivity.java
  18. 14 0
      app_core/common/src/main/java/com/core/base/callback/BaseCallback.java
  19. 234 0
      app_core/common/src/main/java/com/core/base/fragment/BaseMVPFragment.java
  20. 10 0
      app_core/common/src/main/java/com/core/base/model/BaseModel.java
  21. 16 0
      app_core/common/src/main/java/com/core/base/presenter/BasePresenter.java
  22. 13 0
      app_core/common/src/main/java/com/core/base/view/BaseView.java
  23. 54 52
      app_core/common/src/main/java/com/core/net/http/ViewUtil.java
  24. 46 2
      app_core/common/src/main/java/com/core/utils/CommonUtil.java
  25. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_attendance_statistics.png
  26. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_b2b_commerce.png
  27. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_backlog.png
  28. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_business_manage.png
  29. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_business_travel_service.png
  30. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_charitable_donations.png
  31. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_customer_manage.png
  32. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_customer_visit.png
  33. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_data_inquiry.png
  34. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_expense_account.png
  35. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_func_manage.png
  36. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_honor_rank.png
  37. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_leave_request.png
  38. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_meeting_manage.png
  39. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_outwork_sign.png
  40. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_overtime_request.png
  41. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_panel_set.png
  42. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_punch_clock.png
  43. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_real_time_subs.png
  44. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_report_statistics.png
  45. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_salary_bill.png
  46. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_sales_data.png
  47. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_special_attendance.png
  48. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_subs_manage.png
  49. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_subscribe_secretary.png
  50. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_travel_request.png
  51. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_usoft_mall.png
  52. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_uu_sports.png
  53. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_work_approval.png
  54. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_work_calendar.png
  55. BIN
      app_core/common/src/main/res/drawable-hdpi/ic_work_work_report.png
  56. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_attendance_statistics.png
  57. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_b2b_commerce.png
  58. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_backlog.png
  59. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_business_manage.png
  60. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_business_travel_service.png
  61. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_charitable_donations.png
  62. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_customer_manage.png
  63. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_customer_visit.png
  64. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_data_inquiry.png
  65. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_expense_account.png
  66. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_func_manage.png
  67. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_honor_rank.png
  68. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_leave_request.png
  69. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_meeting_manage.png
  70. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_outwork_sign.png
  71. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_overtime_request.png
  72. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_panel_set.png
  73. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_punch_clock.png
  74. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_real_time_subs.png
  75. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_report_statistics.png
  76. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_salary_bill.png
  77. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_sales_data.png
  78. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_special_attendance.png
  79. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_subs_manage.png
  80. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_subscribe_secretary.png
  81. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_travel_request.png
  82. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_usoft_mall.png
  83. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_uu_sports.png
  84. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_work_approval.png
  85. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_work_calendar.png
  86. BIN
      app_core/common/src/main/res/drawable-xhdpi/ic_work_work_report.png
  87. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_attendance_statistics.png
  88. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_b2b_commerce.png
  89. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_backlog.png
  90. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_business_manage.png
  91. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_business_travel_service.png
  92. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_charitable_donations.png
  93. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_customer_manage.png
  94. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_customer_visit.png
  95. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_data_inquiry.png
  96. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_expense_account.png
  97. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_func_manage.png
  98. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_honor_rank.png
  99. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_leave_request.png
  100. BIN
      app_core/common/src/main/res/drawable-xxhdpi/ic_work_meeting_manage.png

+ 28 - 8
WeiChat/src/main/AndroidManifest.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.xzjmyk.pm.activity"
-    android:versionCode="116"
-    android:versionName="5.9.2">
+<manifest package="com.xzjmyk.pm.activity"
+          xmlns:android="http://schemas.android.com/apk/res/android"
+          android:versionCode="116"
+          android:versionName="5.9.2">
 
     <uses-sdk
         android:minSdkVersion="11"
@@ -565,7 +565,12 @@
         <activity android:name=".ui.erp.activity.CompanyActivity" />
 
         <activity android:name=".ui.circle.PhoneSelectActivity" />
-        <activity android:name=".ui.erp.activity.crm.ClientActivity" />
+        <activity android:name=".ui.erp.activity.crm.ClientActivity">
+            <intent-filter>
+                <action android:name="com.modular.crm.ClientActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
         <activity android:name=".ApplySubscribeActivity" />
         <!-- android:theme="@style/Theme.AppCompat.NoActionBar" /> -->
 
@@ -934,7 +939,12 @@
         <activity
             android:name=".ui.erp.activity.PlatLeaveAddActivity"
             android:label="@string/vacation_doc"
-            android:windowSoftInputMode="adjustPan" />
+            android:windowSoftInputMode="adjustPan">
+            <intent-filter>
+                <action android:name="com.modular.oa.PlatLeaveAddActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
         <activity
             android:name=".ui.platform.activity.ChangeDealManActivity"
             android:label="导航">
@@ -1031,8 +1041,18 @@
         <activity android:name=".ui.me.TemperatureActivity" />
 
         <!--数据统计,报表查询-->
-        <activity android:name=".ui.erp.activity.datainquiry.activity.ReportStatisticsActivity" />
-        <activity android:name=".ui.erp.activity.datainquiry.activity.DataInquiryActivity" />
+        <activity android:name=".ui.erp.activity.datainquiry.activity.ReportStatisticsActivity">
+            <intent-filter>
+                <action android:name="com.modular.company.ReportStatisticsActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <activity android:name=".ui.erp.activity.datainquiry.activity.DataInquiryActivity">
+            <intent-filter>
+                <action android:name="com.modular.company.DataInquiryActivity" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
         <activity
             android:name=".ui.erp.activity.datainquiry.activity.DataInquiryListActivity"
             android:windowSoftInputMode="adjustPan" />

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

@@ -88,7 +88,7 @@ import com.uas.appme.pedometer.utils.StepUtils;
 import com.uas.appme.settings.activity.FeedbackActivity;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.circle.BusinessCircleFragment;
-import com.xzjmyk.pm.activity.ui.erp.fragment.WorksFragment;
+import com.xzjmyk.pm.activity.ui.erp.fragment.WorkPlatFragment;
 import com.xzjmyk.pm.activity.ui.find.MyFriendFragment;
 import com.xzjmyk.pm.activity.ui.me.MeFragment;
 import com.xzjmyk.pm.activity.ui.me.ScreenListener;
@@ -142,7 +142,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 	private Fragment mLastFragment;
 	private MessageFragment mMessageFragment;
 	private MyFriendFragment mMyFriendFragment;//我的朋友---相互关注,单项关注,房间
-	private WorksFragment mWorksFragment;//工作
+	private WorkPlatFragment mWorksFragment;//工作
 	private GroupChatFragment mGroupChatFragment;//群聊
 	private MeFragment mMeFragment;//我
 	private ContactsFragment mBusinessCircleFragment;
@@ -293,10 +293,10 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 
 			} else if (checkedId == R.id.main_tab_three) {  //点击工作选项
 				if (mWorksFragment == null) {
-					mWorksFragment = new WorksFragment();
+					mWorksFragment = new WorkPlatFragment();
 				}
 				changeFragment(mWorksFragment, TAG_NEARBY);
-				getSupportActionBar().setTitle(R.string.nearby);
+				getSupportActionBar().setTitle(R.string.usoft_science);
 				//TODO 当前隐藏新功能提醒红点
 				main_tab_three_tv.setVisibility(View.INVISIBLE);
 				PreferenceUtils.putInt(MainActivity.NEW_FUNCTION_NOTICE, 1);
@@ -897,7 +897,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 		mLastFragment = getSupportFragmentManager().findFragmentById(R.id.main_content);
 		mMessageFragment = (MessageFragment) getSupportFragmentManager().findFragmentByTag(TAG_MESSAGE);
 		mMyFriendFragment = (MyFriendFragment) getSupportFragmentManager().findFragmentByTag(TAG_MY);
-		mWorksFragment = (WorksFragment) getSupportFragmentManager().findFragmentByTag(TAG_NEARBY);
+		mWorksFragment = (WorkPlatFragment) getSupportFragmentManager().findFragmentByTag(TAG_NEARBY);
 		mGroupChatFragment = (GroupChatFragment) getSupportFragmentManager().findFragmentByTag(TAG_GROUP_CHAT);
 		mMeFragment = (MeFragment) getSupportFragmentManager().findFragmentByTag(TAG_ME);
 		mBusinessCircleFragment = (ContactsFragment) getSupportFragmentManager().findFragmentByTag(TAG_BusinessCircle);

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

@@ -474,7 +474,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
 
         doShowSpecialView();//TODO 红点啥的和版本新功能有关的都写在这里吧
         //获取动态表单caller
-        loadOrdersCall();
+//        loadOrdersCall();
 
     }
 

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

@@ -0,0 +1,83 @@
+package com.xzjmyk.pm.activity.ui.erp.adapter;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.me.imageloader.ImageLoaderUtil;
+import com.uas.appworks.model.bean.WorkMenuBean;
+import com.xzjmyk.pm.activity.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WorkMenuChildAdapter extends BaseAdapter {
+
+    private List<WorkMenuBean.ModuleListBean> objects = new ArrayList<WorkMenuBean.ModuleListBean>();
+
+    private Context context;
+    private LayoutInflater layoutInflater;
+    private Resources mResources;
+
+    public WorkMenuChildAdapter(Context context, List<WorkMenuBean.ModuleListBean> objects) {
+        this.context = context;
+        this.objects = objects;
+        this.layoutInflater = LayoutInflater.from(context);
+        mResources = context.getResources();
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public WorkMenuBean.ModuleListBean getItem(int position) {
+        return objects.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = layoutInflater.inflate(R.layout.item_work_menu_child, null);
+            convertView.setTag(new ViewHolder(convertView));
+        }
+        initializeViews((WorkMenuBean.ModuleListBean) getItem(position), (ViewHolder) convertView.getTag());
+        return convertView;
+    }
+
+    private void initializeViews(WorkMenuBean.ModuleListBean object, ViewHolder holder) {
+        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()));
+            } else {
+                ImageLoaderUtil.getInstance().loadImage(object.getMenuIcon(), holder.workMenuChildIconIv);
+            }
+        }
+
+    }
+
+    protected class ViewHolder {
+        private ImageView workMenuChildIconIv;
+        private TextView workMenuChildNameTv;
+
+        public ViewHolder(View view) {
+            workMenuChildIconIv = (ImageView) view.findViewById(R.id.work_menu_child_icon_iv);
+            workMenuChildNameTv = (TextView) view.findViewById(R.id.work_menu_child_name_tv);
+        }
+    }
+}

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

@@ -0,0 +1,224 @@
+package com.xzjmyk.pm.activity.ui.erp.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.common.data.StringUtil;
+import com.common.preferences.PreferenceUtils;
+import com.core.api.wxapi.ApiPlatform;
+import com.core.api.wxapi.ApiUAS;
+import com.core.api.wxapi.ApiUtils;
+import com.core.app.AppConfig;
+import com.core.app.Constants;
+import com.core.utils.CommonUtil;
+import com.core.utils.ToastUtil;
+import com.core.widget.view.MyGridView;
+import com.uas.appworks.model.bean.WorkMenuBean;
+import com.xzjmyk.pm.activity.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WorkMenuParentAdapter extends BaseAdapter {
+    private List<WorkMenuBean> objects = new ArrayList<WorkMenuBean>();
+    private Context context;
+    private LayoutInflater layoutInflater;
+    private WorkMenuChildAdapter mWorkMenuChildAdapter;
+    private OnAddFuncClickListener mOnAddFuncClickListener;
+    private boolean isB2b = false;
+
+    public WorkMenuParentAdapter(Context context, List<WorkMenuBean> objects) {
+        this.context = context;
+        this.objects = objects;
+        this.layoutInflater = LayoutInflater.from(context);
+        isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
+    }
+
+    public void setOnAddFuncClickListener(OnAddFuncClickListener onAddFuncClickListener) {
+        mOnAddFuncClickListener = onAddFuncClickListener;
+    }
+
+    public List<WorkMenuBean> getObjects() {
+        return objects;
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public WorkMenuBean getItem(int position) {
+        return objects.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = layoutInflater.inflate(R.layout.item_work_parent_layout, null);
+            convertView.setTag(new ViewHolder(convertView));
+        }
+        initializeViews((WorkMenuBean) getItem(position), (ViewHolder) convertView.getTag());
+        return convertView;
+    }
+
+    private void initializeViews(WorkMenuBean object, ViewHolder holder) {
+        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++) {
+            WorkMenuBean.ModuleListBean moduleListBean = typeList.get(i);
+            if (!moduleListBean.isHide()) {
+                typeListBeen.add(moduleListBean);
+            }
+        }
+        if (typeListBeen.size() == 0) {
+            WorkMenuBean.ModuleListBean moduleListBean = new WorkMenuBean.ModuleListBean();
+            moduleListBean.setIsHide(false);
+            moduleListBean.setIsLocalMenu(true);
+            moduleListBean.setMenuActivity("com.modular.work.WorkFuncSetActivity");
+            moduleListBean.setMenuIcon("add_picture");
+            moduleListBean.setMenuName("添加应用");
+            moduleListBean.setMenuUrl("");
+
+            typeListBeen.add(moduleListBean);
+        }
+        mWorkMenuChildAdapter = new WorkMenuChildAdapter(context, typeListBeen);
+        holder.workParentGv.setAdapter(mWorkMenuChildAdapter);
+
+        holder.workParentGv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                try {
+                    String menuActivity = typeListBeen.get(position).getMenuActivity();
+                    String menuIcon = typeListBeen.get(position).getMenuIcon();
+
+                    if ("com.modular.work.WorkFuncSetActivity".equals(menuActivity)) {
+                        if (mOnAddFuncClickListener != null) {
+                            mOnAddFuncClickListener.onAddFuncClick(view, position);
+                        }
+                    } else {
+                        Intent intent = getWorkIntent(menuActivity, menuIcon);
+                        context.startActivity(intent);
+                    }
+                } catch (Exception e) {
+                    ToastUtil.showToast(context, "页面访问异常");
+                }
+            }
+        });
+    }
+
+    private Intent getWorkIntent(String menuActivity, String menuIcon) {
+        Intent intent = new Intent(menuActivity);
+
+        switch (menuActivity) {
+            case "com.modular.work.WorkActivity":
+                boolean isAdmin = PreferenceUtils.getBoolean(AppConfig.IS_ADMIN, false);
+                //上传管理员状态
+                intent.putExtra(AppConfig.IS_ADMIN, isAdmin);
+                break;
+            case "com.modular.work.MissionActivity":
+                boolean is = PreferenceUtils.getBoolean(AppConfig.AUTO_MISSION, false);
+                if (isB2b || is) {
+                    intent = new Intent("com.modular.work.MissionActivity");
+                    intent.putExtra("flag", 1);
+                } else {
+                    intent = new Intent("com.modualr.appworks.OutofficeActivity");
+                }
+                isAdmin = PreferenceUtils.getBoolean(AppConfig.IS_ADMIN, false);
+                //上传管理员状态
+                intent.putExtra(AppConfig.IS_ADMIN, isAdmin);
+                break;
+            case "com.modular.form.DataFormDetailActivity":
+                if ("ic_work_special_attendance".equals(menuIcon)) {
+                    intent.putExtra("caller", "SpeAttendance");
+                } else if ("ic_work_overtime_request".equals(menuIcon)) {
+                    if (ApiUtils.getApiModel() instanceof ApiPlatform) {
+                        intent = new Intent("com.modular.plat.WorkExtraActivity");
+                    } else if (ApiUtils.getApiModel() instanceof ApiUAS) {
+                        String overtimeCaller = CommonUtil.getSharedPreferences(context, Constants.WORK_OVERTIME_CALLER_CACHE);
+                        if (StringUtil.isEmpty(overtimeCaller)) {
+                            intent.putExtra("caller", "Workovertime");
+                        } else {
+                            intent.putExtra("caller", overtimeCaller);
+                        }
+                    }
+                } else if ("ic_work_leave_request".equals(menuIcon)) {
+                    if (ApiUtils.getApiModel() instanceof ApiPlatform) {
+                        intent = new Intent("com.modular.oa.PlatLeaveAddActivity");
+                    } else if (ApiUtils.getApiModel() instanceof ApiUAS) {
+                        intent.putExtra("caller", "Ask4Leave");
+                    }
+                } else if ("ic_work_travel_request".equals(menuIcon)) {
+                    if (ApiUtils.getApiModel() instanceof ApiPlatform) {
+                        intent = new Intent("com.modular.plat.TravelActivity");
+                    } else if (ApiUtils.getApiModel() instanceof ApiUAS) {
+                        String travelCaller = CommonUtil.getSharedPreferences(context, Constants.WORK_TRAVEL_CALLER_CACHE);
+                        if (StringUtil.isEmpty(travelCaller)) {
+                            intent.putExtra("caller", "FeePlease!CCSQ");
+                        } else {
+                            intent.putExtra("caller", travelCaller);
+                        }
+                    }
+                }
+                break;
+            case "com.modular.oa.StatisticsActivity":
+                PreferenceUtils.putInt(Constants.NEW_FUNCTION_NOTICE, 1);
+                break;
+            case "com.modular.oa.ExpenseReimbursementActivity":
+                PreferenceUtils.putInt(Constants.NEW_EXPENSE_REIMBURSEMENT_NOTICE, 1);
+                break;
+            case "com.modular.work.OAActivity":
+                if ("ic_work_customer_visit".equals(menuIcon)) {
+                    intent.putExtra("type", 1);
+                }
+                break;
+            case "com.modular.main.WebViewCommActivity":
+                if ("ic_work_b2b_commerce".equals(menuIcon)) {
+                    String phone = com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences(context, "user_phone");
+                    String password = com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences(context, "user_password");
+                    String b_enuu = com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences(context, "erp_uu");
+                    String url = "";
+                    if (StringUtil.isEmpty(b_enuu)) {
+                        url = "http://uas.ubtob.com/authen?b_username=" + phone + "&b_password=" + password;
+                    } else {
+                        url = "http://uas.ubtob.com/authen?b_username=" + phone + "&b_password=" + password + "&b_enuu=" + b_enuu;
+                    }
+                    intent.putExtra("url", url);
+                    intent.putExtra("p", context.getString(R.string.work_business_me));
+                } else if ("ic_work_usoft_mall".equals(menuIcon)) {
+                    intent.putExtra("url", "http://mall.ubtob.com");
+                    intent.putExtra("p", context.getString(R.string.work_business_find));
+                }
+                break;
+            default:
+                break;
+        }
+        return intent;
+    }
+
+    protected class ViewHolder {
+        private TextView workParentTitleTv;
+        private MyGridView workParentGv;
+
+        public ViewHolder(View view) {
+            workParentTitleTv = (TextView) view.findViewById(R.id.work_parent_title_tv);
+            workParentGv = (MyGridView) view.findViewById(R.id.work_parent_gv);
+        }
+    }
+
+    public interface OnAddFuncClickListener {
+        void onAddFuncClick(View view, int position);
+    }
+}

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

@@ -0,0 +1,316 @@
+package com.xzjmyk.pm.activity.ui.erp.fragment;
+
+import android.content.Intent;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.core.api.wxapi.ApiPlatform;
+import com.core.api.wxapi.ApiUtils;
+import com.core.app.Constants;
+import com.core.base.fragment.BaseMVPFragment;
+import com.core.net.http.http.Request;
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.uas.appworks.model.bean.WorkMenuBean;
+import com.uas.appworks.presenter.WorkPlatPresenter;
+import com.uas.appworks.view.WorkPlatView;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.erp.adapter.WorkMenuParentAdapter;
+import com.xzjmyk.pm.activity.util.oa.CommonUtil;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author RaoMeng
+ * @describe 工作台主页面
+ * @date 2017/11/12 16:45
+ */
+
+public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> implements WorkPlatView {
+    private final int LOAD_ORDERS_CALLER = 0x02;
+    private final int OBTAIN_APP_CITY_INDUSTRY_SERVICE = 0x04;
+
+    private PullToRefreshListView mWorkMenuListView;
+    private List<WorkMenuBean> mWorkMenuBeans;
+    private WorkMenuParentAdapter mWorkMenuParentAdapter;
+    private boolean isB2b;
+    private TextView mSetTextView;
+    private List<WorkMenuBean> mCacheMenuTypeBeans;
+
+
+    @Override
+    protected WorkPlatPresenter initPresenter() {
+        return new WorkPlatPresenter();
+    }
+
+    @Override
+    protected int getLayout() {
+        Log.d("workplatfragment", "getLayout");
+        return R.layout.fragment_work;
+    }
+
+    @Override
+    protected void initViews() {
+        if (isFirstLoad) {
+            setHasOptionsMenu(true);
+            isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
+            mWorkMenuListView = $(R.id.work_menu_lv);
+            mWorkMenuListView.setMode(PullToRefreshBase.Mode.DISABLED);
+
+            View setItem = LayoutInflater.from(mContext).inflate(R.layout.layout_work_plat_set, null);
+            mSetTextView = (TextView) setItem.findViewById(R.id.work_plat_set_tv);
+
+            ListView refreshableView = mWorkMenuListView.getRefreshableView();
+            refreshableView.addFooterView(setItem);
+
+            mCacheMenuTypeBeans = new ArrayList<>();
+            mWorkMenuBeans = new ArrayList<>();
+            mWorkMenuParentAdapter = new WorkMenuParentAdapter(mContext, mWorkMenuBeans);
+            mWorkMenuListView.setAdapter(mWorkMenuParentAdapter);
+        }
+    }
+
+    @Override
+    protected void initEvents() {
+        if (mSetTextView != null) {
+            mSetTextView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    startActivityForResult("com.modular.work.WorkModuleSortActivity", Constants.WORK_MODULE_SORT_REQUEST);
+                }
+            });
+        }
+
+        if (mWorkMenuParentAdapter != null) {
+            mWorkMenuParentAdapter.setOnAddFuncClickListener(new WorkMenuParentAdapter.OnAddFuncClickListener() {
+                @Override
+                public void onAddFuncClick(View view, int position) {
+                    startActivityForResult("com.modular.work.WorkFuncSetActivity", Constants.WORK_FUNC_SET);
+                }
+            });
+        }
+    }
+
+    @Override
+    protected void initDatas() {
+        if (isFirstLoad) {
+            mPresenter.obtainData(mContext, new Request.Bulider().setWhat(Constants.LOAD_WORK_MENU_CACHE).bulid());
+            loadOrdersCaller();
+        }
+        obtainCityIndustryService();
+    }
+
+    private void obtainCityIndustryService() {
+        Map<String, Object> params = new HashMap<>();
+        params.put("kind", "app");
+        params.put("client_type", "cc");
+        params.put("access_token", "123456");
+
+        LinkedHashMap<String, Object> header = new LinkedHashMap<>();
+        header.put("Cookie", "JSESSIONID=" + com.core.utils.CommonUtil.getSharedPreferences(mContext, "sessionId"));
+
+        Request request = new Request.Bulider()
+                .setWhat(OBTAIN_APP_CITY_INDUSTRY_SERVICE)
+                .setUrl("api/serve/getServices.action")
+                .setHeaders(header)
+                .setParam(params)
+                .setMode(Request.Mode.GET)
+                .bulid();
+        mPresenter.obtainData(mContext, request);
+    }
+
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        super.onCreateOptionsMenu(menu, inflater);
+        inflater.inflate(R.menu.menu_work_plat_set, menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.work_plat_set_iv) {
+            startActivityForResult("com.modular.work.WorkFuncSetActivity", Constants.WORK_FUNC_SET);
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (resultCode == Constants.WORK_MODULE_SORT_REQUEST || resultCode == Constants.WORK_FUNC_SET) {
+            mPresenter.obtainData(mContext, new Request.Bulider().setWhat(Constants.LOAD_WORK_MENU_CACHE).bulid());
+        }
+    }
+
+    private void loadOrdersCaller() {
+        if (isB2b) {
+            return;
+        }
+        String url = "mobile/oa/getoaconifg.action";
+        Request request = new Request.Bulider()
+                .setUrl(url)
+                .setParam(new HashMap<String, Object>())
+                .setWhat(LOAD_ORDERS_CALLER)
+                .setMode(Request.Mode.GET)
+                .bulid();
+        mPresenter.obtainData(mContext, request);
+    }
+
+    @Override
+    public void showLoading(String loadStr) {
+
+    }
+
+    @Override
+    public void hideLoading() {
+
+    }
+
+    @Override
+    public void loadSuccess(int what, Object object) {
+        if (what == Constants.LOAD_WORK_MENU_CACHE) {
+            mCacheMenuTypeBeans = (List<WorkMenuBean>) object;
+            mWorkMenuBeans.clear();
+            for (int i = 0; i < mCacheMenuTypeBeans.size(); i++) {
+                WorkMenuBean workMenuBean = mCacheMenuTypeBeans.get(i);
+                if (workMenuBean.isModuleVisible()) {
+                    mWorkMenuBeans.add(workMenuBean);
+                }
+
+            }
+            mWorkMenuParentAdapter.notifyDataSetChanged();
+        } else if (what == LOAD_ORDERS_CALLER) {
+            saveOrdersCaller(object);
+        } else if (what == OBTAIN_APP_CITY_INDUSTRY_SERVICE) {
+            String result = object.toString();
+            Log.e("cityindustryservice", result);
+            JSONObject resultobObject = JSON.parseObject(result);
+            JSONArray configArray = resultobObject.getJSONArray("configs");
+            if (configArray != null) {
+                List<WorkMenuBean> netWorkMenuBeans = new ArrayList<>();
+                for (int i = 0; i < configArray.size(); i++) {
+                    JSONObject configObject = configArray.getJSONObject(i);
+                    if (configObject != null) {
+                        WorkMenuBean workMenuBean = new WorkMenuBean();
+                        workMenuBean.setModuleVisible(true);
+                        workMenuBean.setIsLocalModule(false);
+                        workMenuBean.setModuleName(JSONUtil.getText(configObject, "st_name"));
+                        workMenuBean.setModuleTag(JSONUtil.getText(configObject, "st_id"));
+                        workMenuBean.setModuleId(JSONUtil.getText(configObject, "st_id"));
+
+                        JSONArray serviceArray = configObject.getJSONArray("serves");
+                        if (serviceArray != null && serviceArray.size() > 0) {
+                            List<WorkMenuBean.ModuleListBean> moduleListBeans = new ArrayList<>();
+                            for (int j = 0; j < serviceArray.size(); j++) {
+                                JSONObject serviceObject = serviceArray.getJSONObject(j);
+                                if (serviceObject != null) {
+                                    WorkMenuBean.ModuleListBean moduleListBean = new WorkMenuBean.ModuleListBean();
+                                    moduleListBean.setMenuUrl("");
+                                    moduleListBean.setMenuName(JSONUtil.getText(serviceObject, "sv_name"));
+                                    // TODO: 2017/11/17 页面设置
+                                    moduleListBean.setMenuActivity("");
+                                    moduleListBean.setIsLocalMenu(false);
+                                    moduleListBean.setIsHide(false);
+                                    moduleListBean.setCaller(JSONUtil.getText(serviceObject, "sv_id"));
+
+                                    JSONObject logourlObject = serviceObject.getJSONObject("sv_logourl");
+                                    if (logourlObject != null) {
+                                        moduleListBean.setMenuIcon(JSONUtil.getText(logourlObject, "mobile"));
+                                    }
+                                    moduleListBeans.add(moduleListBean);
+                                }
+                            }
+                            workMenuBean.setModuleList(moduleListBeans);
+
+                            netWorkMenuBeans.add(workMenuBean);
+                        }
+                    }
+                }
+
+                for (WorkMenuBean netWorkMenuBean : netWorkMenuBeans) {
+                    boolean isExist = false;
+                    String netModuleName = netWorkMenuBean.getModuleName();
+                    List<WorkMenuBean.ModuleListBean> netModuleList = netWorkMenuBean.getModuleList();
+                    for (WorkMenuBean cacheWorkMenuBean : mCacheMenuTypeBeans) {
+                        String cacheModuleName = cacheWorkMenuBean.getModuleName();
+                        List<WorkMenuBean.ModuleListBean> cacheModuleList = cacheWorkMenuBean.getModuleList();
+                        if (cacheModuleName.equals(netModuleName)) {
+                            isExist = true;
+                            netWorkMenuBean.setModuleVisible(cacheWorkMenuBean.isModuleVisible());
+                            for (WorkMenuBean.ModuleListBean netModuleListBean : netModuleList) {
+                                boolean isFuncExist = false;
+                                String netMenuName = netModuleListBean.getMenuName();
+                                for (WorkMenuBean.ModuleListBean adapterModuleListBean : cacheModuleList) {
+                                    String adapterMenuName = adapterModuleListBean.getMenuName();
+                                    if (adapterMenuName.equals(netMenuName)) {
+                                        isFuncExist = true;
+                                        netModuleListBean.setIsHide(adapterModuleListBean.isHide());
+                                        break;
+                                    }
+                                }
+                                if (!isFuncExist) {
+                                    cacheModuleList.add(netModuleListBean);
+                                }
+                            }
+
+                            break;
+                        }
+                    }
+                    if (!isExist) {
+                        mCacheMenuTypeBeans.add(netWorkMenuBean);
+                    }
+                }
+
+                String resultJson = JSON.toJSONString(mCacheMenuTypeBeans);
+                com.core.utils.CommonUtil.setUniqueSharedPreferences(mContext, Constants.WORK_MENU_CACHE, resultJson);
+
+                mPresenter.obtainData(mContext, new Request.Bulider().setWhat(Constants.LOAD_WORK_MENU_CACHE).bulid());
+            }
+        }
+    }
+
+    private void saveOrdersCaller(Object object) {
+        try {
+            String result = object.toString();
+            Log.d("workplatcaler", result);
+            if (JSONUtil.validate(result)) {
+                JSONObject resultObject = JSON.parseObject(result);
+                JSONArray listdata = JSONUtil.getJSONArray(resultObject, "listdata");
+                if (ListUtils.isEmpty(listdata)) {
+                    return;
+                }
+                for (int i = 0; i < listdata.size(); i++) {
+                    JSONObject jb = listdata.getJSONObject(i);
+                    String mo_caller = jb.getString("MO_CALLER");
+                    if ("加班申请".equals(jb.getString("MO_NAME"))) {
+                        CommonUtil.setSharedPreferences(mContext, Constants.WORK_OVERTIME_CALLER_CACHE, mo_caller);
+                    }
+                    if ("出差申请".equals(jb.getString("MO_NAME"))) {
+                        CommonUtil.setSharedPreferences(mContext, Constants.WORK_TRAVEL_CALLER_CACHE, mo_caller);
+                    }
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void showError(String errorMsg) {
+        toast(errorMsg);
+    }
+}

+ 4 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/im/UserRoleUtils.java

@@ -7,7 +7,7 @@ import com.core.app.MyApplication;
 import com.core.app.R;
 import com.core.utils.CommonUtil;
 import com.uas.appme.settings.activity.SettingActivity;
-import com.xzjmyk.pm.activity.ui.erp.fragment.WorksFragment;
+import com.xzjmyk.pm.activity.ui.erp.fragment.WorkPlatFragment;
 import com.xzjmyk.pm.activity.ui.me.MeFragment;
 import com.xzjmyk.pm.activity.ui.message.MessageFragment;
 
@@ -33,7 +33,7 @@ public class UserRoleUtils {
                         view.findViewById(R.id.waitting_work_rl).setVisibility(View.GONE);//待办工作
                         view.findViewById(R.id.subscribe_rl).setVisibility(View.GONE);//我的订阅
                     }
-                    if (fragment instanceof WorksFragment){
+                    if (fragment instanceof WorkPlatFragment){
                         view.findViewById(R.id.rl_uas_sys).setVisibility(View.GONE);
                         view.findViewById(R.id.my_client_rl).setVisibility(View.GONE);
                         view.findViewById(R.id.setting_rl).setVisibility(View.GONE);
@@ -53,7 +53,7 @@ public class UserRoleUtils {
                         view.findViewById(R.id.waitting_work_rl).setVisibility(View.VISIBLE);//待办工作
                         view.findViewById(R.id.subscribe_rl).setVisibility(View.VISIBLE);//我的订阅
                     }
-                    if (fragment instanceof WorksFragment){
+                    if (fragment instanceof WorkPlatFragment){
                         view.findViewById(R.id.rl_uas_sys).setVisibility(View.VISIBLE);
                         view.findViewById(R.id.my_client_rl).setVisibility(View.VISIBLE);
                         view.findViewById(R.id.setting_rl).setVisibility(View.VISIBLE);
@@ -73,7 +73,7 @@ public class UserRoleUtils {
                         view.findViewById(R.id.waitting_work_rl).setVisibility(View.GONE);//待办工作
                         view.findViewById(R.id.subscribe_rl).setVisibility(View.GONE);//我的订阅
                     }
-                    if (fragment instanceof WorksFragment){
+                    if (fragment instanceof WorkPlatFragment){
                         view.findViewById(R.id.rl_uas_sys).setVisibility(View.GONE);
                         view.findViewById(R.id.my_client_rl).setVisibility(View.GONE);
                         view.findViewById(R.id.setting_rl).setVisibility(View.GONE);

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

@@ -13,7 +13,8 @@
         android:background="#6A6A6A"
         android:orientation="horizontal"
         android:padding="10dp"
-        android:weightSum="4">
+        android:weightSum="4"
+        android:visibility="gone">
 
         <LinearLayout
             android:layout_width="match_parent"

+ 37 - 34
WeiChat/src/main/res/layout/activity_oamain.xml

@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?><!--com.handmark.pulltorefresh.library.PullToRefreshScrollView -->
-<com.handmark.pulltorefresh.library.PullToRefreshScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/oamain_ptrsv"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="#EBE9E9"
-    android:fillViewport="true">
+<com.handmark.pulltorefresh.library.PullToRefreshScrollView android:id="@+id/oamain_ptrsv"
+                                                            xmlns:android="http://schemas.android.com/apk/res/android"
+                                                            android:layout_width="match_parent"
+                                                            android:layout_height="match_parent"
+                                                            android:background="#EBE9E9"
+                                                            android:fillViewport="true">
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -17,7 +17,8 @@
             android:layout_height="wrap_content"
             android:focusable="true"
             android:focusableInTouchMode="true"
-            android:orientation="vertical">
+            android:orientation="vertical"
+            android:visibility="gone">
             <!--头布局-->
             <LinearLayout
                 android:id="@+id/oa_rl_choose"
@@ -26,7 +27,8 @@
                 android:layout_below="@+id/toobar"
                 android:background="#6A6A6A"
                 android:orientation="vertical"
-                android:paddingTop="10dp">
+                android:paddingTop="10dp"
+                android:visibility="gone">
 
                 <LinearLayout
                     android:layout_width="match_parent"
@@ -110,28 +112,28 @@
                         android:textColor="@color/white" />
 
                     <!--<LinearLayout-->
-                        <!--android:id="@+id/oamain_more_menu_ll"-->
-                        <!--android:layout_width="0dp"-->
-                        <!--android:layout_height="wrap_content"-->
-                        <!--android:layout_marginTop="2dp"-->
-                        <!--android:layout_weight="1"-->
-                        <!--android:orientation="vertical">-->
-
-                        <!--<ImageView-->
-                            <!--android:id="@+id/oamain_more_menu_iv"-->
-                            <!--android:layout_width="match_parent"-->
-                            <!--android:layout_height="wrap_content"-->
-                            <!--android:gravity="center"-->
-                            <!--android:src="@drawable/ic_oa_more" />-->
-
-                        <!--<TextView-->
-                            <!--android:id="@+id/more_menu_tv"-->
-                            <!--android:layout_width="match_parent"-->
-                            <!--android:layout_height="wrap_content"-->
-                            <!--android:layout_marginTop="5dp"-->
-                            <!--android:gravity="center"-->
-                            <!--android:text="@string/oamore_tltle"-->
-                            <!--android:textColor="@color/white" />-->
+                    <!--android:id="@+id/oamain_more_menu_ll"-->
+                    <!--android:layout_width="0dp"-->
+                    <!--android:layout_height="wrap_content"-->
+                    <!--android:layout_marginTop="2dp"-->
+                    <!--android:layout_weight="1"-->
+                    <!--android:orientation="vertical">-->
+
+                    <!--<ImageView-->
+                    <!--android:id="@+id/oamain_more_menu_iv"-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="wrap_content"-->
+                    <!--android:gravity="center"-->
+                    <!--android:src="@drawable/ic_oa_more" />-->
+
+                    <!--<TextView-->
+                    <!--android:id="@+id/more_menu_tv"-->
+                    <!--android:layout_width="match_parent"-->
+                    <!--android:layout_height="wrap_content"-->
+                    <!--android:layout_marginTop="5dp"-->
+                    <!--android:gravity="center"-->
+                    <!--android:text="@string/oamore_tltle"-->
+                    <!--android:textColor="@color/white" />-->
                     <!--</LinearLayout>-->
                     <LinearLayout
                         android:id="@+id/oamain_more_menu_ll"
@@ -146,7 +148,7 @@
                         <FrameLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                           >
+                            >
 
                             <ImageView
                                 android:id="@+id/oamain_more_menu_iv"
@@ -446,7 +448,7 @@
                 android:layout_height="match_parent"
                 android:orientation="vertical"
                 android:visibility="gone"
-               >
+                >
 
                 <LinearLayout
                     android:layout_width="match_parent"
@@ -502,7 +504,7 @@
                                 android:background="@drawable/hongdian"
                                 android:textColor="@android:color/white"
                                 android:textSize="10.0dip"
-                               />
+                                />
                         </FrameLayout>
 
                         <TextView
@@ -569,7 +571,8 @@
                         android:layout_weight="1"
                         android:gravity="center"
                         android:textColor="@color/white"
-                        android:visibility="gone"/>
+                        android:visibility="gone" />
+
                     <TextView
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"

+ 16 - 0
WeiChat/src/main/res/layout/fragment_work.xml

@@ -0,0 +1,16 @@
+<?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">
+
+    <com.handmark.pulltorefresh.library.PullToRefreshListView
+        android:id="@+id/work_menu_lv"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:divider="#cecaca"
+        android:dividerHeight="1dp"
+        android:scrollbars="none"
+        android:scrollingCache="false"
+        />
+</LinearLayout>

+ 36 - 0
WeiChat/src/main/res/layout/item_work_menu_child.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:gravity="center"
+        android:orientation="vertical"
+        android:paddingLeft="8dp"
+        android:paddingRight="8dp"
+        android:paddingTop="8dp">
+
+        <ImageView
+            android:id="@+id/work_menu_child_icon_iv"
+            android:layout_width="20dp"
+            android:layout_height="20dp"
+            tools:src="@drawable/ic_data_inquiry" />
+
+        <TextView
+            android:id="@+id/work_menu_child_name_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="6dp"
+            android:ellipsize="end"
+            android:gravity="center_horizontal"
+            android:lines="2"
+            android:textColor="#000000"
+            android:textSize="12sp" />
+    </LinearLayout>
+
+</RelativeLayout>

+ 36 - 0
WeiChat/src/main/res/layout/item_work_parent_layout.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+
+        <View
+            android:layout_width="6dp"
+            android:layout_height="12dp"
+            android:layout_marginLeft="10dp"
+            android:background="@color/titleBlue"/>
+
+        <TextView
+            android:id="@+id/work_parent_title_tv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textSize="14sp"
+            android:padding="6dp"/>
+    </LinearLayout>
+
+    <com.core.widget.view.MyGridView
+        android:id="@+id/work_parent_gv"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:numColumns="4"
+        android:scrollbars="none" />
+</LinearLayout>

+ 308 - 0
app_core/common/src/main/assets/work_menu.json

@@ -0,0 +1,308 @@
+[
+  {
+    "moduleName": "行政办公",
+    "isLocalModule": true,
+    "moduleTag": "administrative_office",
+    "moduleId": "",
+    "moduleVisible": true,
+    "moduleList": [
+      {
+        "isLocalMenu": true,
+        "menuName": "我的审批",
+        "menuIcon": "ic_work_work_approval",
+        "menuActivity": "com.modular.work.ProcessMsgActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "待办工作",
+        "menuIcon": "ic_work_backlog",
+        "menuActivity": "com.modular.task.TaskActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "工作日历",
+        "menuIcon": "ic_work_work_calendar",
+        "menuActivity": "com.modular.work.OAActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "工作汇报",
+        "menuIcon": "ic_work_work_report",
+        "menuActivity": "com.modular.work.WorkReportMenuActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "打卡签到",
+        "menuIcon": "ic_work_punch_clock",
+        "menuActivity": "com.modular.work.WorkActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "外勤签到",
+        "menuIcon": "ic_work_outwork_sign",
+        "menuActivity": "com.modular.work.MissionActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "考勤统计",
+        "menuIcon": "ic_work_attendance_statistics",
+        "menuActivity": "com.modular.oa.StatisticsActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "加班申请",
+        "menuIcon": "ic_work_overtime_request",
+        "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "请假申请",
+        "menuIcon": "ic_work_leave_request",
+        "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "出差申请",
+        "menuIcon": "ic_work_travel_request",
+        "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "费用报销",
+        "menuIcon": "ic_work_expense_account",
+        "menuActivity": "com.modular.oa.ExpenseReimbursementActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "会议管理",
+        "menuIcon": "ic_work_meeting_manage",
+        "menuActivity": "com.modular.oa.AddMeetingActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      }
+    ]
+  },
+  {
+    "moduleName": "客户关系管理",
+    "isLocalModule": true,
+    "moduleTag": "customer_relationship",
+    "moduleId": "",
+    "moduleVisible": true,
+    "moduleList": [
+      {
+        "isLocalMenu": true,
+        "menuName": "商机管理",
+        "menuIcon": "ic_work_business_manage",
+        "menuActivity": "com.modular.crm.BusinessActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "客户管理",
+        "menuIcon": "ic_work_customer_manage",
+        "menuActivity": "com.modular.crm.CustomerListActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "客户拜访",
+        "menuIcon": "ic_work_customer_visit",
+        "menuActivity": "com.modular.work.OAActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "销售看版",
+        "menuIcon": "ic_work_sales_data",
+        "menuActivity": "com.modular.crm.ClientActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "荣誉墙",
+        "menuIcon": "ic_work_honor_rank",
+        "menuActivity": "com.modular.crm.SalesRankingActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      }
+    ]
+  },
+  {
+    "moduleName": "企业应用",
+    "isLocalModule": true,
+    "moduleTag": "enterprise_application",
+    "moduleId": "",
+    "moduleVisible": true,
+    "moduleList": [
+      {
+        "isLocalMenu": true,
+        "menuName": "数据查询",
+        "menuIcon": "ic_work_data_inquiry",
+        "menuActivity": "com.modular.company.DataInquiryActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "报表统计",
+        "menuIcon": "ic_work_report_statistics",
+        "menuActivity": "com.modular.company.ReportStatisticsActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "实时看板",
+        "menuIcon": "ic_work_real_time_subs",
+        "menuActivity": "com.modular.company.RealTimeFormActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "订阅号管理",
+        "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": "UU应用",
+    "isLocalModule": true,
+    "moduleTag": "uu_application",
+    "moduleId": "",
+    "moduleVisible": true,
+    "moduleList": [
+      {
+        "isLocalMenu": true,
+        "menuName": "预约小秘书",
+        "menuIcon": "ic_work_subscribe_secretary",
+        "menuActivity": "com.modular.booking.BookingListActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "UU运动",
+        "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": "",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "产城服务",
+        "menuIcon": "defaultpic",
+        "menuActivity": "com.modular.work.CityIndustryActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      }
+    ]
+  },
+  {
+    "moduleName": "优软云平台",
+    "isLocalModule": true,
+    "moduleTag": "usoft_cloud_platform",
+    "moduleId": "",
+    "moduleVisible": true,
+    "moduleList": [
+      {
+        "isLocalMenu": true,
+        "menuName": "B2B商务",
+        "menuIcon": "ic_work_b2b_commerce",
+        "menuActivity": "com.modular.main.WebViewCommActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "优软商城",
+        "menuIcon": "ic_work_usoft_mall",
+        "menuActivity": "com.modular.main.WebViewCommActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      }
+    ]
+  }
+]

+ 173 - 0
app_core/common/src/main/assets/work_menu_b2b.json

@@ -0,0 +1,173 @@
+[
+  {
+    "moduleName": "行政办公",
+    "isLocalModule": true,
+    "moduleTag": "administrative_office",
+    "moduleId": "",
+    "moduleVisible": true,
+    "moduleList": [
+      {
+        "isLocalMenu": true,
+        "menuName": "我的审批",
+        "menuIcon": "ic_work_work_approval",
+        "menuActivity": "com.modular.work.ProcessMsgActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "待办工作",
+        "menuIcon": "ic_work_backlog",
+        "menuActivity": "com.modular.task.TaskActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "工作日历",
+        "menuIcon": "ic_work_work_calendar",
+        "menuActivity": "com.modular.work.OAActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "工作汇报",
+        "menuIcon": "ic_work_work_report",
+        "menuActivity": "com.modular.work.WorkReportMenuActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "打卡签到",
+        "menuIcon": "ic_work_punch_clock",
+        "menuActivity": "com.modular.work.WorkActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "外勤签到",
+        "menuIcon": "ic_work_outwork_sign",
+        "menuActivity": "com.modular.work.MissionActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "加班申请",
+        "menuIcon": "ic_work_overtime_request",
+        "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "请假申请",
+        "menuIcon": "ic_work_leave_request",
+        "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "出差申请",
+        "menuIcon": "ic_work_travel_request",
+        "menuActivity": "com.modular.form.DataFormDetailActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      }
+    ]
+  },
+  {
+    "moduleName": "UU应用",
+    "isLocalModule": true,
+    "moduleTag": "uu_application",
+    "moduleId": "",
+    "moduleVisible": true,
+    "moduleList": [
+      {
+        "isLocalMenu": true,
+        "menuName": "预约小秘书",
+        "menuIcon": "ic_work_subscribe_secretary",
+        "menuActivity": "com.modular.booking.BookingListActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "UU运动",
+        "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": "",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "产城服务",
+        "menuIcon": "defaultpic",
+        "menuActivity": "com.modular.work.CityIndustryActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      }
+    ]
+  },
+  {
+    "moduleName": "优软云平台",
+    "isLocalModule": true,
+    "moduleTag": "usoft_cloud_platform",
+    "moduleId": "",
+    "moduleVisible": true,
+    "moduleList": [
+      {
+        "isLocalMenu": true,
+        "menuName": "B2B商务",
+        "menuIcon": "ic_work_b2b_commerce",
+        "menuActivity": "com.modular.main.WebViewCommActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "优软商城",
+        "menuIcon": "ic_work_usoft_mall",
+        "menuActivity": "com.modular.main.WebViewCommActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      }
+    ]
+  }
+]

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

@@ -0,0 +1,56 @@
+[
+  {
+    "moduleName": "UU应用",
+    "isLocalModule": true,
+    "moduleTag": "uu_application",
+    "moduleId": "",
+    "moduleVisible": true,
+    "moduleList": [
+      {
+        "isLocalMenu": true,
+        "menuName": "预约小秘书",
+        "menuIcon": "ic_work_subscribe_secretary",
+        "menuActivity": "com.modular.booking.BookingListActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "UU运动",
+        "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": "",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "产城服务",
+        "menuIcon": "defaultpic",
+        "menuActivity": "com.modular.work.CityIndustryActivity",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      }
+    ]
+  }
+]

+ 17 - 6
app_core/common/src/main/java/com/core/app/Constants.java

@@ -13,15 +13,17 @@ public class Constants {
     //IM测试地址
     public static final String IM_BASE_URL_TEST = "http://113.105.74.135:8092/";
 
-    public static String IM_BASE_URL(){
-        String url="";
-        if (BaseConfig.isDebug()){
-            url=IM_BASE_URL_TEST;
-        }else{
-            url=IM_BASE_URL;
+    public static String IM_BASE_URL() {
+        String url = "";
+        if (BaseConfig.isDebug()) {
+//            url = IM_BASE_URL_TEST;
+            url = IM_BASE_URL;
+        } else {
+            url = IM_BASE_URL;
         }
         return url;
     }
+
     //通讯录表
     public static final String TABLE_CONTANCTS = "CREATE TABLE  tbl_contacts " +
             "(id integer primary key autoincrement,"
@@ -426,4 +428,13 @@ public class Constants {
     public static final String BASEURL = "http://news-at.zhihu.com/api/4/";
     public static final String START = "start-image/1080*1776";
     public static String BASE_STEP_URL = "http://113.105.74.140:8092/user/";
+
+    //工作菜单缓存
+    public static String WORK_MENU_CACHE = "work_menu_cache";
+    public static String WORK_OVERTIME_CALLER_CACHE = "work_overtime_caller_cache";
+    public static String WORK_TRAVEL_CALLER_CACHE = "work_travel_caller_cache";
+    public static final int LOAD_WORK_MENU_CACHE = 0x01;
+    public static final int WORK_MODULE_SORT_REQUEST = 0x11;
+    public static final int WORK_FUNC_SET = 0x03;
+
 }

+ 112 - 0
app_core/common/src/main/java/com/core/base/activity/BaseMVPActivity.java

@@ -0,0 +1,112 @@
+package com.core.base.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.view.View;
+
+import com.core.base.BaseActivity;
+import com.core.base.presenter.BasePresenter;
+import com.core.base.view.BaseView;
+import com.core.utils.ToastUtil;
+
+
+/**
+ * @author RaoMeng
+ * @describe MVP模式Activity基类
+ * @date 2017/11/9 14:20
+ */
+
+public abstract class BaseMVPActivity<T extends BasePresenter> extends BaseActivity implements BaseView {
+    protected T instancePresenter;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(getLayout());
+
+        initView();
+
+        instancePresenter = initPresenter();
+
+        if (instancePresenter != null) {
+            instancePresenter.attachView(this);
+        }
+
+        initEvent();
+
+        initData();
+    }
+
+    protected abstract int getLayout();
+
+    protected abstract void initView();
+
+    protected abstract T initPresenter();
+
+    protected abstract void initEvent();
+
+    protected abstract void initData();
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (instancePresenter != null) {
+            instancePresenter.detachView();
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    public <T extends View> T $(int resId) {
+        return (T) super.findViewById(resId);
+    }
+
+    protected void toast(String text) {
+        ToastUtil.showToast(this, text);
+    }
+
+    protected void toast(int resId) {
+        ToastUtil.showToast(this, resId);
+    }
+
+    /**
+     * [页面跳转]
+     *
+     * @param clz
+     */
+    public void startActivity(Class<?> clz) {
+        startActivity(clz, null);
+    }
+
+    /**
+     * [携带数据的页面跳转]
+     *
+     * @param clz
+     * @param bundle
+     */
+    public void startActivity(Class<?> clz, Bundle bundle) {
+        Intent intent = new Intent();
+        intent.setClass(this, clz);
+        if (bundle != null) {
+            intent.putExtras(bundle);
+        }
+        startActivity(intent);
+    }
+
+    /**
+     * [含有Bundle通过Class打开编辑界面]
+     *
+     * @param cls
+     * @param bundle
+     * @param requestCode
+     */
+    public void startActivityForResult(Class<?> cls, Bundle bundle,
+                                       int requestCode) {
+        Intent intent = new Intent();
+        intent.setClass(this, cls);
+        if (bundle != null) {
+            intent.putExtras(bundle);
+        }
+        startActivityForResult(intent, requestCode);
+    }
+}

+ 14 - 0
app_core/common/src/main/java/com/core/base/callback/BaseCallback.java

@@ -0,0 +1,14 @@
+package com.core.base.callback;
+
+/**
+ * @author RaoMeng
+ * @describe 回调接口
+ * @date 2017/11/9 14:47
+ */
+
+public interface BaseCallback<T> {
+
+    void onSuccess(int what, T t);
+
+    void onFail(int what, String failStr);
+}

+ 234 - 0
app_core/common/src/main/java/com/core/base/fragment/BaseMVPFragment.java

@@ -0,0 +1,234 @@
+package com.core.base.fragment;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentTransaction;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.core.app.R;
+import com.core.base.presenter.BasePresenter;
+import com.core.base.view.BaseView;
+import com.core.utils.ToastUtil;
+
+
+/**
+ * @author RaoMeng
+ * @describe MVP模式fragment基类
+ * @date 2017/11/12 10:54
+ */
+
+public abstract class BaseMVPFragment<T extends BasePresenter> extends Fragment implements BaseView {
+    protected T mPresenter;
+    protected Context mContext;
+    protected Bundle mBundle;
+
+    /**
+     * 是否是第一次加载
+     */
+    protected boolean isFirstLoad = true;
+
+    /**
+     * fragment视图View
+     */
+    private View mRootView;
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mContext = context;
+    }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (savedInstanceState != null) {
+            mBundle = savedInstanceState.getBundle("fragment_bundle");
+        } else {
+            mBundle = getArguments() == null ? new Bundle() : getArguments();
+        }
+
+        mPresenter = initPresenter();
+    }
+
+    @Nullable
+    @Override
+    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        if (mRootView != null) {
+            ViewGroup parent = (ViewGroup) mRootView.getParent();
+            if (parent != null) {
+                parent.removeView(mRootView);
+            }
+            isFirstLoad = false;
+        } else {
+            mRootView = inflater.inflate(getLayout(), container, false);
+        }
+        return mRootView;
+    }
+
+    @Override
+    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        if (mPresenter != null) {
+            mPresenter.attachView(this);
+        }
+        initViews();
+        initEvents();
+        initDatas();
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        if (mPresenter != null) {
+            mPresenter.detachView();
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        if (mBundle != null) {
+            outState.putBundle("fragment_bundle", mBundle);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    protected <T extends View> T $(int resId) {
+        if (mRootView == null) {
+            throw new NullPointerException("rootView is null");
+        }
+        return (T) mRootView.findViewById(resId);
+    }
+
+    /**
+     * fragment进行回退
+     */
+    protected void onBack() {
+        getFragmentManager().popBackStack();
+    }
+
+    protected void toast(String text) {
+        ToastUtil.showToast(mContext, text);
+    }
+
+    protected void toast(int resId) {
+        ToastUtil.showToast(mContext, resId);
+    }
+
+    /**
+     * 跳转fragment
+     *
+     * @param tofragment
+     */
+    public void startFragment(Fragment tofragment) {
+        startFragment(tofragment, null);
+    }
+
+    /**
+     * @param tofragment 跳转的fragment
+     * @param tag        fragment的标签
+     */
+    public void startFragment(Fragment tofragment, String tag) {
+        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
+        fragmentTransaction.hide(this).add(android.R.id.content, tofragment, tag);
+        fragmentTransaction.addToBackStack(tag);
+        fragmentTransaction.commitAllowingStateLoss();
+    }
+
+    /**
+     * [页面跳转]
+     *
+     * @param clz
+     */
+    public void startActivity(Class<?> clz) {
+        startActivity(clz, null);
+    }
+
+    /**
+     * [携带数据的页面跳转]
+     *
+     * @param clz
+     * @param bundle
+     */
+    public void startActivity(Class<?> clz, Bundle bundle) {
+        Intent intent = new Intent();
+        intent.setClass(mContext, clz);
+        if (bundle != null) {
+            intent.putExtras(bundle);
+        }
+        startActivity(intent);
+        getActivity().overridePendingTransition(R.anim.anim_activity_in, R.anim.anim_activity_out);
+    }
+
+    /**
+     * 隐式跳转
+     *
+     * @param action
+     */
+    public void startActivity(String action) {
+        startActivity(action, null);
+    }
+
+    public void startActivity(String action, Bundle bundle) {
+        Intent intent = new Intent();
+        intent.setAction(action);
+        if (bundle != null) {
+            intent.putExtras(bundle);
+        }
+        startActivity(intent);
+        getActivity().overridePendingTransition(R.anim.anim_activity_in, R.anim.anim_activity_out);
+    }
+
+    /**
+     * [含有Bundle通过Class打开编辑界面]
+     *
+     * @param cls
+     * @param bundle
+     * @param requestCode
+     */
+    public void startActivityForResult(Class<?> cls, Bundle bundle,
+                                       int requestCode) {
+        Intent intent = new Intent();
+        intent.setClass(mContext, cls);
+        if (bundle != null) {
+            intent.putExtras(bundle);
+        }
+        startActivityForResult(intent, requestCode);
+        getActivity().overridePendingTransition(R.anim.anim_activity_in, R.anim.anim_activity_out);
+    }
+
+    public void startActivityForResult(String action, int requestCode) {
+        startActivityForResult(action, null, requestCode);
+    }
+
+    public void startActivityForResult(String action, Bundle bundle,
+                                       int requestCode) {
+        Intent intent = new Intent();
+        intent.setAction(action);
+        if (bundle != null) {
+            intent.putExtras(bundle);
+        }
+        startActivityForResult(intent, requestCode);
+        getActivity().overridePendingTransition(R.anim.anim_activity_in, R.anim.anim_activity_out);
+    }
+
+    /**
+     * 创建presenter
+     *
+     * @return
+     */
+    protected abstract T initPresenter();
+
+    protected abstract int getLayout();
+
+    protected abstract void initViews();
+
+    protected abstract void initEvents();
+
+    protected abstract void initDatas();
+}

+ 10 - 0
app_core/common/src/main/java/com/core/base/model/BaseModel.java

@@ -0,0 +1,10 @@
+package com.core.base.model;
+
+/**
+ * @author RaoMeng
+ * @describe Model层基础接口
+ * @date 2017/11/9 14:11
+ */
+
+public interface BaseModel {
+}

+ 16 - 0
app_core/common/src/main/java/com/core/base/presenter/BasePresenter.java

@@ -0,0 +1,16 @@
+package com.core.base.presenter;
+
+
+import com.core.base.view.BaseView;
+
+/**
+ * @author RaoMeng
+ * @describe Presenter层基础接口
+ * @date 2017/11/9 14:10
+ */
+
+public interface BasePresenter<T extends BaseView> {
+    void attachView(T view);
+
+    void detachView();
+}

+ 13 - 0
app_core/common/src/main/java/com/core/base/view/BaseView.java

@@ -0,0 +1,13 @@
+package com.core.base.view;
+
+/**
+ * @author RaoMeng
+ * @describe View层基础接口
+ * @date 2017/11/9 14:07
+ */
+
+public interface BaseView {
+    void showLoading(String loadStr);
+
+    void hideLoading();
+}

+ 54 - 52
app_core/common/src/main/java/com/core/net/http/ViewUtil.java

@@ -298,7 +298,8 @@ public class ViewUtil {
 //        }
 
     }
-      @Deprecated
+
+    @Deprecated
     public static void showDialogB2B(final String phone, final String password, final List<LoginEntity.Spaces> models) {
         String[] items = new String[models.size()];
 //        int select = 0;
@@ -335,17 +336,17 @@ public class ViewUtil {
     public static void LoginB2BTask(String phone, String password, Integer spaceId) {
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_progress_b2b));
         String url = ApiConfig.getInstance(new ApiPlatform()).getmApiBase().login;
-        LogUtil.d("HttpLogs","b2b login url:"+url);
+        LogUtil.d("HttpLogs", "b2b login url:" + url);
         Map<String, String> params = new HashMap<String, String>();
         params.put("appId", "b2b");
         params.put("username", phone);
         params.put("password", password);
 //        if (!BaseConfig.isDebug()) {
-            params.put("spaceId", String.valueOf(spaceId));
+        params.put("spaceId", String.valueOf(spaceId));
 //        } else {
 //            params.put("spaceId", "76035");
 //        }
-        LogUtil.d("HttpLogs","params:"+JSON.toJSONString(params));
+        LogUtil.d("HttpLogs", "params:" + JSON.toJSONString(params));
         startNetThread(url, params, handler, Constants.SUCCESS_B2B, null, null, "post");
     }
 
@@ -430,8 +431,8 @@ public class ViewUtil {
             CommonUtil.setSharedPreferences(ct, "erp_master", erp_master);
             CommonUtil.setSharedPreferences(ct, "erp_commpany", erp_company);
             CommonUtil.setSharedPreferences(ct, "erp_uu", String.valueOf(dataMap.get("uu")));
-            LogUtil.d("ERPLOGIN","erp_uu1:"+String.valueOf(dataMap.get("uu")));
-            LogUtil.d("ERPLOGIN","erp_uu2:"+CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_uu"));
+            LogUtil.d("ERPLOGIN", "erp_uu1:" + String.valueOf(dataMap.get("uu")));
+            LogUtil.d("ERPLOGIN", "erp_uu2:" + CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_uu"));
             CommonUtil.setSharedPreferences(ct, "erp_masterId", erp_masterId);
             CommonUtil.setSharedPreferences(ct, "erp_login", true);
             CommonUtil.setSharedPreferences(ct, "erp_emname", String.valueOf(dataMap.get("emname")));
@@ -449,8 +450,8 @@ public class ViewUtil {
             }
         }, 1500);
         if (ct instanceof Activity) {
-            if (!StringUtil.isEmpty(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_baseurl"))){
-            }else{
+            if (!StringUtil.isEmpty(CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl"))) {
+            } else {
                 ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
             }
             CommonUtil.setSharedPreferences(ct, "erp_baseurl", erp_baseurl);
@@ -479,7 +480,7 @@ public class ViewUtil {
             CommonUtil.setSharedPreferences(ct, "user_password", erp_password);
         }
         if (ct == null) ct = MyApplication.getInstance();
-      
+
         CommonUtil.setSharedPreferences(ct, "erp_login", false);
         CommonUtil.setSharedPreferences(ct, "b2b_uu", b2b_uu);
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_success_b2b));
@@ -489,14 +490,14 @@ public class ViewUtil {
                 mdProcessDialog.cancel();
             }
         }, 1500);
-            if (ct instanceof Activity) {
-                if (CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(),"b2b_login")){
-                }else{
-                    CommonUtil.setSharedPreferences(ct, "b2b_login", true);
-                   ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
-                }
+        if (ct instanceof Activity) {
+            if (CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), "b2b_login")) {
+            } else {
+                CommonUtil.setSharedPreferences(ct, "b2b_login", true);
+                ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
+            }
         }
-       
+
         sendBrodcast("B2B");
     }
 
@@ -582,43 +583,42 @@ public class ViewUtil {
 
         }
         if (JSONUtil.validate(json)) {
-           // showDialogCompany(json, phone, password);
+            // showDialogCompany(json, phone, password);
             showLoginDialog(json, phone, password);
         } else {
             ToastMessage(ct, "接口数据非法!", Style.holoRedLight, 3000);
         }
     }
 
-   
 
     //解析登录信息
-    public static void showLoginDialog(String loginResult,final String phone,final String password){
+    public static void showLoginDialog(String loginResult, final String phone, final String password) {
         List<LoginEntity> loginMsg = JSON.parseArray(loginResult, LoginEntity.class);
-        List<LoginEntity> loginEntities=new ArrayList<>();
-        boolean isHasUas=false;
-        if (!ListUtils.isEmpty(loginMsg)){
-            if (loginMsg.size()>1) {
-                    isHasUas = true;
+        List<LoginEntity> loginEntities = new ArrayList<>();
+        boolean isHasUas = false;
+        if (!ListUtils.isEmpty(loginMsg)) {
+            if (loginMsg.size() > 1) {
+                isHasUas = true;
             }
-            for (int i = 0; i <loginMsg.size() ; i++) {
+            for (int i = 0; i < loginMsg.size(); i++) {
                 LoginEntity model = loginMsg.get(i);
                 if (model.getPlatform().equals("ERP")) {
-                    isHasUas=true;
+                    isHasUas = true;
                     loginEntities.add(model);
                 } else if (model.getPlatform().equals("B2B")) {
                     List<LoginEntity.Spaces> sModel = model.getSpaces();
-                    if (!ListUtils.isEmpty(sModel)){
-                        for (int j = 0; j <sModel.size() ; j++) {
+                    if (!ListUtils.isEmpty(sModel)) {
+                        for (int j = 0; j < sModel.size(); j++) {
                             //去重逻辑
-                            boolean isHas=false;
-                            for (int k = 0; k <loginMsg.size() ; k++) {
-                                if (sModel.get(j).getName().equals(loginMsg.get(k).getName())){
-                                   //存在  uas系统里面存在同名的
-                                    isHas=true;
+                            boolean isHas = false;
+                            for (int k = 0; k < loginMsg.size(); k++) {
+                                if (sModel.get(j).getName().equals(loginMsg.get(k).getName())) {
+                                    //存在  uas系统里面存在同名的
+                                    isHas = true;
                                 }
                             }
-                            if (!isHas){
-                                LoginEntity bModel=new LoginEntity();
+                            if (!isHas) {
+                                LoginEntity bModel = new LoginEntity();
                                 bModel.setEnuu(Integer.valueOf(sModel.get(j).getEnuu()));
                                 bModel.setName(sModel.get(j).getName());
                                 bModel.setSpaceId(sModel.get(j).getId());
@@ -626,7 +626,7 @@ public class ViewUtil {
                                 loginEntities.add(bModel);
                             }
                         }
-                    }else{
+                    } else {
                         if (!isHasUas) {
                             //没有uas的情况
 //                            model.setPlatform("个人");
@@ -634,23 +634,23 @@ public class ViewUtil {
 //                            loginEntities.add(model);
                             CommonUtil.setSharedPreferences(MyApplication.getInstance(), "userRole", "1");
                             ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
-                        }else{
-                        
+                        } else {
+
                         }
                     }
                 }
             }
             //
-            LogUtil.d("HttpLogs","login dialog:"+JSON.toJSONString(loginEntities));
-            if (ListUtils.isEmpty(loginEntities))return;
-            erpEntities=loginEntities;
+            LogUtil.d("HttpLogs", "login dialog:" + JSON.toJSONString(loginEntities));
+            if (ListUtils.isEmpty(loginEntities)) return;
+            erpEntities = loginEntities;
             String[] items = new String[loginEntities.size()];
             int select = 0;
             for (int j = 0; j < loginEntities.size(); j++) {
                 items[j] = loginEntities.get(j).getName();
             }
-            if (!DialogUtils.isDialogShowing(loginERPDialog)){
-                if (loginERPDialog!=null) {
+            if (!DialogUtils.isDialogShowing(loginERPDialog)) {
+                if (loginERPDialog != null) {
                     select = loginERPDialog.getSelectedIndex();
                 }
                 loginERPDialog = new MaterialDialog.Builder(ct)
@@ -665,7 +665,7 @@ public class ViewUtil {
                                             LoginEntity entity = erpEntities.get(which);
                                             erp_phone = phone;
                                             erp_password = password;
-                                            if ("ERP".equals(entity.getPlatform())){
+                                            if ("ERP".equals(entity.getPlatform())) {
                                                 erp_username = entity.getAccount();
                                                 erp_master = entity.getMaster();
                                                 erp_baseurl = entity.getWebsite();
@@ -676,7 +676,7 @@ public class ViewUtil {
                                                 LoginERPTask(entity.getWebsite(), entity.getMaster(), phone, password);
                                                 CommonUtil.clearSharedPreferences(MyApplication.getInstance(), "erp_masterlist");  //清除账套列表缓存
                                             }
-                                            if ("B2B".equals(entity.getPlatform())){
+                                            if ("B2B".equals(entity.getPlatform())) {
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "spaceId", String.valueOf(entity.getSpaceId()));
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "companyName", String.valueOf(entity.getName()));
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "companyEnUu", String.valueOf(entity.getEnuu()));
@@ -686,7 +686,7 @@ public class ViewUtil {
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "userRole", "3");
                                                 LoginB2BTask(phone, password, entity.getSpaceId());//登录B2B
                                             }
-                                            if("个人".equals(entity.getPlatform())){
+                                            if ("个人".equals(entity.getPlatform())) {
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "userRole", "1");
                                                 ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
                                             }
@@ -694,12 +694,12 @@ public class ViewUtil {
                                         return true;
                                     }
                                 }).positiveText(ct.getString(R.string.common_sure)).show();
-                
+
             }
         }
     }
-    
-    
+
+
     @Deprecated
     private static void showDialogCompany(String json, String phone, String password) {
         List<LoginEntity> logMsg = JSON.parseArray(json, LoginEntity.class);
@@ -793,6 +793,7 @@ public class ViewUtil {
         }
         return userName;
     }
+
     /**
      * @author LiuJie
      * @功能:比较两个日期大小
@@ -1034,13 +1035,14 @@ public class ViewUtil {
     public static void LoginERPTask(String url, String master, String username,
                                     String password) {
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_progress_erp));
-        url = url + "mobile/login.action";
+//        url = url + "mobile/login.action";
+        url = "http://192.168.253.29:8080/ERP/mobile/login.action";
         Map<String, String> params = new HashMap<String, String>();
         params.put("username", username);
         params.put("password", password);
         params.put("master", master);
-        LogUtil.i("login","url="+url);
-        LogUtil.i("login","params="+JSONUtil.map2JSON(params));
+        LogUtil.i("login", "url=" + url);
+        LogUtil.i("login", "params=" + JSONUtil.map2JSON(params));
         startNetThread(url, params, handler, Constants.SUCCESS_ERP, null, null, "post");
     }
 

+ 46 - 2
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -94,8 +94,9 @@ public class CommonUtil {
             return "";
         }
         String baseUrl = getSharedPreferences(ct, "erp_baseurl");
-        return baseUrl;
-//        return "http://192.168.253.52:8080/ERP/";
+//        return baseUrl;
+        return "http://192.168.253.29:8080/ERP/";
+
     }
 
     /**
@@ -132,6 +133,28 @@ public class CommonUtil {
         }
     }
 
+    public static boolean setUniqueSharedPreferences(Context ct, String key, String value) {
+        if (key != null) {
+            SharedPreferences sPreferences = ct.getSharedPreferences(AppShareName, Context.MODE_PRIVATE);
+            boolean falg = false;
+            String userId = MyApplication.getInstance().mLoginUser.getUserId();
+            String role = CommonUtil.getUserRole();
+            if (role.equals("1")) {//个人用户
+                falg = sPreferences.edit().putString(userId + key, value).commit();
+            } else if (role.equals("3")) {//b2b用户
+                String companyName = CommonUtil.getSharedPreferences(ct, "companyName");
+                falg = sPreferences.edit().putString(userId + companyName + key, value).commit();
+            } else if (role.equals("2")) {//ERP用户
+                String erp_company = CommonUtil.getSharedPreferences(ct, "erp_company");
+                String erp_master = CommonUtil.getSharedPreferences(ct, "erp_master");
+                falg = sPreferences.edit().putString(userId + erp_company + erp_master + key, value).commit();
+            }
+            return falg;
+        } else {
+            return false;
+        }
+    }
+
     public static boolean setSharedPreferences(Context ct, String key, String value, String preName) {
         if (key != null) {
             SharedPreferences sPreferences = ct.getSharedPreferences(preName, Context.MODE_PRIVATE);
@@ -172,6 +195,27 @@ public class CommonUtil {
         return value;
     }
 
+    public static String getUniqueSharedPreferences(Context ct, String key) {
+        if (key == null || ct == null) {
+            return null;
+        }
+        SharedPreferences sPreferences = ct.getSharedPreferences(AppShareName, Context.MODE_PRIVATE);
+        String value = null;
+        String userId = MyApplication.getInstance().mLoginUser.getUserId();
+        String role = CommonUtil.getUserRole();
+        if (role.equals("1")) {//个人用户
+            value = sPreferences.getString(userId + key, null);
+        } else if (role.equals("3")) {//b2b用户
+            String companyName = CommonUtil.getSharedPreferences(ct, "companyName");
+            value = sPreferences.getString(userId + companyName + key, null);
+        } else if (role.equals("2")) {//ERP用户
+            String erp_company = CommonUtil.getSharedPreferences(ct, "erp_company");
+            String erp_master = CommonUtil.getSharedPreferences(ct, "erp_master");
+            value = sPreferences.getString(userId + erp_company + erp_master + key, null);
+        }
+        return value;
+    }
+
     public static String getSharedPreferences(Context ct, String key, String preName) {
         if (key == null) {
             return null;

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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