ソースを参照

提交分类: 测试版本;
提交内容: 商机详情页备份
当前版本: 正式版本6.4.4
是否冲突: 否

RaoMeng 7 年 前
コミット
f76baca5ff
47 ファイル変更2052 行追加90 行削除
  1. 1 1
      WeiChat/build.gradle
  2. 1 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  3. 3 3
      WeiChat/version.properties
  4. 10 0
      app_core/common/src/main/assets/work_menu.json
  5. 113 8
      app_core/common/src/main/java/com/common/data/NumberUtils.java
  6. 2 1
      app_core/common/src/main/java/com/core/app/Constants.java
  7. 34 0
      app_core/common/src/main/res/layout/layout_commom_empty.xml
  8. 1 0
      app_modular/appworks/build.gradle
  9. 9 6
      app_modular/appworks/src/main/AndroidManifest.xml
  10. 5 0
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/BusinessOvertimeListActivity.java
  11. 5 0
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/BusinessRankListActivity.java
  12. 41 5
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/BusinessRecordListActivity.java
  13. 32 0
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessDetailActivity/BusinessDetailContract.java
  14. 213 0
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessDetailActivity/BusinessDetailNewActivity.java
  15. 225 0
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessDetailActivity/BusinessDetailPresenterImpl.java
  16. 29 15
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessManageHome/BusinessManageHomeActivity.java
  17. 8 4
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessManageHome/BusinessManageHomeContract.java
  18. 90 5
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessManageHome/BusinessManageHomePresenterImpl.java
  19. 2 2
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessMineList/BusinessMineListContract.java
  20. 86 10
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessMineList/BusinessMineListPresenterImpl.java
  21. 62 1
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessStage/BusinessStageActivity.java
  22. 8 1
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessStage/BusinessStageContract.java
  23. 96 1
      app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessStage/BusinessStagePresenterImpl.java
  24. 27 9
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/BusinessMineAdapter.java
  25. 47 0
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/BusinessStageAdapter.java
  26. 48 0
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/CommonFormDetailAdapter.java
  27. 40 10
      app_modular/appworks/src/main/java/com/uas/appworks/fragment/BusinessMineListFragment.java
  28. 78 0
      app_modular/appworks/src/main/java/com/uas/appworks/model/bean/BusinessMineChildBean.java
  29. 185 0
      app_modular/appworks/src/main/java/com/uas/appworks/model/bean/BusinessStageBean.java
  30. 150 0
      app_modular/appworks/src/main/java/com/uas/appworks/model/bean/CommonFormBean.java
  31. BIN
      app_modular/appworks/src/main/res/drawable-hdpi/ic_business_eye.png
  32. BIN
      app_modular/appworks/src/main/res/drawable-xhdpi/ic_business_eye.png
  33. BIN
      app_modular/appworks/src/main/res/drawable-xxhdpi/ic_business_eye.png
  34. 8 0
      app_modular/appworks/src/main/res/drawable/selector_business_gradient_bg.xml
  35. 1 0
      app_modular/appworks/src/main/res/drawable/shape_b2b_change_account.xml
  36. 10 0
      app_modular/appworks/src/main/res/drawable/shape_business_gradient_normal_btn.xml
  37. 10 0
      app_modular/appworks/src/main/res/drawable/shape_business_gradient_press_btn.xml
  38. 176 0
      app_modular/appworks/src/main/res/layout/activity_business_detail_new.xml
  39. 1 0
      app_modular/appworks/src/main/res/layout/activity_business_manage_home.xml
  40. 3 1
      app_modular/appworks/src/main/res/layout/activity_business_stage.xml
  41. 38 0
      app_modular/appworks/src/main/res/layout/item_business_mine_child.xml
  42. 8 0
      app_modular/appworks/src/main/res/layout/item_business_mine_parent.xml
  43. 101 0
      app_modular/appworks/src/main/res/layout/item_business_stage.xml
  44. 29 0
      app_modular/appworks/src/main/res/layout/item_common_form_detail.xml
  45. 8 0
      app_modular/appworks/src/main/res/layout/item_common_gray_line.xml
  46. 4 0
      app_modular/appworks/src/main/res/values/dimens.xml
  47. 4 5
      version.gradle

+ 1 - 1
WeiChat/build.gradle

@@ -56,7 +56,7 @@ android {
     def versionArray = getVersionCode()
     //====================Add below two line=============
     dexOptions {
-        incremental true
+//        incremental true
         javaMaxHeapSize "4g" //specify the heap size for the dex process
         preDexLibraries = false //delete the already predexed libraries
         //是否支持大工程模式

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

@@ -20,7 +20,6 @@ import android.os.PersistableBundle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
-import android.support.v4.content.LocalBroadcastManager;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
@@ -82,7 +81,6 @@ import com.core.net.volley.FastVolley;
 import com.core.net.volley.Result;
 import com.core.net.volley.StringJsonArrayRequest;
 import com.core.utils.CommonInterface;
-import com.core.utils.FlexJsonUtil;
 import com.core.utils.IntentUtils;
 import com.core.utils.helper.LoginHelper;
 import com.core.xmpp.CoreService;
@@ -804,6 +802,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
         mScorePopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
             @Override
             public void onDismiss() {
+                mScorePopupWindow.dismiss();
                 clearBackgroundAlpha();
             }
         });

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Fri Sep 14 17:30:15 CST 2018
+#Tue Sep 18 18:47:02 CST 2018
 debugName=583
-versionName=659
+versionName=644
 debugCode=583
-versionCode=200
+versionCode=199

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

@@ -303,6 +303,16 @@
         "menuUrl": "",
         "caller": "",
         "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "新商机管理",
+        "menuIcon": "",
+        "menuActivity": "com.modular.work.BusinessManageHomeActivity",
+        "menuTag": "local_business_manage",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
       }
     ]
   },

+ 113 - 8
app_core/common/src/main/java/com/common/data/NumberUtils.java

@@ -2,19 +2,32 @@ package com.common.data;
 
 
 import java.util.Random;
+import java.util.Stack;
+
 
 /**
  * Created by Arisono on 2016/6/2.
  */
 public class NumberUtils {
+
+    private static final String[] CHINESE_NUMBERS = {"零", "一", "两", "三", "四", "五", "六", "七", "八", "九", "十"};
+
+    private static final ChineseUnit[] CHINESE_UNIT = {ChineseUnit.zero, ChineseUnit.ten
+            , ChineseUnit.hundred, ChineseUnit.thousand, ChineseUnit.ten_thousand,
+            ChineseUnit.billion, ChineseUnit.million, ChineseUnit.ten_million, ChineseUnit.hundred_mullion};
+
+    private static final String[] CHINESE_NUMBERS_2 = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
+
+
     /**
      * 这是典型的随机洗牌算法。
      * 流程是从备选数组中选择一个放入目标数组中,将选取的数组从备选数组移除(放至最后,并缩小选择区域)
      * 算法时间复杂度O(n)
+     *
      * @return 随机8为不重复数组
      */
     public static String generateNumber() {
-        String no="";
+        String no = "";
         //初始化备选数组
         int[] defaultNums = new int[10];
         for (int i = 0; i < defaultNums.length; i++) {
@@ -34,14 +47,15 @@ public class NumberUtils {
             swap(index, canBeUsed - 1, defaultNums);
             canBeUsed--;
         }
-        if (nums.length>0) {
+        if (nums.length > 0) {
             for (int i = 0; i < nums.length; i++) {
-                no+=nums[i];
+                no += nums[i];
             }
         }
 
         return no;
     }
+
     private static final int LENGTH = 8;
 
     private static void swap(int i, int j, int[] nums) {
@@ -51,9 +65,9 @@ public class NumberUtils {
     }
 
     public static String generateNumber2() {
-        String no="";
-        int num[]=new int[8];
-        int c=0;
+        String no = "";
+        int num[] = new int[8];
+        int c = 0;
         for (int i = 0; i < 8; i++) {
             num[i] = new Random().nextInt(10) + 1;
             c = num[i];
@@ -64,11 +78,102 @@ public class NumberUtils {
                 }
             }
         }
-        if (num.length>0) {
+        if (num.length > 0) {
             for (int i = 0; i < num.length; i++) {
-                no+=num[i];
+                no += num[i];
             }
         }
         return no;
     }
+
+    /**
+     * @param number
+     * @return
+     */
+    public static String translateNumber2Chinese(int number) {
+        String s = String.valueOf(number);
+        if (number <= 10) {
+            return CHINESE_NUMBERS[number];
+        }
+        Stack<NumberUnit> stack = new Stack<>();
+        int index = 0;
+        for (int i = s.length() - 1; i >= 0; i--) {
+            NumberUnit numberUnit = new NumberUnit();
+            numberUnit.chineseNumber = CHINESE_NUMBERS_2[Integer.parseInt(String.valueOf(s.charAt(i)))];
+            numberUnit.chineseUnit = CHINESE_UNIT[index];
+            numberUnit.originalNumber = Integer.parseInt(String.valueOf(s.charAt(i)));
+            stack.push(numberUnit);
+            index++;
+        }
+        StringBuilder stringBuilder = new StringBuilder();
+        while (!stack.isEmpty()) {
+            NumberUnit numberUnit = stack.pop();
+            if (numberUnit.originalNumber > 0) {
+                stringBuilder.append(numberUnit.chineseNumber);
+                if (numberUnit.chineseUnit != ChineseUnit.zero) {
+                    stringBuilder.append(numberUnit.chineseUnit.getValue());
+                }
+            } else if (numberUnit.chineseUnit != ChineseUnit.zero) {
+                NumberUnit nextNumber = stack.peek();
+                if (nextNumber != null && nextNumber.originalNumber != 0) {
+                    stringBuilder.append(numberUnit.chineseNumber);
+                }
+            }
+        }
+        return stringBuilder.toString();
+    }
+
+    private static class NumberUnit {
+
+        protected ChineseUnit chineseUnit;
+
+        protected String chineseNumber;
+
+        protected int originalNumber;
+    }
+
+    enum ChineseUnit {
+        /**
+         *
+         */
+        zero("零"),
+        /**
+         *
+         */
+        ten("十"),
+        /**
+         *
+         */
+        hundred("百"),
+        thousand("千"),
+        ten_thousand("万"),
+        billion("十"),
+        million("百"),
+        ten_million("千"),
+        hundred_mullion("亿");
+
+        private String value;
+
+        ChineseUnit(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Getter method for property <tt>value</tt>.
+         *
+         * @return property value of value
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Setter method for property <tt>value</tt>.
+         *
+         * @param value value to be assigned to property value
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+    }
 }

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

@@ -19,7 +19,8 @@ public class Constants {
     //IM测试地址
     public static final String IM_BASE_URL_TEST = "http://113.105.74.135:8092/";
     //询价服务正式地址
-    public static final String API_INQUIRY = "https://api-inquiry.usoftmall.com/";
+//    public static final String API_INQUIRY = "https://api-inquiry.usoftmall.com/";
+    public static final String API_INQUIRY = "https://api-inquiry.usoftchina.com/";
 //    public static final String API_INQUIRY = "http://218.17.158.219:24000/";
 //    public static final String API_INQUIRY = "http://10.1.51.82:24002/";
 

+ 34 - 0
app_core/common/src/main/res/layout/layout_commom_empty.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:gravity="center_horizontal"
+        android:orientation="vertical">
+
+        <pl.droidsonroids.gif.GifImageView
+            android:id="@+id/view_empty_gif"
+            android:layout_width="110dp"
+            android:layout_height="110dp"
+            android:scaleType="fitEnd"
+            android:src="@drawable/gif_empty_view" />
+
+        <TextView
+            android:id="@+id/common_empty_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="90dp"
+            android:text="@string/empty_message"
+            android:textColor="@color/empty_text_color"
+            android:textSize="14sp"
+            />
+    </LinearLayout>
+</LinearLayout>

+ 1 - 0
app_modular/appworks/build.gradle

@@ -25,4 +25,5 @@ dependencies {
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
     compile project(':facesdk')
     compile project(path: ':appbooking')
+    compile deps.circleprogressbar
 }

+ 9 - 6
app_modular/appworks/src/main/AndroidManifest.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.uas.appworks">
+<manifest package="com.uas.appworks"
+          xmlns:android="http://schemas.android.com/apk/res/android">
 
     <uses-permission android:name="android.permission.READ_CALENDAR" />
     <uses-permission android:name="android.permission.WRITE_CALENDAR" />
@@ -493,10 +493,12 @@
             </intent-filter>
         </activity>
         <activity android:name=".activity.TimeHelperSettingActivity" />
-        <activity android:name=".crm3_0.activity.CustomerVisitActivity"
-            android:label="@string/crm_customer_visit"/>
-        <activity android:name=".crm3_0.activity.CustomerListActivity"
-            android:label="@string/crm_customer_visit"/>
+        <activity
+            android:name=".crm3_0.activity.CustomerVisitActivity"
+            android:label="@string/crm_customer_visit" />
+        <activity
+            android:name=".crm3_0.activity.CustomerListActivity"
+            android:label="@string/crm_customer_visit" />
         <activity android:name=".crm3_0.activity.ContactsListActivity"></activity>
         <activity android:name=".crm3_0.activity.CustomerManageActivity"></activity>
 
@@ -514,6 +516,7 @@
         <activity android:name=".activity.businessManage.BusinessRankListActivity" />
         <activity android:name=".activity.businessManage.businessMineList.BusinessMineListActivity" />
         <activity android:name=".activity.businessManage.businessStage.BusinessStageActivity" />
+        <activity android:name=".activity.businessManage.businessDetailActivity.BusinessDetailNewActivity" />
     </application>
 
 </manifest>

+ 5 - 0
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/BusinessOvertimeListActivity.java

@@ -63,6 +63,11 @@ public class BusinessOvertimeListActivity extends MvpBaseActivity<BusinessManage
 
     }
 
+    @Override
+    public void requestFail(int flag, String failStr) {
+
+    }
+
     @Override
     public void showLoading(String loadStr) {
 

+ 5 - 0
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/BusinessRankListActivity.java

@@ -62,6 +62,11 @@ public class BusinessRankListActivity extends MvpBaseActivity<BusinessManageHome
 
     }
 
+    @Override
+    public void requestFail(int flag, String failStr) {
+
+    }
+
     @Override
     public void showLoading(String loadStr) {
 

+ 41 - 5
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/BusinessRecordListActivity.java

@@ -1,6 +1,10 @@
 package com.uas.appworks.activity.businessManage;
 
 import com.core.base.activity.MvpBaseActivity;
+import com.core.utils.CommonUtil;
+import com.scwang.smartrefresh.layout.api.RefreshLayout;
+import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
+import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
 import com.uas.appworks.R;
 import com.uas.appworks.activity.businessManage.businessManageHome.BusinessManageHomeContract;
 import com.uas.appworks.activity.businessManage.businessManageHome.BusinessManageHomePresenterImpl;
@@ -18,6 +22,9 @@ import java.util.List;
 public class BusinessRecordListActivity extends MvpBaseActivity<BusinessManageHomeContract.IBusinessManageHomePresenter>
         implements BusinessManageHomeContract.IBusinessManageHomeView {
 
+    private RefreshLayout mRefreshLayout;
+    private int mPageIndex = 1, mPageSize = 20;
+
     @Override
     protected int getLayout() {
         return R.layout.activity_business_record_list;
@@ -25,7 +32,7 @@ public class BusinessRecordListActivity extends MvpBaseActivity<BusinessManageHo
 
     @Override
     protected void initView() {
-
+        mRefreshLayout = $(R.id.business_record_list_refresh);
     }
 
     @Override
@@ -35,12 +42,26 @@ public class BusinessRecordListActivity extends MvpBaseActivity<BusinessManageHo
 
     @Override
     protected void initEvent() {
-
+        mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(RefreshLayout refreshLayout) {
+                mPageIndex = 1;
+                mPresenter.getBusinessRecord(mContext, CommonUtil.getEmcode(), mPageIndex, mPageSize);
+            }
+        });
+
+        mRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore(RefreshLayout refreshLayout) {
+                mPageIndex++;
+                mPresenter.getBusinessRecord(mContext, CommonUtil.getEmcode(), mPageIndex, mPageSize);
+            }
+        });
     }
 
     @Override
     protected void initData() {
-
+        mPresenter.getBusinessRecord(mContext, CommonUtil.getEmcode(), mPageIndex, mPageSize);
     }
 
     @Override
@@ -64,12 +85,27 @@ public class BusinessRecordListActivity extends MvpBaseActivity<BusinessManageHo
     }
 
     @Override
-    public void showLoading(String loadStr) {
+    public void requestFail(int flag, String failStr) {
 
     }
 
     @Override
-    public void hideLoading() {
+    public void showLoading(String loadStr) {
+        if (mRefreshLayout != null && !(mRefreshLayout.isRefreshing() || mRefreshLayout.isLoading())) {
+            progressDialog.show();
+        }
+    }
 
+    @Override
+    public void hideLoading() {
+        if (mRefreshLayout != null) {
+            if (mRefreshLayout.isRefreshing()) {
+                mRefreshLayout.finishRefresh(0);
+            }
+            if (mRefreshLayout.isLoading()) {
+                mRefreshLayout.finishLoadMore(0);
+            }
+        }
+        progressDialog.dismiss();
     }
 }

+ 32 - 0
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessDetailActivity/BusinessDetailContract.java

@@ -0,0 +1,32 @@
+package com.uas.appworks.activity.businessManage.businessDetailActivity;
+
+import android.content.Context;
+
+import com.core.base.presenter.MvpPresenter;
+import com.core.base.view.MvpView;
+import com.uas.appworks.model.bean.BusinessStageBean;
+import com.uas.appworks.model.bean.CommonFormBean;
+
+import java.util.List;
+
+/**
+ * @author RaoMeng
+ * @describe
+ * @date 2018/9/18 14:08
+ */
+public class BusinessDetailContract {
+
+    interface BusinessDetailView extends MvpView {
+        void requestMainDetailSucess(List<CommonFormBean> allDetailList, List<CommonFormBean> visibleDetailList);
+
+        void requestStageSuccess(List<BusinessStageBean> businessStageBeans);
+
+        void requestFail(int flag, String failStr);
+    }
+
+    interface BusinessDetailPresenter extends MvpPresenter<BusinessDetailView> {
+        void requestMainDetail(Context context, int ID, String caller);
+
+        void requestStageList(Context context);
+    }
+}

+ 213 - 0
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessDetailActivity/BusinessDetailNewActivity.java

@@ -0,0 +1,213 @@
+package com.uas.appworks.activity.businessManage.businessDetailActivity;
+
+import android.content.Intent;
+import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
+import android.support.v4.view.ViewPager;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.common.data.NumberUtils;
+import com.core.base.activity.MvpBaseActivity;
+import com.dinuscxj.progressbar.CircleProgressBar;
+import com.uas.appworks.R;
+import com.uas.appworks.activity.businessManage.businessStage.BusinessStageActivity;
+import com.uas.appworks.adapter.CommonFormDetailAdapter;
+import com.uas.appworks.adapter.TabViewpagerAdapter;
+import com.uas.appworks.fragment.BusinessMineListFragment;
+import com.uas.appworks.model.bean.BusinessStageBean;
+import com.uas.appworks.model.bean.CommonFormBean;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author RaoMeng
+ * @describe
+ * @date 2018/9/18 14:07
+ */
+public class BusinessDetailNewActivity extends MvpBaseActivity<BusinessDetailContract.BusinessDetailPresenter>
+        implements BusinessDetailContract.BusinessDetailView, View.OnClickListener {
+    private RecyclerView mMainRecyclerView;
+    private CircleProgressBar mCircleProgressBar;
+    private ImageView mStageImageView;
+    private TextView mStageContentTextView, mStageIndexTextView, mAddScheduleBtn, mFollowBtn;
+    private TabLayout mTabLayout;
+    private TabViewpagerAdapter mTabViewpagerAdapter;
+    private List<String> mTitleStrings;
+    private List<Fragment> mFragments;
+    private ViewPager mViewPager;
+    private CommonFormDetailAdapter mCommonFormDetailAdapter;
+    private List<CommonFormBean> mCommonFormBeans;
+    private List<BusinessStageBean> mBusinessStageBeans;
+    private int mId;
+    private String mBctype;
+    private String mStageCode;
+    private BusinessMineListFragment mChargeFragment, mBranchFragment;
+
+    @Override
+    protected int getLayout() {
+        return R.layout.activity_business_detail_new;
+    }
+
+    @Override
+    protected void initView() {
+        Intent intent = getIntent();
+        if (intent != null) {
+            mId = intent.getIntExtra("id", -1);
+            mBctype = intent.getStringExtra("type");
+            mStageCode = intent.getStringExtra("stage");
+        }
+
+        mAddScheduleBtn = $(R.id.business_detail_new_add_schedule_tv);
+        mFollowBtn = $(R.id.business_detail_new_follow_tv);
+        mMainRecyclerView = $(R.id.business_detail_new_main_rv);
+        mMainRecyclerView.setLayoutManager(new LinearLayoutManager(this));
+        mMainRecyclerView.setNestedScrollingEnabled(false);
+        mCommonFormBeans = new ArrayList<>();
+        mCommonFormDetailAdapter = new CommonFormDetailAdapter(mCommonFormBeans);
+        mMainRecyclerView.setAdapter(mCommonFormDetailAdapter);
+
+        mStageImageView = $(R.id.business_detail_new_stage_iv);
+        mStageIndexTextView = $(R.id.business_detail_new_stage_tv);
+        mStageContentTextView = $(R.id.business_detail_stage_content_tv);
+        mViewPager = $(R.id.business_detail_new_vp);
+        mCircleProgressBar = $(R.id.business_detail_new_progress);
+        mBusinessStageBeans = new ArrayList<>();
+
+        mTabLayout = $(R.id.business_detail_new_tablayout);
+        mTitleStrings = new ArrayList<>();
+        mTitleStrings.add("跟进记录");
+        mTitleStrings.add("关联信息");
+
+        mTabLayout.setTabMode(TabLayout.MODE_FIXED);
+        mTabLayout.addTab(mTabLayout.newTab().setText(mTitleStrings.get(0)));
+        mTabLayout.addTab(mTabLayout.newTab().setText(mTitleStrings.get(1)));
+
+        mChargeFragment = BusinessMineListFragment.newInstance(BusinessMineListFragment.FLAG_BUSINESS_CHARGE);
+        mBranchFragment = BusinessMineListFragment.newInstance(BusinessMineListFragment.FLAG_BUSINESS_BRANCH);
+
+        mFragments = new ArrayList<>();
+        mFragments.add(mChargeFragment);
+        mFragments.add(mBranchFragment);
+        mTabViewpagerAdapter = new TabViewpagerAdapter(this, mFragments, mTitleStrings, getSupportFragmentManager());
+
+        mViewPager.setOffscreenPageLimit(mFragments.size() - 1);
+        mViewPager.setAdapter(mTabViewpagerAdapter);
+        mTabLayout.setupWithViewPager(mViewPager);
+    }
+
+    @Override
+    protected BusinessDetailContract.BusinessDetailPresenter initPresenter() {
+        return new BusinessDetailPresenterImpl();
+    }
+
+    @Override
+    protected void initEvent() {
+        mStageImageView.setOnClickListener(this);
+        mAddScheduleBtn.setOnClickListener(this);
+        mFollowBtn.setOnClickListener(this);
+    }
+
+    @Override
+    protected void initData() {
+        if ("项目商机".equals(mBctype)) {
+            mPresenter.requestMainDetail(this, mId, "ProjectBusinessChance");
+        } else if ("OEM商机".equals(mBctype)) {
+            mPresenter.requestMainDetail(this, mId, "OEMBusinessChance");
+        } else {
+            mPresenter.requestMainDetail(this, mId, "ProjectBusinessChance");
+        }
+
+        mPresenter.requestStageList(this);
+    }
+
+    @Override
+    public void showLoading(String loadStr) {
+        progressDialog.show();
+    }
+
+    @Override
+    public void hideLoading() {
+        progressDialog.dismiss();
+    }
+
+    @Override
+    public void onClick(View view) {
+        int i = view.getId();
+        if (i == R.id.business_detail_new_stage_iv) {
+            startActivity(new Intent(mContext, BusinessStageActivity.class)
+                    .putExtra("stageBeans", (Serializable) mBusinessStageBeans)
+                    .putExtra("stageCode", mStageCode));
+        } else if (i == R.id.business_detail_new_add_schedule_tv) {
+            toast("添加日程");
+        } else if (i == R.id.business_detail_new_follow_tv) {
+            toast("商机跟进");
+        } else {
+
+        }
+    }
+
+    @Override
+    public void requestMainDetailSucess(List<CommonFormBean> allDetailList, List<CommonFormBean> visibleDetailList) {
+        mCommonFormBeans.addAll(visibleDetailList);
+        mCommonFormDetailAdapter.notifyDataSetChanged();
+    }
+
+    @Override
+    public void requestStageSuccess(List<BusinessStageBean> businessStageBeans) {
+        mBusinessStageBeans.addAll(businessStageBeans);
+
+        boolean isExist = false;
+        if (mBusinessStageBeans != null && mBusinessStageBeans.size() > 0) {
+            mCircleProgressBar.setMax(mBusinessStageBeans.size());
+            for (int i = 0; i < mBusinessStageBeans.size(); i++) {
+                BusinessStageBean businessStageBean = mBusinessStageBeans.get(i);
+
+                if (mStageCode != null && mStageCode.equals(businessStageBean.getBS_CODE())) {
+                    String bs_point = businessStageBean.getBS_POINT();
+                    if (!TextUtils.isEmpty(bs_point)) {
+                        String[] split = bs_point.split("#");
+
+                        if (split != null && split.length > 0) {
+                            String pointStr = "";
+                            for (int j = 0; j < split.length; j++) {
+                                pointStr += ((j + 1) + "、" + split[j] + "\n");
+                            }
+                            if (pointStr.length() > 1) {
+                                pointStr = pointStr.substring(0, pointStr.length() - 1);
+                            }
+                            mStageContentTextView.setText(pointStr);
+                        }
+                    }
+                    int stageIndex = i + 1;
+                    mCircleProgressBar.setProgress(stageIndex);
+                    mStageIndexTextView.setText("第" + NumberUtils.translateNumber2Chinese(stageIndex) + "阶段");
+
+                    isExist = true;
+                    break;
+                }
+
+            }
+        }
+
+        if (!isExist) {
+            mStageIndexTextView.setText("阶段为空");
+            mStageContentTextView.setText("");
+        }
+    }
+
+    @Override
+    public void requestFail(int flag, String failStr) {
+        switch (flag) {
+            case BusinessDetailPresenterImpl.REQUEST_BUSINESS_DETAIL:
+                toast(failStr);
+                break;
+        }
+    }
+}

+ 225 - 0
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessDetailActivity/BusinessDetailPresenterImpl.java

@@ -0,0 +1,225 @@
+package com.uas.appworks.activity.businessManage.businessDetailActivity;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.core.base.presenter.BaseMvpPresenter;
+import com.core.utils.CommonUtil;
+import com.me.network.app.base.HttpCallback;
+import com.me.network.app.base.HttpParams;
+import com.me.network.app.http.HttpRequest;
+import com.me.network.app.http.Method;
+import com.uas.appworks.model.bean.BusinessStageBean;
+import com.uas.appworks.model.bean.CommonFormBean;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author RaoMeng
+ * @describe
+ * @date 2018/9/18 14:09
+ */
+public class BusinessDetailPresenterImpl extends BaseMvpPresenter<BusinessDetailContract.BusinessDetailView>
+        implements BusinessDetailContract.BusinessDetailPresenter, HttpCallback {
+    public static final int REQUEST_BUSINESS_DETAIL = 744;
+    public static final int REQUEST_BUSINESS_STAGE = 745;
+
+    @Override
+    public void onMvpAttachView(BusinessDetailContract.BusinessDetailView view, Bundle savedInstanceState) {
+        super.onMvpAttachView(view, savedInstanceState);
+    }
+
+    @Override
+    public void onMvpResume() {
+        super.onMvpResume();
+    }
+
+
+    @Override
+    public void requestMainDetail(Context context, int ID, String caller) {
+        getMvpView().showLoading("");
+        HttpRequest.getInstance().sendRequest(CommonUtil.getAppBaseUrl(context),
+                new HttpParams.Builder()
+                        .url("mobile/getformandgriddetail.action")
+                        .method(Method.GET)
+                        .flag(REQUEST_BUSINESS_DETAIL)
+                        .addParam("caller", caller)
+                        .addParam("condition", "1=1")
+                        .addParam("id", ID)
+                        .addParam("sessionId", CommonUtil.getSharedPreferences(context, "sessionId"))
+                        .addHeader("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(context, "sessionId"))
+                        .build(), this);
+    }
+
+    @Override
+    public void requestStageList(Context context) {
+        getMvpView().showLoading("");
+
+        HttpRequest.getInstance().sendRequest(CommonUtil.getAppBaseUrl(context),
+                new HttpParams.Builder()
+                        .url("mobile/crm/getBusinessChanceStage.action")
+                        .flag(REQUEST_BUSINESS_STAGE)
+                        .method(Method.POST)
+                        .addParam("master", CommonUtil.getMaster())
+                        .addParam("sessionId", CommonUtil.getSharedPreferences(context, "sessionId"))
+                        .addHeader("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(context, "sessionId"))
+                        .build(), this);
+    }
+
+    @Override
+    public void onSuccess(int flag, Object o) throws Exception {
+        getMvpView().hideLoading();
+        switch (flag) {
+            case REQUEST_BUSINESS_DETAIL:
+                try {
+                    analysisBusinessDetail(o);
+                } catch (Exception e) {
+                    getMvpView().requestMainDetailSucess(new ArrayList<CommonFormBean>(), new ArrayList<CommonFormBean>());
+                }
+                break;
+            case REQUEST_BUSINESS_STAGE:
+                try {
+                    analysisBusinessStage(o);
+                } catch (Exception e) {
+                    getMvpView().requestStageSuccess(new ArrayList<BusinessStageBean>());
+                }
+            default:
+                break;
+        }
+    }
+
+    @Override
+    public void onFail(int flag, String failStr) throws Exception {
+        getMvpView().hideLoading();
+        LogUtil.prinlnLongMsg("raoDetailFail", failStr);
+        getMvpView().requestFail(flag, failStr);
+    }
+
+    private void analysisBusinessStage(Object o) {
+        String result = o.toString();
+        List<BusinessStageBean> businessStageBeans = new ArrayList<>();
+        if (!JSONUtil.validate(result)) {
+            getMvpView().requestStageSuccess(businessStageBeans);
+            return;
+        }
+        JSONObject resultObject = JSON.parseObject(result);
+        if (resultObject == null) {
+            getMvpView().requestStageSuccess(businessStageBeans);
+            return;
+        }
+        JSONArray stageArray = resultObject.getJSONArray("stages");
+        if (stageArray == null) {
+            getMvpView().requestStageSuccess(businessStageBeans);
+            return;
+        }
+        for (int i = 0; i < stageArray.size(); i++) {
+            JSONObject stageObject = stageArray.getJSONObject(i);
+            if (stageObject != null) {
+                BusinessStageBean businessStageBean = new BusinessStageBean();
+                businessStageBean.setBS_ID(JSONUtil.getInt(stageObject, "BS_ID"));
+                businessStageBean.setBS_CODE(JSONUtil.getText(stageObject, "BS_CODE"));
+                businessStageBean.setBS_NAME(JSONUtil.getText(stageObject, "BS_NAME"));
+                businessStageBean.setBS_REMARK(JSONUtil.getText(stageObject, "BS_REMARK"));
+                businessStageBean.setBS_RELATIVEITEM(JSONUtil.getText(stageObject, "BS_RELATIVEITEM"));
+                businessStageBean.setBS_COLOR(JSONUtil.getText(stageObject, "BS_COLOR"));
+                businessStageBean.setBS_DETNO(JSONUtil.getInt(stageObject, "BS_DETNO"));
+                businessStageBean.setBS_DAYS(JSONUtil.getInt(stageObject, "BS_DAYS"));
+                businessStageBean.setBS_ACTIVEDATE(JSONUtil.getInt(stageObject, "BS_ACTIVEDATE"));
+                businessStageBean.setBS_POINT(JSONUtil.getText(stageObject, "BS_POINT"));
+                businessStageBean.setBS_POINTFLAG(JSONUtil.getText(stageObject, "BS_POINTFLAG"));
+                businessStageBean.setBS_POINTDETNO(JSONUtil.getText(stageObject, "BS_POINTDETNO"));
+                businessStageBean.setBS_CANTURNCUST(JSONUtil.getText(stageObject, "BS_CANTURNCUST"));
+                businessStageBean.setBS_TYPE(JSONUtil.getText(stageObject, "BS_TYPE"));
+                businessStageBean.setBS_ENDSTATUS(JSONUtil.getText(stageObject, "BS_ENDSTATUS"));
+                businessStageBean.setBS_ENDNODE(JSONUtil.getText(stageObject, "BS_ENDNODE"));
+                businessStageBean.setBS_EQUITYEDGE(JSONUtil.getText(stageObject, "BS_EQUITYEDGE"));
+
+                businessStageBeans.add(businessStageBean);
+            }
+        }
+        getMvpView().requestStageSuccess(businessStageBeans);
+    }
+
+    private void analysisBusinessDetail(Object o) {
+        String result = o.toString();
+        List<CommonFormBean> allFormBeans = new ArrayList<>();
+        List<CommonFormBean> visibleFormBeans = new ArrayList<>();
+        if (!JSONUtil.validate(result)) {
+            getMvpView().requestMainDetailSucess(allFormBeans, visibleFormBeans);
+            return;
+        }
+        JSONObject resultObject = JSON.parseObject(result);
+        if (resultObject == null) {
+            getMvpView().requestMainDetailSucess(allFormBeans, visibleFormBeans);
+            return;
+        }
+        JSONObject dataObject = resultObject.getJSONObject("data");
+        if (dataObject == null) {
+            getMvpView().requestMainDetailSucess(allFormBeans, visibleFormBeans);
+            return;
+        }
+        JSONArray formdetailArray = dataObject.getJSONArray("formdetail");
+        if (formdetailArray == null || formdetailArray.size() == 0) {
+            getMvpView().requestMainDetailSucess(allFormBeans, visibleFormBeans);
+            return;
+        }
+        Map<String, List<CommonFormBean>> stringListMap = new LinkedHashMap<>();
+        for (int i = 0; i < formdetailArray.size(); i++) {
+            JSONObject formdetailObject = formdetailArray.getJSONObject(i);
+            if (formdetailObject != null) {
+                CommonFormBean commonFormBean = new CommonFormBean();
+
+                commonFormBean.setCaption(JSONUtil.getText(formdetailObject, "fd_caption"));
+                commonFormBean.setMcaption(JSONUtil.getText(formdetailObject, "mfd_caption"));
+                commonFormBean.setField(JSONUtil.getText(formdetailObject, "fd_field"));
+                commonFormBean.setValue(JSONUtil.getText(formdetailObject, "fd_value"));
+                commonFormBean.setMaxlength(JSONUtil.getInt(formdetailObject, "fd_maxlength"));
+                commonFormBean.setDetno(JSONUtil.getInt(formdetailObject, "fd_detno"));
+                commonFormBean.setType(JSONUtil.getText(formdetailObject, "fd_type"));
+                commonFormBean.setReadonly(JSONUtil.getText(formdetailObject, "fd_readonly"));
+                commonFormBean.setId(JSONUtil.getInt(formdetailObject, "fd_id"));
+                commonFormBean.setItemType(CommonFormBean.COMMON_FORM_CONTENT_ITEM);
+                int mfd_isdefault = JSONUtil.getInt(formdetailObject, "mfd_isdefault");
+                commonFormBean.setIsdefault(mfd_isdefault);
+                String fd_group = JSONUtil.getText(formdetailObject, "fd_group");
+                commonFormBean.setGroup(fd_group);
+
+                if (mfd_isdefault == -1) {
+                    if (stringListMap.containsKey(fd_group)) {
+                        List<CommonFormBean> cacheFormBeans = stringListMap.get(fd_group);
+                        if (cacheFormBeans != null) {
+                            cacheFormBeans.add(commonFormBean);
+                        }
+                        stringListMap.put(fd_group, cacheFormBeans);
+                    } else {
+                        List<CommonFormBean> mapFormBeans = new ArrayList<>();
+                        mapFormBeans.add(commonFormBean);
+                        stringListMap.put(fd_group, mapFormBeans);
+                    }
+                }
+
+                allFormBeans.add(commonFormBean);
+            }
+        }
+        Iterator<Map.Entry<String, List<CommonFormBean>>> iterator = stringListMap.entrySet().iterator();
+        while (iterator.hasNext()) {
+            Map.Entry<String, List<CommonFormBean>> next = iterator.next();
+            List<CommonFormBean> value = next.getValue();
+
+            CommonFormBean commonFormBean = new CommonFormBean();
+            commonFormBean.setItemType(CommonFormBean.COMMON_FORM_GRAY_LINE);
+            visibleFormBeans.add(commonFormBean);
+            visibleFormBeans.addAll(value);
+        }
+        getMvpView().requestMainDetailSucess(allFormBeans, visibleFormBeans);
+    }
+}

+ 29 - 15
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessManageHome/BusinessManageHomeActivity.java

@@ -11,6 +11,7 @@ import android.widget.TextView;
 import com.common.data.CalendarUtil;
 import com.common.data.DateFormatUtil;
 import com.core.base.activity.MvpBaseActivity;
+import com.core.utils.CommonUtil;
 import com.core.utils.time.wheel.OASigninPicker;
 import com.modular.apputils.utils.RecyclerItemDecoration;
 import com.scwang.smartrefresh.layout.api.RefreshLayout;
@@ -20,6 +21,7 @@ import com.uas.appworks.activity.businessManage.BusinessOvertimeListActivity;
 import com.uas.appworks.activity.businessManage.BusinessRankListActivity;
 import com.uas.appworks.activity.businessManage.BusinessRecordListActivity;
 import com.uas.appworks.activity.businessManage.businessMineList.BusinessMineListActivity;
+import com.uas.appworks.activity.businessManage.businessStage.BusinessStageActivity;
 import com.uas.appworks.adapter.BusinessHomeOvertimeAdapter;
 import com.uas.appworks.adapter.BusinessHomeRankAdapter;
 import com.uas.appworks.adapter.BusinessHomeRecordAdapter;
@@ -44,7 +46,7 @@ public class BusinessManageHomeActivity extends MvpBaseActivity<BusinessManageHo
     private RecyclerView mrecordRecyclerView, mOvertimeRecyclerView, mRankRecyclerView;
     private LinearLayout mDataTimeLayout, mRecordAllLayout,
             mOvertimeAllLayout, mRankAllLayout,
-            mHeaderMineLayout;
+            mHeaderMineLayout, mHeaderCompanyLayout;
     private List<BusinessRecordBean> mBusinessRecordBeans;
     private List<BusinessOverTimeBean> mBusinessOverTimeBeans;
     private List<BusinessRankBean> mBusinessRankBeans;
@@ -73,6 +75,7 @@ public class BusinessManageHomeActivity extends MvpBaseActivity<BusinessManageHo
         mRankAllLayout = $(R.id.business_manage_home_rank_all);
         mDataTimeLayout = $(R.id.business_manage_home_data_date_ll);
         mHeaderMineLayout = $(R.id.business_manage_home_mine_ll);
+        mHeaderCompanyLayout = $(R.id.business_manage_home_company_ll);
 
         mDataRefreshTime = DateFormatUtil.long2Str(DateFormatUtil.YMD_HM);
         mRecordRefreshTime = DateFormatUtil.long2Str(DateFormatUtil.YMD_HM);
@@ -119,14 +122,16 @@ public class BusinessManageHomeActivity extends MvpBaseActivity<BusinessManageHo
         mRankAllLayout.setOnClickListener(this);
         mDataTimeLayout.setOnClickListener(this);
         mHeaderMineLayout.setOnClickListener(this);
+        mHeaderCompanyLayout.setOnClickListener(this);
 
         mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
             @Override
             public void onRefresh(RefreshLayout refreshLayout) {
-                mPresenter.getBusinessData();
-                mPresenter.getBusinessRecord();
-                mPresenter.getBusinessOvertime();
-                mPresenter.getBusinessRank();
+                mDataDateTime = DateFormatUtil.long2Str("yyyy年MM月");
+                mPresenter.getBusinessData(mContext, DateFormatUtil.long2Str(DateFormatUtil.YM));
+                mPresenter.getBusinessRecord(mContext, CommonUtil.getEmcode(), 1, 2);
+                mPresenter.getBusinessOvertime(mContext, CommonUtil.getEmcode(), 1, 2);
+                mPresenter.getBusinessRank(mContext, 1, 3);
             }
         });
     }
@@ -136,23 +141,24 @@ public class BusinessManageHomeActivity extends MvpBaseActivity<BusinessManageHo
         mDataDateTime = DateFormatUtil.long2Str(System.currentTimeMillis(), "yyyy年MM月");
         mDataTimeTextView.setText(mDataDateTime);
 
-        mPresenter.getBusinessData();
-        mPresenter.getBusinessRecord();
-        mPresenter.getBusinessOvertime();
-        mPresenter.getBusinessRank();
+        mPresenter.getBusinessData(mContext, DateFormatUtil.long2Str(DateFormatUtil.YM));
+        mPresenter.getBusinessRecord(mContext, CommonUtil.getEmcode(), 1, 2);
+        mPresenter.getBusinessOvertime(mContext, CommonUtil.getEmcode(), 1, 2);
+        mPresenter.getBusinessRank(mContext, 1, 3);
     }
 
     @Override
     public void onClick(View view) {
         int i = view.getId();
         if (i == R.id.business_manage_home_data_refresh_tv) {
-            mPresenter.getBusinessData();
+            mDataDateTime = DateFormatUtil.long2Str("yyyy年MM月");
+            mPresenter.getBusinessData(mContext, DateFormatUtil.long2Str(DateFormatUtil.YM));
         } else if (i == R.id.business_manage_home_record_refresh_tv) {
-            mPresenter.getBusinessRecord();
+            mPresenter.getBusinessRecord(mContext, CommonUtil.getEmcode(), 1, 2);
         } else if (i == R.id.business_manage_home_overtime_refresh_tv) {
-            mPresenter.getBusinessOvertime();
+            mPresenter.getBusinessOvertime(mContext, CommonUtil.getEmcode(), 1, 2);
         } else if (i == R.id.business_manage_home_rank_refresh_tv) {
-            mPresenter.getBusinessRank();
+            mPresenter.getBusinessRank(mContext, 1, 3);
         } else if (i == R.id.business_manage_home_record_all) {
             startActivity(BusinessRecordListActivity.class);
         } else if (i == R.id.business_manage_home_overtime_all) {
@@ -165,6 +171,8 @@ public class BusinessManageHomeActivity extends MvpBaseActivity<BusinessManageHo
             showDateDialog(year, month, mDataTimeTextView);
         } else if (i == R.id.business_manage_home_mine_ll) {
             startActivity(BusinessMineListActivity.class);
+        } else if (i == R.id.business_manage_home_company_ll) {
+            startActivity(BusinessStageActivity.class);
         }
     }
 
@@ -200,6 +208,7 @@ public class BusinessManageHomeActivity extends MvpBaseActivity<BusinessManageHo
 
     @Override
     public void requestDataSuccess() {
+        mDataTimeTextView.setText(mDataDateTime);
 
         mDataRefreshTime = DateFormatUtil.long2Str(DateFormatUtil.YMD_HM);
         mDataRefreshTextView.setText(mDataRefreshTime);
@@ -235,6 +244,11 @@ public class BusinessManageHomeActivity extends MvpBaseActivity<BusinessManageHo
         mRankRefreshTextView.setText(mRankRefreshTime);
     }
 
+    @Override
+    public void requestFail(int flag, String failStr) {
+
+    }
+
     private void showDateDialog(String year, String month, final TextView tv) {
         OASigninPicker picker = new OASigninPicker(this, 2000, 2030, false);
         picker.setRange(2030, 12, 31);
@@ -248,9 +262,9 @@ public class BusinessManageHomeActivity extends MvpBaseActivity<BusinessManageHo
             @Override
             public void setTime(String year, String month, String day) {
                 mDataDateTime = year + "年" + month + "月";
-                tv.setText(mDataDateTime);
+//                tv.setText(mDataDateTime);
 
-                mPresenter.getBusinessData();
+                mPresenter.getBusinessData(mContext, year + "-" + month);
             }
         });
         picker.show();

+ 8 - 4
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessManageHome/BusinessManageHomeContract.java

@@ -1,5 +1,7 @@
 package com.uas.appworks.activity.businessManage.businessManageHome;
 
+import android.content.Context;
+
 import com.core.base.presenter.MvpPresenter;
 import com.core.base.view.MvpView;
 import com.uas.appworks.model.bean.BusinessOverTimeBean;
@@ -23,15 +25,17 @@ public class BusinessManageHomeContract {
         void requestOvertimeSuccess(List<BusinessOverTimeBean> businessOverTimeBeans);
 
         void requestRankSuccess(List<BusinessRankBean> businessRankBeans);
+
+        void requestFail(int flag, String failStr);
     }
 
     public interface IBusinessManageHomePresenter extends MvpPresenter<IBusinessManageHomeView> {
-        void getBusinessData();
+        void getBusinessData(Context context, String dataTime);
 
-        void getBusinessRecord();
+        void getBusinessRecord(Context context, String salesmanCode, int pageIndex, int pageSize);
 
-        void getBusinessOvertime();
+        void getBusinessOvertime(Context context, String salesmanCode, int pageIndex, int pageSize);
 
-        void getBusinessRank();
+        void getBusinessRank(Context context, int pageIndex, int pageSize);
     }
 }

+ 90 - 5
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessManageHome/BusinessManageHomePresenterImpl.java

@@ -1,8 +1,14 @@
 package com.uas.appworks.activity.businessManage.businessManageHome;
 
+import android.content.Context;
 import android.os.Bundle;
 
+import com.common.LogUtil;
 import com.core.base.presenter.BaseMvpPresenter;
+import com.me.network.app.base.HttpCallback;
+import com.me.network.app.base.HttpParams;
+import com.me.network.app.http.HttpRequest;
+import com.me.network.app.http.Method;
 import com.uas.appworks.model.bean.BusinessOverTimeBean;
 import com.uas.appworks.model.bean.BusinessRankBean;
 import com.uas.appworks.model.bean.BusinessRecordBean;
@@ -16,7 +22,11 @@ import java.util.List;
  * @date 2018/9/10 14:44
  */
 public class BusinessManageHomePresenterImpl extends BaseMvpPresenter<BusinessManageHomeContract.IBusinessManageHomeView>
-        implements BusinessManageHomeContract.IBusinessManageHomePresenter {
+        implements BusinessManageHomeContract.IBusinessManageHomePresenter, HttpCallback {
+    public static final int REQUEST_BUSINESS_RECORD = 58;
+    public static final int REQUEST_BUSINESS_DATA = 59;
+    public static final int REQUEST_BUSINESS_OVERTIME = 60;
+    public static final int REQUEST_BUSINESS_RANK = 61;
 
     @Override
     public void onMvpAttachView(BusinessManageHomeContract.IBusinessManageHomeView view, Bundle savedInstanceState) {
@@ -29,17 +39,34 @@ public class BusinessManageHomePresenterImpl extends BaseMvpPresenter<BusinessMa
     }
 
     @Override
-    public void getBusinessData() {
+    public void getBusinessData(Context context, String dataTime) {
         getMvpView().showLoading("");
 
+        HttpRequest.getInstance().sendRequest("http://192.168.253.52:8080/ERP/",
+                new HttpParams.Builder()
+                        .url("mobile/crm/businessDataByMonth.action")
+                        .flag(REQUEST_BUSINESS_DATA)
+                        .method(Method.GET)
+                        .addParam("dataTime", dataTime)
+                        .build(), this);
         getMvpView().hideLoading();
         getMvpView().requestDataSuccess();
     }
 
     @Override
-    public void getBusinessRecord() {
+    public void getBusinessRecord(Context context, String salesmanCode, int pageIndex, int pageSize) {
         getMvpView().showLoading("");
 
+        HttpRequest.getInstance().sendRequest("http://192.168.253.52:8080/ERP/",
+                new HttpParams.Builder()
+                        .url("mobile/crm/businessRecord.action")
+                        .flag(REQUEST_BUSINESS_RECORD)
+                        .method(Method.GET)
+                        .addParam("salesmanCode", salesmanCode)
+                        .addParam("pageIndex", pageIndex)
+                        .addParam("pageSize", pageSize)
+                        .build(), this);
+
         List<BusinessRecordBean> mBusinessRecordBeans = new ArrayList<>();
         mBusinessRecordBeans.add(new BusinessRecordBean());
         mBusinessRecordBeans.add(new BusinessRecordBean());
@@ -49,9 +76,18 @@ public class BusinessManageHomePresenterImpl extends BaseMvpPresenter<BusinessMa
     }
 
     @Override
-    public void getBusinessOvertime() {
+    public void getBusinessOvertime(Context context, String salesmanCode, int pageIndex, int pageSize) {
         getMvpView().showLoading("");
 
+        HttpRequest.getInstance().sendRequest("http://192.168.253.52:8080/ERP/",
+                new HttpParams.Builder()
+                        .url("mobile/crm/businessOvertime.action")
+                        .flag(REQUEST_BUSINESS_OVERTIME)
+                        .method(Method.GET)
+                        .addParam("salesmanCode", salesmanCode)
+                        .addParam("pageIndex", pageIndex)
+                        .addParam("pageSize", pageSize)
+                        .build(), this);
         List<BusinessOverTimeBean> mBusinessOverTimeBeans = new ArrayList<>();
         mBusinessOverTimeBeans.add(new BusinessOverTimeBean());
         mBusinessOverTimeBeans.add(new BusinessOverTimeBean());
@@ -61,9 +97,17 @@ public class BusinessManageHomePresenterImpl extends BaseMvpPresenter<BusinessMa
     }
 
     @Override
-    public void getBusinessRank() {
+    public void getBusinessRank(Context context, int pageIndex, int pageSize) {
         getMvpView().showLoading("");
 
+        HttpRequest.getInstance().sendRequest("http://192.168.253.52:8080/ERP/",
+                new HttpParams.Builder()
+                        .url("mobile/crm/businessRank.action")
+                        .flag(REQUEST_BUSINESS_RANK)
+                        .method(Method.GET)
+                        .addParam("pageIndex", pageIndex)
+                        .addParam("pageSize", pageSize)
+                        .build(), this);
         List<BusinessRankBean> mBusinessRankBeans = new ArrayList<>();
         mBusinessRankBeans.add(new BusinessRankBean());
         mBusinessRankBeans.add(new BusinessRankBean());
@@ -72,4 +116,45 @@ public class BusinessManageHomePresenterImpl extends BaseMvpPresenter<BusinessMa
         getMvpView().hideLoading();
         getMvpView().requestRankSuccess(mBusinessRankBeans);
     }
+
+    @Override
+    public void onSuccess(int flag, Object o) throws Exception {
+        String result = o.toString();
+        switch (flag) {
+            case REQUEST_BUSINESS_RECORD:
+                LogUtil.prinlnLongMsg("raoRecordSuc", result);
+                break;
+            case REQUEST_BUSINESS_DATA:
+                LogUtil.prinlnLongMsg("raoDataSuc", result);
+                break;
+            case REQUEST_BUSINESS_OVERTIME:
+                LogUtil.prinlnLongMsg("raoOvertimeSuc", result);
+                break;
+            case REQUEST_BUSINESS_RANK:
+                LogUtil.prinlnLongMsg("raoRankSuc", result);
+                break;
+            default:
+                break;
+        }
+    }
+
+    @Override
+    public void onFail(int flag, String failStr) throws Exception {
+        switch (flag) {
+            case REQUEST_BUSINESS_RECORD:
+                LogUtil.prinlnLongMsg("raoRecordFail", failStr);
+                break;
+            case REQUEST_BUSINESS_DATA:
+                LogUtil.prinlnLongMsg("raoDataFail", failStr);
+                break;
+            case REQUEST_BUSINESS_OVERTIME:
+                LogUtil.prinlnLongMsg("raoOvertimeFail", failStr);
+                break;
+            case REQUEST_BUSINESS_RANK:
+                LogUtil.prinlnLongMsg("raoRankFail", failStr);
+                break;
+            default:
+                break;
+        }
+    }
 }

+ 2 - 2
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessMineList/BusinessMineListContract.java

@@ -4,7 +4,7 @@ import android.content.Context;
 
 import com.core.base.presenter.MvpPresenter;
 import com.core.base.view.MvpView;
-import com.uas.appworks.model.bean.BusinessOverTimeBean;
+import com.uas.appworks.model.bean.BusinessMineChildBean;
 
 import java.util.List;
 import java.util.Map;
@@ -17,7 +17,7 @@ import java.util.Map;
 public class BusinessMineListContract {
 
     public interface IBusinessMineListView extends MvpView {
-        void requestListSuccess(List<BusinessOverTimeBean> businessOverTimeBeans);
+        void requestListSuccess(List<BusinessMineChildBean> businessMineBeans);
 
         void requestListFail(String failMsg);
     }

+ 86 - 10
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessMineList/BusinessMineListPresenterImpl.java

@@ -2,16 +2,18 @@ package com.uas.appworks.activity.businessManage.businessMineList;
 
 import android.content.Context;
 import android.os.Bundle;
-import android.os.Handler;
-import android.util.Log;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.data.JSONUtil;
 import com.core.base.presenter.BaseMvpPresenter;
 import com.core.utils.CommonUtil;
 import com.me.network.app.base.HttpCallback;
 import com.me.network.app.base.HttpParams;
 import com.me.network.app.http.HttpRequest;
 import com.me.network.app.http.Method;
-import com.uas.appworks.model.bean.BusinessOverTimeBean;
+import com.uas.appworks.model.bean.BusinessMineChildBean;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -24,6 +26,7 @@ import java.util.Map;
  */
 public class BusinessMineListPresenterImpl extends BaseMvpPresenter<BusinessMineListContract.IBusinessMineListView>
         implements BusinessMineListContract.IBusinessMineListPresenter, HttpCallback {
+    private final int REQUEST_BUSINESS_MINE_LIST = 0x01;
 
     @Override
     public void onMvpAttachView(BusinessMineListContract.IBusinessMineListView view, Bundle savedInstanceState) {
@@ -43,31 +46,104 @@ public class BusinessMineListPresenterImpl extends BaseMvpPresenter<BusinessMine
                 new HttpParams.Builder()
                         .url("mobile/common/list.action")
                         .method(Method.GET)
+                        .flag(REQUEST_BUSINESS_MINE_LIST)
                         .setParams(params)
                         .addHeader("Cookie", CommonUtil.getErpCookie(context))
                         .build(), this);
 
-        new Handler().postDelayed(new Runnable() {
+        /*new Handler().postDelayed(new Runnable() {
             @Override
             public void run() {
                 getMvpView().hideLoading();
 
-                List<BusinessOverTimeBean> businessOverTimeBeans = new ArrayList<>();
+                List<SecondaryListAdapter.SecondaryListBean<Integer, BusinessMineChildBean>> businessMineBeans = new ArrayList<>();
                 for (int i = 0; i < 20; i++) {
-                    businessOverTimeBeans.add(new BusinessOverTimeBean());
+                    businessMineBeans.add(new SecondaryListAdapter.SecondaryListBean("", null));
                 }
-                getMvpView().requestListSuccess(businessOverTimeBeans);
+                getMvpView().requestListSuccess(businessMineBeans);
             }
-        }, 1000);
+        }, 1000);*/
     }
 
     @Override
     public void onSuccess(int flag, Object o) throws Exception {
-        Log.d("raomengsuc", o.toString());
+        try {
+            getMvpView().hideLoading();
+            switch (flag) {
+                case REQUEST_BUSINESS_MINE_LIST:
+                    String result = o.toString();
+                    List<BusinessMineChildBean> businessMineChildBeans = new ArrayList<>();
+                    if (!JSONUtil.validate(result)) {
+                        getMvpView().requestListSuccess(businessMineChildBeans);
+                        return;
+                    }
+                    JSONObject resultObject = JSON.parseObject(result);
+                    if (resultObject == null) {
+                        getMvpView().requestListSuccess(businessMineChildBeans);
+                        return;
+                    }
+                    JSONArray columnArray = resultObject.getJSONArray("columns");
+                    if (columnArray == null) {
+                        getMvpView().requestListSuccess(businessMineChildBeans);
+                        return;
+                    }
+                    JSONArray listDataArray = resultObject.getJSONArray("listdata");
+                    if (listDataArray == null) {
+                        getMvpView().requestListSuccess(businessMineChildBeans);
+                        return;
+                    }
+
+                    for (int i = 0; i < listDataArray.size(); i++) {
+                        JSONObject listDataObject = listDataArray.getJSONObject(i);
+                        if (listDataObject != null) {
+                            BusinessMineChildBean businessMineParent = new BusinessMineChildBean();
+                            businessMineParent.setItemType(BusinessMineChildBean.BUSINESS_MINE_PARENT);
+                            businessMineChildBeans.add(businessMineParent);
+
+                            for (int j = 0; j < columnArray.size(); j++) {
+                                JSONObject columnObject = columnArray.getJSONObject(j);
+                                if (columnObject != null) {
+                                    BusinessMineChildBean businessMineChild = new BusinessMineChildBean();
+                                    String dataIndex = JSONUtil.getText(columnObject, "dataIndex");
+                                    businessMineChild.setCaption(JSONUtil.getText(columnObject, "caption"));
+                                    businessMineChild.setDataIndex(dataIndex);
+                                    businessMineChild.setValue(JSONUtil.getText(listDataObject, dataIndex));
+                                    businessMineChild.setItemType(BusinessMineChildBean.BUSINESS_MINE_CHILD);
+                                    businessMineChild.setId(JSONUtil.getInt(listDataObject, "bc_id"));
+                                    businessMineChild.setBcType(JSONUtil.getText(listDataObject, "bc_type"));
+                                    businessMineChild.setStageCode(JSONUtil.getText(listDataObject, "bc_currentprocesscode"));
+
+                                    businessMineChildBeans.add(businessMineChild);
+                                }
+                            }
+                        }
+                    }
+                    getMvpView().requestListSuccess(businessMineChildBeans);
+
+                    break;
+                default:
+                    break;
+            }
+        } catch (Exception e) {
+            getMvpView().hideLoading();
+            getMvpView().requestListFail("数据解析异常");
+        }
     }
 
     @Override
     public void onFail(int flag, String failStr) throws Exception {
-        Log.d("raomengfai", failStr);
+        try {
+            getMvpView().hideLoading();
+            switch (flag) {
+                case REQUEST_BUSINESS_MINE_LIST:
+                    getMvpView().requestListFail(failStr);
+                    break;
+                default:
+                    break;
+            }
+        } catch (Exception e) {
+            getMvpView().requestListFail(failStr);
+        }
+
     }
 }

+ 62 - 1
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessStage/BusinessStageActivity.java

@@ -1,7 +1,18 @@
 package com.uas.appworks.activity.businessManage.businessStage;
 
+import android.content.Intent;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
+
 import com.core.base.activity.MvpBaseActivity;
 import com.uas.appworks.R;
+import com.uas.appworks.adapter.BusinessStageAdapter;
+import com.uas.appworks.model.bean.BusinessStageBean;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author RaoMeng
@@ -10,6 +21,12 @@ import com.uas.appworks.R;
  */
 public class BusinessStageActivity extends MvpBaseActivity<BusinessStageContract.IBusinessStagePresenter>
         implements BusinessStageContract.IBusinessStageView {
+    private RecyclerView mRecyclerView;
+    private List<BusinessStageBean> mBusinessStageBeans;
+    private BusinessStageAdapter mBusinessStageAdapter;
+    private View mEmptyView;
+    private TextView mEmptyText;
+    private String mStageCode;
 
     @Override
     protected int getLayout() {
@@ -18,7 +35,14 @@ public class BusinessStageActivity extends MvpBaseActivity<BusinessStageContract
 
     @Override
     protected void initView() {
+        setTitle("商机阶段详情");
+
+        mRecyclerView = findViewById(R.id.business_stage_rv);
+        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
 
+        mBusinessStageBeans = new ArrayList<>();
+        mBusinessStageAdapter = new BusinessStageAdapter(mBusinessStageBeans);
+        mRecyclerView.setAdapter(mBusinessStageAdapter);
     }
 
     @Override
@@ -33,16 +57,53 @@ public class BusinessStageActivity extends MvpBaseActivity<BusinessStageContract
 
     @Override
     protected void initData() {
+        Intent intent = getIntent();
+        if (intent != null) {
+            List<BusinessStageBean> stageBeans = (List<BusinessStageBean>) intent.getSerializableExtra("stageBeans");
+            if (stageBeans != null) {
+                mBusinessStageBeans.addAll(stageBeans);
+            }
+            mStageCode = intent.getStringExtra("stageCode");
+        }
 
+        if (mBusinessStageBeans == null || mBusinessStageBeans.size() == 0) {
+            mPresenter.requestStageList(this);
+        } else {
+            mBusinessStageAdapter.notifyDataSetChanged();
+        }
     }
 
     @Override
     public void showLoading(String loadStr) {
-
+        progressDialog.show();
     }
 
     @Override
     public void hideLoading() {
+        progressDialog.dismiss();
+    }
 
+    @Override
+    public void requestStageSuccess(List<BusinessStageBean> businessStageBeans) {
+        mBusinessStageBeans.addAll(businessStageBeans);
+        mBusinessStageAdapter.notifyDataSetChanged();
+        if (mBusinessStageBeans.size() == 0) {
+            if (mEmptyView == null || mEmptyText == null) {
+                mEmptyView = View.inflate(mContext, R.layout.layout_commom_empty, null);
+                mEmptyText = mEmptyView.findViewById(R.id.common_empty_tv);
+            }
+            mEmptyText.setText("商机阶段为空");
+            mBusinessStageAdapter.setEmptyView(mEmptyView);
+        }
+    }
+
+    @Override
+    public void requestStageFail(String failStr) {
+        if (mEmptyView == null || mEmptyText == null) {
+            mEmptyView = View.inflate(mContext, R.layout.layout_commom_empty, null);
+            mEmptyText = mEmptyView.findViewById(R.id.common_empty_tv);
+        }
+        mEmptyText.setText(failStr);
+        mBusinessStageAdapter.setEmptyView(mEmptyView);
     }
 }

+ 8 - 1
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessStage/BusinessStageContract.java

@@ -1,7 +1,12 @@
 package com.uas.appworks.activity.businessManage.businessStage;
 
+import android.content.Context;
+
 import com.core.base.presenter.MvpPresenter;
 import com.core.base.view.MvpView;
+import com.uas.appworks.model.bean.BusinessStageBean;
+
+import java.util.List;
 
 /**
  * @author RaoMeng
@@ -11,10 +16,12 @@ import com.core.base.view.MvpView;
 public class BusinessStageContract {
 
     public interface IBusinessStageView extends MvpView {
+        void requestStageSuccess(List<BusinessStageBean> businessStageBeans);
 
+        void requestStageFail(String failStr);
     }
 
     public interface IBusinessStagePresenter extends MvpPresenter<IBusinessStageView> {
-
+        void requestStageList(Context context);
     }
 }

+ 96 - 1
app_modular/appworks/src/main/java/com/uas/appworks/activity/businessManage/businessStage/BusinessStagePresenterImpl.java

@@ -1,8 +1,23 @@
 package com.uas.appworks.activity.businessManage.businessStage;
 
+import android.content.Context;
 import android.os.Bundle;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
 import com.core.base.presenter.BaseMvpPresenter;
+import com.core.utils.CommonUtil;
+import com.me.network.app.base.HttpCallback;
+import com.me.network.app.base.HttpParams;
+import com.me.network.app.http.HttpRequest;
+import com.me.network.app.http.Method;
+import com.uas.appworks.model.bean.BusinessStageBean;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author RaoMeng
@@ -10,7 +25,8 @@ import com.core.base.presenter.BaseMvpPresenter;
  * @date 2018/9/12 17:56
  */
 public class BusinessStagePresenterImpl extends BaseMvpPresenter<BusinessStageContract.IBusinessStageView>
-        implements BusinessStageContract.IBusinessStagePresenter {
+        implements BusinessStageContract.IBusinessStagePresenter, HttpCallback {
+    private final int REQUEST_BUSINESS_STAGE = 2;
 
     @Override
     public void onMvpAttachView(BusinessStageContract.IBusinessStageView view, Bundle savedInstanceState) {
@@ -22,4 +38,83 @@ public class BusinessStagePresenterImpl extends BaseMvpPresenter<BusinessStageCo
         super.onMvpResume();
     }
 
+    @Override
+    public void requestStageList(Context context) {
+        getMvpView().showLoading("");
+
+        HttpRequest.getInstance().sendRequest(CommonUtil.getAppBaseUrl(context),
+                new HttpParams.Builder()
+                        .url("mobile/crm/getBusinessChanceStage.action")
+                        .flag(REQUEST_BUSINESS_STAGE)
+                        .method(Method.POST)
+                        .addParam("master", CommonUtil.getMaster())
+                        .addParam("sessionId", CommonUtil.getSharedPreferences(context, "sessionId"))
+                        .addHeader("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(context, "sessionId"))
+                        .build(), this);
+    }
+
+    @Override
+    public void onSuccess(int flag, Object o) throws Exception {
+        getMvpView().hideLoading();
+        switch (flag) {
+            case REQUEST_BUSINESS_STAGE:
+                try {
+                    String result = o.toString();
+                    List<BusinessStageBean> businessStageBeans = new ArrayList<>();
+                    if (!JSONUtil.validate(result)) {
+                        getMvpView().requestStageSuccess(businessStageBeans);
+                        return;
+                    }
+                    JSONObject resultObject = JSON.parseObject(result);
+                    if (resultObject == null) {
+                        getMvpView().requestStageSuccess(businessStageBeans);
+                        return;
+                    }
+                    JSONArray stageArray = resultObject.getJSONArray("stages");
+                    if (stageArray == null) {
+                        getMvpView().requestStageSuccess(businessStageBeans);
+                        return;
+                    }
+                    for (int i = 0; i < stageArray.size(); i++) {
+                        JSONObject stageObject = stageArray.getJSONObject(i);
+                        if (stageObject != null) {
+                            BusinessStageBean businessStageBean = new BusinessStageBean();
+                            businessStageBean.setBS_ID(JSONUtil.getInt(stageObject, "BS_ID"));
+                            businessStageBean.setBS_CODE(JSONUtil.getText(stageObject, "BS_CODE"));
+                            businessStageBean.setBS_NAME(JSONUtil.getText(stageObject, "BS_NAME"));
+                            businessStageBean.setBS_REMARK(JSONUtil.getText(stageObject, "BS_REMARK"));
+                            businessStageBean.setBS_RELATIVEITEM(JSONUtil.getText(stageObject, "BS_RELATIVEITEM"));
+                            businessStageBean.setBS_COLOR(JSONUtil.getText(stageObject, "BS_COLOR"));
+                            businessStageBean.setBS_DETNO(JSONUtil.getInt(stageObject, "BS_DETNO"));
+                            businessStageBean.setBS_DAYS(JSONUtil.getInt(stageObject, "BS_DAYS"));
+                            businessStageBean.setBS_ACTIVEDATE(JSONUtil.getInt(stageObject, "BS_ACTIVEDATE"));
+                            businessStageBean.setBS_POINT(JSONUtil.getText(stageObject, "BS_POINT"));
+                            businessStageBean.setBS_POINTFLAG(JSONUtil.getText(stageObject, "BS_POINTFLAG"));
+                            businessStageBean.setBS_POINTDETNO(JSONUtil.getText(stageObject, "BS_POINTDETNO"));
+                            businessStageBean.setBS_CANTURNCUST(JSONUtil.getText(stageObject, "BS_CANTURNCUST"));
+                            businessStageBean.setBS_TYPE(JSONUtil.getText(stageObject, "BS_TYPE"));
+                            businessStageBean.setBS_ENDSTATUS(JSONUtil.getText(stageObject, "BS_ENDSTATUS"));
+                            businessStageBean.setBS_ENDNODE(JSONUtil.getText(stageObject, "BS_ENDNODE"));
+                            businessStageBean.setBS_EQUITYEDGE(JSONUtil.getText(stageObject, "BS_EQUITYEDGE"));
+
+                            businessStageBeans.add(businessStageBean);
+                        }
+                    }
+                    getMvpView().requestStageSuccess(businessStageBeans);
+                } catch (Exception e) {
+                    getMvpView().requestStageSuccess(new ArrayList<BusinessStageBean>());
+                }
+                break;
+        }
+    }
+
+    @Override
+    public void onFail(int flag, String failStr) throws Exception {
+        getMvpView().hideLoading();
+        switch (flag) {
+            case REQUEST_BUSINESS_STAGE:
+                getMvpView().requestStageFail(failStr);
+                break;
+        }
+    }
 }

+ 27 - 9
app_modular/appworks/src/main/java/com/uas/appworks/adapter/BusinessMineAdapter.java

@@ -1,11 +1,9 @@
 package com.uas.appworks.adapter;
 
-import android.support.annotation.Nullable;
-
-import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
 import com.chad.library.adapter.base.BaseViewHolder;
 import com.uas.appworks.R;
-import com.uas.appworks.model.bean.BusinessOverTimeBean;
+import com.uas.appworks.model.bean.BusinessMineChildBean;
 
 import java.util.List;
 
@@ -14,14 +12,34 @@ import java.util.List;
  * @describe
  * @date 2018/9/10 19:50
  */
-public class BusinessMineAdapter extends BaseQuickAdapter<BusinessOverTimeBean, BaseViewHolder> {
+public class BusinessMineAdapter extends BaseMultiItemQuickAdapter<BusinessMineChildBean, BaseViewHolder> {
 
-    public BusinessMineAdapter(@Nullable List<BusinessOverTimeBean> data) {
-        super(R.layout.item_business_mine, data);
+    public BusinessMineAdapter(List<BusinessMineChildBean> businessMineChildBeans) {
+        super(businessMineChildBeans);
+        addItemType(BusinessMineChildBean.BUSINESS_MINE_PARENT, R.layout.item_business_mine_parent);
+        addItemType(BusinessMineChildBean.BUSINESS_MINE_CHILD, R.layout.item_business_mine_child);
     }
 
-    @Override
-    protected void convert(BaseViewHolder helper, BusinessOverTimeBean item) {
+    public void bindGroupViewHolder(BaseViewHolder helper, BusinessMineChildBean businessMineChildBean) {
+
+    }
 
+    public void bindSubViewHolder(BaseViewHolder helper, BusinessMineChildBean businessMineChildBean) {
+        helper.setText(R.id.business_mine_child_caption_tv, businessMineChildBean.getCaption());
+        helper.setText(R.id.business_mine_child_value_tv, businessMineChildBean.getValue());
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, BusinessMineChildBean businessMineChildBean) {
+        if (helper != null) {
+            switch (helper.getItemViewType()) {
+                case BusinessMineChildBean.BUSINESS_MINE_PARENT:
+                    bindGroupViewHolder(helper, businessMineChildBean);
+                    break;
+                case BusinessMineChildBean.BUSINESS_MINE_CHILD:
+                    bindSubViewHolder(helper, businessMineChildBean);
+                    break;
+            }
+        }
     }
 }

+ 47 - 0
app_modular/appworks/src/main/java/com/uas/appworks/adapter/BusinessStageAdapter.java

@@ -0,0 +1,47 @@
+package com.uas.appworks.adapter;
+
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.uas.appworks.R;
+import com.uas.appworks.model.bean.BusinessStageBean;
+
+import java.util.List;
+
+/**
+ * @author RaoMeng
+ * @describe
+ * @date 2018/9/17 17:04
+ */
+public class BusinessStageAdapter extends BaseQuickAdapter<BusinessStageBean, BaseViewHolder> {
+
+    public BusinessStageAdapter(@Nullable List<BusinessStageBean> data) {
+        super(R.layout.item_business_stage, data);
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, BusinessStageBean item) {
+        int adapterPosition = helper.getAdapterPosition();
+        helper.setText(R.id.item_business_stage_no_tv, "阶段" + (adapterPosition + 1));
+        helper.setText(R.id.item_business_stage_name_tv, item.getBS_NAME());
+        helper.setText(R.id.item_business_stage_explore_tv, "本阶段可停留" + item.getBS_DAYS() + "天");
+        String bs_point = item.getBS_POINT();
+        if (!TextUtils.isEmpty(bs_point)) {
+            String[] split = bs_point.split("#");
+
+            if (split != null && split.length > 0) {
+                String pointStr = "";
+                for (int i = 0; i < split.length; i++) {
+                    pointStr += ((i + 1) + "、" + split[i] + "\n");
+                }
+                if (pointStr.length() > 1) {
+                    pointStr = pointStr.substring(0, pointStr.length() - 1);
+                }
+                helper.setText(R.id.item_business_stage_point_tv, pointStr);
+            }
+        }
+
+    }
+}

+ 48 - 0
app_modular/appworks/src/main/java/com/uas/appworks/adapter/CommonFormDetailAdapter.java

@@ -0,0 +1,48 @@
+package com.uas.appworks.adapter;
+
+import android.support.annotation.Nullable;
+
+import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.uas.appworks.R;
+import com.uas.appworks.model.bean.CommonFormBean;
+
+import java.util.List;
+
+/**
+ * @author RaoMeng
+ * @describe
+ * @date 2018/9/19 17:42
+ */
+public class CommonFormDetailAdapter extends BaseMultiItemQuickAdapter<CommonFormBean, BaseViewHolder> {
+
+    public CommonFormDetailAdapter(@Nullable List<CommonFormBean> data) {
+        super(data);
+
+        addItemType(CommonFormBean.COMMON_FORM_GRAY_LINE, R.layout.item_common_gray_line);
+        addItemType(CommonFormBean.COMMON_FORM_CONTENT_ITEM, R.layout.item_common_form_detail);
+    }
+
+    @Override
+    protected void convert(BaseViewHolder helper, CommonFormBean commonFormBean) {
+        if (helper != null) {
+            switch (helper.getItemViewType()) {
+                case CommonFormBean.COMMON_FORM_GRAY_LINE:
+                    bindGroupViewHolder(helper, commonFormBean);
+                    break;
+                case CommonFormBean.COMMON_FORM_CONTENT_ITEM:
+                    bindSubViewHolder(helper, commonFormBean);
+                    break;
+            }
+        }
+    }
+
+    private void bindSubViewHolder(BaseViewHolder helper, CommonFormBean commonFormBean) {
+        helper.setText(R.id.item_common_form_detail_caption, commonFormBean.getCaption());
+        helper.setText(R.id.item_common_form_detail_value, commonFormBean.getValue());
+    }
+
+    private void bindGroupViewHolder(BaseViewHolder helper, CommonFormBean commonFormBean) {
+
+    }
+}

+ 40 - 10
app_modular/appworks/src/main/java/com/uas/appworks/fragment/BusinessMineListFragment.java

@@ -1,20 +1,24 @@
 package com.uas.appworks.fragment;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
 
+import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.core.base.fragment.MvpBaseFragment;
 import com.core.utils.CommonUtil;
-import com.modular.apputils.utils.RecyclerItemDecoration;
 import com.scwang.smartrefresh.layout.api.RefreshLayout;
 import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
 import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
 import com.uas.appworks.R;
+import com.uas.appworks.activity.businessManage.businessDetailActivity.BusinessDetailNewActivity;
 import com.uas.appworks.activity.businessManage.businessMineList.BusinessMineListContract;
 import com.uas.appworks.activity.businessManage.businessMineList.BusinessMineListPresenterImpl;
 import com.uas.appworks.adapter.BusinessMineAdapter;
-import com.uas.appworks.model.bean.BusinessOverTimeBean;
+import com.uas.appworks.model.bean.BusinessMineChildBean;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -33,7 +37,9 @@ public class BusinessMineListFragment extends MvpBaseFragment<BusinessMineListCo
     public static final int FLAG_BUSINESS_BRANCH = 2;
 
     private RecyclerView mRecyclerView;
-    private List<BusinessOverTimeBean> mBusinessOverTimeBeans;
+    private View mEmptyView;
+    private TextView mEmptyText;
+    private List<BusinessMineChildBean> mBusinessMineBeans;
     private BusinessMineAdapter mBusinessMineAdapter;
     private RefreshLayout mRefreshLayout;
     private String mCaller;
@@ -73,10 +79,9 @@ public class BusinessMineListFragment extends MvpBaseFragment<BusinessMineListCo
         mRefreshLayout = $(R.id.business_mine_list_refresh);
         mRecyclerView = $(R.id.business_mine_list_rv);
         mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext));
-        mRecyclerView.addItemDecoration(new RecyclerItemDecoration(1));
 
-        mBusinessOverTimeBeans = new ArrayList<>();
-        mBusinessMineAdapter = new BusinessMineAdapter(mBusinessOverTimeBeans);
+        mBusinessMineBeans = new ArrayList<>();
+        mBusinessMineAdapter = new BusinessMineAdapter(mBusinessMineBeans);
         mRecyclerView.setAdapter(mBusinessMineAdapter);
     }
 
@@ -97,6 +102,17 @@ public class BusinessMineListFragment extends MvpBaseFragment<BusinessMineListCo
                 loadListData();
             }
         });
+
+        mBusinessMineAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+                BusinessMineChildBean businessMineChildBean = mBusinessMineBeans.get(position);
+                startActivity(new Intent(mContext, BusinessDetailNewActivity.class)
+                        .putExtra("id", businessMineChildBean.getId())
+                        .putExtra("type", businessMineChildBean.getBcType())
+                        .putExtra("stage", businessMineChildBean.getStageCode()));
+            }
+        });
     }
 
     @Override
@@ -140,18 +156,32 @@ public class BusinessMineListFragment extends MvpBaseFragment<BusinessMineListCo
     }
 
     @Override
-    public void requestListSuccess(List<BusinessOverTimeBean> businessOverTimeBeans) {
+    public void requestListSuccess(List<BusinessMineChildBean> businessMineBeans) {
         if (mPageIndex == 1) {
-            mBusinessOverTimeBeans.clear();
+            mBusinessMineBeans.clear();
         }
-        mBusinessOverTimeBeans.addAll(businessOverTimeBeans);
+        mBusinessMineBeans.addAll(businessMineBeans);
         mBusinessMineAdapter.notifyDataSetChanged();
+
+        if (mBusinessMineBeans.size() == 0) {
+            if (mEmptyView == null || mEmptyText == null) {
+                mEmptyView = View.inflate(mContext, R.layout.layout_commom_empty, null);
+                mEmptyText = mEmptyView.findViewById(R.id.common_empty_tv);
+            }
+            mEmptyText.setText("列表数据为空");
+            mBusinessMineAdapter.setEmptyView(mEmptyView);
+        }
     }
 
     @Override
     public void requestListFail(String failMsg) {
         if (mPageIndex == 1) {
-            // TODO: 2018/9/12 设置错误布局
+            if (mEmptyView == null || mEmptyText == null) {
+                mEmptyView = View.inflate(mContext, R.layout.layout_commom_empty, null);
+                mEmptyText = mEmptyView.findViewById(R.id.common_empty_tv);
+            }
+            mEmptyText.setText(failMsg);
+            mBusinessMineAdapter.setEmptyView(mEmptyView);
         } else {
             mPageIndex--;
             toast(failMsg);

+ 78 - 0
app_modular/appworks/src/main/java/com/uas/appworks/model/bean/BusinessMineChildBean.java

@@ -0,0 +1,78 @@
+package com.uas.appworks.model.bean;
+
+import com.chad.library.adapter.base.entity.MultiItemEntity;
+
+/**
+ * @author RaoMeng
+ * @describe
+ * @date 2018/9/17 11:18
+ */
+public class BusinessMineChildBean implements MultiItemEntity {
+    public static final int BUSINESS_MINE_PARENT = 1;
+    public static final int BUSINESS_MINE_CHILD = 2;
+
+    private int mItemType = -1;
+    private String mCaption;
+    private String mDataIndex;
+    private String mValue;
+    private int mId;
+    private String mBcType;
+    private String mStageCode;
+
+    public void setItemType(int itemType) {
+        mItemType = itemType;
+    }
+
+    public String getCaption() {
+        return mCaption;
+    }
+
+    public void setCaption(String caption) {
+        mCaption = caption;
+    }
+
+    public String getDataIndex() {
+        return mDataIndex;
+    }
+
+    public void setDataIndex(String dataIndex) {
+        mDataIndex = dataIndex;
+    }
+
+    public String getValue() {
+        return mValue;
+    }
+
+    public void setValue(String value) {
+        mValue = value;
+    }
+
+    public int getId() {
+        return mId;
+    }
+
+    public void setId(int id) {
+        mId = id;
+    }
+
+    public String getBcType() {
+        return mBcType;
+    }
+
+    public void setBcType(String bcType) {
+        mBcType = bcType;
+    }
+
+    public String getStageCode() {
+        return mStageCode;
+    }
+
+    public void setStageCode(String stageCode) {
+        mStageCode = stageCode;
+    }
+
+    @Override
+    public int getItemType() {
+        return mItemType;
+    }
+}

+ 185 - 0
app_modular/appworks/src/main/java/com/uas/appworks/model/bean/BusinessStageBean.java

@@ -0,0 +1,185 @@
+package com.uas.appworks.model.bean;
+
+import java.io.Serializable;
+
+/**
+ * @author RaoMeng
+ * @describe
+ * @date 2018/9/17 17:05
+ */
+public class BusinessStageBean implements Serializable {
+
+    /**
+     * BS_ID : 241
+     * BS_CODE : 2016070001
+     * BS_NAME : 初次沟通
+     * BS_REMARK : null
+     * BS_RELATIVEITEM : Shipment
+     * BS_COLOR : FFCC00
+     * BS_DETNO : 1
+     * BS_DAYS : 1
+     * BS_ACTIVEDATE : 100
+     * BS_POINT : 棉花进口好看
+     * BS_POINTFLAG : 1
+     * BS_POINTDETNO : 4
+     * BS_CANTURNCUST : null
+     * BS_TYPE : null
+     * BS_ENDSTATUS : null
+     * BS_ENDNODE : null
+     * BS_EQUITYEDGE : null
+     */
+
+    private int BS_ID;
+    private String BS_CODE;
+    private String BS_NAME;
+    private String BS_REMARK;
+    private String BS_RELATIVEITEM;
+    private String BS_COLOR;
+    private int BS_DETNO;
+    private int BS_DAYS;
+    private int BS_ACTIVEDATE;
+    private String BS_POINT;
+    private String BS_POINTFLAG;
+    private String BS_POINTDETNO;
+    private String BS_CANTURNCUST;
+    private String BS_TYPE;
+    private String BS_ENDSTATUS;
+    private String BS_ENDNODE;
+    private String BS_EQUITYEDGE;
+
+    public int getBS_ID() {
+        return BS_ID;
+    }
+
+    public void setBS_ID(int BS_ID) {
+        this.BS_ID = BS_ID;
+    }
+
+    public String getBS_CODE() {
+        return BS_CODE;
+    }
+
+    public void setBS_CODE(String BS_CODE) {
+        this.BS_CODE = BS_CODE;
+    }
+
+    public String getBS_NAME() {
+        return BS_NAME;
+    }
+
+    public void setBS_NAME(String BS_NAME) {
+        this.BS_NAME = BS_NAME;
+    }
+
+    public String getBS_REMARK() {
+        return BS_REMARK;
+    }
+
+    public void setBS_REMARK(String BS_REMARK) {
+        this.BS_REMARK = BS_REMARK;
+    }
+
+    public String getBS_RELATIVEITEM() {
+        return BS_RELATIVEITEM;
+    }
+
+    public void setBS_RELATIVEITEM(String BS_RELATIVEITEM) {
+        this.BS_RELATIVEITEM = BS_RELATIVEITEM;
+    }
+
+    public String getBS_COLOR() {
+        return BS_COLOR;
+    }
+
+    public void setBS_COLOR(String BS_COLOR) {
+        this.BS_COLOR = BS_COLOR;
+    }
+
+    public int getBS_DETNO() {
+        return BS_DETNO;
+    }
+
+    public void setBS_DETNO(int BS_DETNO) {
+        this.BS_DETNO = BS_DETNO;
+    }
+
+    public int getBS_DAYS() {
+        return BS_DAYS;
+    }
+
+    public void setBS_DAYS(int BS_DAYS) {
+        this.BS_DAYS = BS_DAYS;
+    }
+
+    public int getBS_ACTIVEDATE() {
+        return BS_ACTIVEDATE;
+    }
+
+    public void setBS_ACTIVEDATE(int BS_ACTIVEDATE) {
+        this.BS_ACTIVEDATE = BS_ACTIVEDATE;
+    }
+
+    public String getBS_POINT() {
+        return BS_POINT;
+    }
+
+    public void setBS_POINT(String BS_POINT) {
+        this.BS_POINT = BS_POINT;
+    }
+
+    public String getBS_POINTFLAG() {
+        return BS_POINTFLAG;
+    }
+
+    public void setBS_POINTFLAG(String BS_POINTFLAG) {
+        this.BS_POINTFLAG = BS_POINTFLAG;
+    }
+
+    public String getBS_POINTDETNO() {
+        return BS_POINTDETNO;
+    }
+
+    public void setBS_POINTDETNO(String BS_POINTDETNO) {
+        this.BS_POINTDETNO = BS_POINTDETNO;
+    }
+
+    public String getBS_CANTURNCUST() {
+        return BS_CANTURNCUST;
+    }
+
+    public void setBS_CANTURNCUST(String BS_CANTURNCUST) {
+        this.BS_CANTURNCUST = BS_CANTURNCUST;
+    }
+
+    public String getBS_TYPE() {
+        return BS_TYPE;
+    }
+
+    public void setBS_TYPE(String BS_TYPE) {
+        this.BS_TYPE = BS_TYPE;
+    }
+
+    public String getBS_ENDSTATUS() {
+        return BS_ENDSTATUS;
+    }
+
+    public void setBS_ENDSTATUS(String BS_ENDSTATUS) {
+        this.BS_ENDSTATUS = BS_ENDSTATUS;
+    }
+
+    public String getBS_ENDNODE() {
+        return BS_ENDNODE;
+    }
+
+    public void setBS_ENDNODE(String BS_ENDNODE) {
+        this.BS_ENDNODE = BS_ENDNODE;
+    }
+
+    public String getBS_EQUITYEDGE() {
+        return BS_EQUITYEDGE;
+    }
+
+    public void setBS_EQUITYEDGE(String BS_EQUITYEDGE) {
+        this.BS_EQUITYEDGE = BS_EQUITYEDGE;
+    }
+}

+ 150 - 0
app_modular/appworks/src/main/java/com/uas/appworks/model/bean/CommonFormBean.java

@@ -0,0 +1,150 @@
+package com.uas.appworks.model.bean;
+
+import com.chad.library.adapter.base.entity.MultiItemEntity;
+import com.google.gson.annotations.SerializedName;
+
+/**
+ * @author RaoMeng
+ * @describe
+ * @date 2018/9/19 16:27
+ */
+public class CommonFormBean implements MultiItemEntity {
+    public static final int COMMON_FORM_GRAY_LINE = 1;
+    public static final int COMMON_FORM_CONTENT_ITEM = 2;
+
+    private int mItemType = -1;
+
+    /**
+     * fd_caption : 客户名称
+     * mfd_caption : 企业名称
+     * fd_field : bc_custname
+     * fd_value : 明年
+     * fd_maxlength : 100
+     * fd_group : 基本信息
+     * fd_detno : 4
+     * fd_type : SF
+     * fd_readonly : F
+     * mfd_isdefault : -1
+     * fd_id : 265674
+     */
+
+    @SerializedName("fd_caption")
+    private String caption;
+    @SerializedName("mfd_caption")
+    private String mcaption;
+    @SerializedName("fd_field")
+    private String field;
+    @SerializedName("fd_value")
+    private String value;
+    @SerializedName("fd_maxlength")
+    private int maxlength;
+    @SerializedName("fd_group")
+    private String group;
+    @SerializedName("fd_detno")
+    private int detno;
+    @SerializedName("fd_type")
+    private String type;
+    @SerializedName("fd_readonly")
+    private String readonly;
+    @SerializedName("mfd_isdefault")
+    private int isdefault;
+    @SerializedName("fd_id")
+    private int id;
+
+    public void setItemType(int itemType) {
+        mItemType = itemType;
+    }
+
+    public String getCaption() {
+        return caption;
+    }
+
+    public void setCaption(String caption) {
+        this.caption = caption;
+    }
+
+    public String getMcaption() {
+        return mcaption;
+    }
+
+    public void setMcaption(String mcaption) {
+        this.mcaption = mcaption;
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public int getMaxlength() {
+        return maxlength;
+    }
+
+    public void setMaxlength(int maxlength) {
+        this.maxlength = maxlength;
+    }
+
+    public String getGroup() {
+        return group;
+    }
+
+    public void setGroup(String group) {
+        this.group = group;
+    }
+
+    public int getDetno() {
+        return detno;
+    }
+
+    public void setDetno(int detno) {
+        this.detno = detno;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getReadonly() {
+        return readonly;
+    }
+
+    public void setReadonly(String readonly) {
+        this.readonly = readonly;
+    }
+
+    public int getIsdefault() {
+        return isdefault;
+    }
+
+    public void setIsdefault(int isdefault) {
+        this.isdefault = isdefault;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    @Override
+    public int getItemType() {
+        return mItemType;
+    }
+}

BIN
app_modular/appworks/src/main/res/drawable-hdpi/ic_business_eye.png


BIN
app_modular/appworks/src/main/res/drawable-xhdpi/ic_business_eye.png


BIN
app_modular/appworks/src/main/res/drawable-xxhdpi/ic_business_eye.png


+ 8 - 0
app_modular/appworks/src/main/res/drawable/selector_business_gradient_bg.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/shape_business_gradient_press_btn" android:state_checked="true" />
+    <item android:drawable="@drawable/shape_business_gradient_press_btn" android:state_selected="true" />
+    <item android:drawable="@drawable/shape_business_gradient_press_btn" android:state_pressed="true" />
+
+    <item android:drawable="@drawable/shape_business_gradient_normal_btn" />
+</selector>

+ 1 - 0
app_modular/appworks/src/main/res/drawable/shape_b2b_change_account.xml

@@ -3,4 +3,5 @@
        android:shape="rectangle">
 
     <corners android:radius="10dp" />
+    <solid android:color="@color/white" />
 </shape>

+ 10 - 0
app_modular/appworks/src/main/res/drawable/shape_business_gradient_normal_btn.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+
+    <corners android:radius="20dp" />
+    <gradient
+        android:startColor="#3D80FE"
+        android:endColor="#9FBCFF"
+        android:angle="0"/>
+</shape>

+ 10 - 0
app_modular/appworks/src/main/res/drawable/shape_business_gradient_press_btn.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+
+    <corners android:radius="20dp" />
+    <gradient
+        android:startColor="#1448A8"
+        android:endColor="#86ABFF"
+        android:angle="0"/>
+</shape>

+ 176 - 0
app_modular/appworks/src/main/res/layout/activity_business_detail_new.xml

@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#FBFBFB"
+    android:orientation="vertical">
+
+    <android.support.v4.widget.NestedScrollView
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1"
+                android:orientation="vertical">
+
+                <android.support.v7.widget.RecyclerView
+                    android:id="@+id/business_detail_new_main_rv"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content" />
+
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:padding="10dp"
+                    android:text="商机阶段"
+                    android:textColor="#FF333333"
+                    android:textSize="11sp" />
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="@color/white"
+                    android:orientation="horizontal"
+                    android:padding="16dp">
+
+                    <RelativeLayout
+                        android:layout_width="100dp"
+                        android:layout_height="100dp"
+                        android:layout_marginLeft="20dp"
+                        android:layout_marginRight="20dp">
+
+                        <com.dinuscxj.progressbar.CircleProgressBar
+                            android:id="@+id/business_detail_new_progress"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            app:line_count="30"
+                            app:line_width="6dp"
+                            app:progress_background_color="#dddddd"
+                            app:progress_end_color="#3D80FE"
+                            app:progress_shader="sweep"
+                            app:progress_start_color="#9EBBFF"
+                            app:progress_stroke_cap="round"
+                            app:progress_stroke_width="6dp"
+                            app:progress_text_size="0sp"
+                            app:style="solid_line" />
+
+                        <TextView
+                            android:id="@+id/business_detail_new_stage_tv"
+                            android:layout_width="75dp"
+                            android:layout_height="wrap_content"
+                            android:layout_centerInParent="true"
+                            android:gravity="center"
+                            android:textColor="#FF666666"
+                            android:textSize="12sp"
+                            tools:text="第四阶段" />
+                    </RelativeLayout>
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:orientation="vertical">
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="0dp"
+                                android:layout_height="wrap_content"
+                                android:layout_weight="1"
+                                android:text="阶段要点:"
+                                android:textColor="#FF666666"
+                                android:textSize="12sp" />
+
+                            <ImageView
+                                android:id="@+id/business_detail_new_stage_iv"
+                                android:layout_width="20dp"
+                                android:layout_height="10dp"
+                                android:src="@drawable/ic_business_eye" />
+                        </LinearLayout>
+
+                        <TextView
+                            android:id="@+id/business_detail_stage_content_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:layout_marginTop="8dp"
+                            android:textColor="#FF333333"
+                            android:textSize="12sp"
+                            tools:text="要点1要点1要点1要点1要点1要点1
+    要点1要点1要点1要点1要点1要点1
+    要点1要点1要点1要点1要点1要点1
+    要点1要点1要点1要点1" />
+                    </LinearLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical"
+                    app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+                    <android.support.design.widget.TabLayout
+                        android:id="@+id/business_detail_new_tablayout"
+                        android:layout_width="match_parent"
+                        android:layout_height="40dp"
+                        android:background="@color/white"
+                        app:tabIndicatorColor="#33A2EE"
+                        app:tabIndicatorHeight="4dp"
+                        app:tabSelectedTextColor="#1084D1"
+                        app:tabTextColor="#666666" />
+
+                    <android.support.v4.view.ViewPager
+                        android:id="@+id/business_detail_new_vp"
+                        android:layout_width="match_parent"
+                        android:layout_height="300dp" />
+                </LinearLayout>
+            </LinearLayout>
+        </LinearLayout>
+
+    </android.support.v4.widget.NestedScrollView>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:padding="15dp">
+
+        <TextView
+            android:id="@+id/business_detail_new_add_schedule_tv"
+            android:layout_width="@dimen/dimen_business_blue_btn_width"
+            android:layout_height="wrap_content"
+            android:background="@drawable/selector_business_gradient_bg"
+            android:gravity="center"
+            android:paddingBottom="4dp"
+            android:paddingTop="4dp"
+            android:text="添 加 日 程"
+            android:textColor="#FFFFFFFF"
+            android:textSize="15sp" />
+
+
+        <TextView
+            android:id="@+id/business_detail_new_follow_tv"
+            android:layout_width="@dimen/dimen_business_blue_btn_width"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="40dp"
+            android:background="@drawable/selector_business_gradient_bg"
+            android:gravity="center"
+            android:paddingBottom="4dp"
+            android:paddingTop="4dp"
+            android:text="商 机 跟 进"
+            android:textColor="#FFFFFFFF"
+            android:textSize="15sp" />
+    </LinearLayout>
+</LinearLayout>

+ 1 - 0
app_modular/appworks/src/main/res/layout/activity_business_manage_home.xml

@@ -47,6 +47,7 @@
                 </LinearLayout>
 
                 <LinearLayout
+                    android:id="@+id/business_manage_home_company_ll"
                     style="@style/business_manage_header_item">
 
                     <ImageView

+ 3 - 1
app_modular/appworks/src/main/res/layout/activity_business_stage.xml

@@ -2,9 +2,11 @@
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:background="#F2F2F2">
 
     <android.support.v7.widget.RecyclerView
+        android:id="@+id/business_stage_rv"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 </LinearLayout>

+ 38 - 0
app_modular/appworks/src/main/res/layout/item_business_mine_child.xml

@@ -0,0 +1,38 @@
+<?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="wrap_content"
+    android:background="#f3f2f0">
+
+    <TextView
+        android:id="@+id/business_mine_child_caption_tv"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="10dp"
+        android:layout_weight="2"
+        android:background="@color/white"
+        android:paddingBottom="4dp"
+        android:paddingLeft="6dp"
+        android:paddingRight="6dp"
+        android:paddingTop="4dp"
+        android:textColor="#FF333333"
+        android:textSize="14sp"
+        tools:text="加班人员" />
+
+    <TextView
+        android:id="@+id/business_mine_child_value_tv"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="10dp"
+        android:layout_weight="5"
+        android:background="@color/white"
+        android:paddingBottom="4dp"
+        android:paddingLeft="6dp"
+        android:paddingRight="6dp"
+        android:paddingTop="4dp"
+        android:textColor="#FF666666"
+        android:textSize="14sp"
+        tools:text="饶猛饶猛饶猛" />
+</LinearLayout>

+ 8 - 0
app_modular/appworks/src/main/res/layout/item_business_mine_parent.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="6dp"
+    android:background="#f3f2f0">
+
+</android.support.constraint.ConstraintLayout>

+ 101 - 0
app_modular/appworks/src/main/res/layout/item_business_stage.xml

@@ -0,0 +1,101 @@
+<?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="wrap_content"
+    android:background="#F2F2F2"
+    android:paddingBottom="5dp"
+    android:paddingLeft="10dp"
+    android:paddingRight="10dp"
+    android:paddingTop="5dp">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/shape_b2b_change_account"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:paddingBottom="8dp"
+            android:paddingTop="8dp">
+
+            <View
+                android:layout_width="4dp"
+                android:layout_height="16dp"
+                android:background="#FF333333" />
+
+            <TextView
+                android:id="@+id/item_business_stage_no_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="10dp"
+                android:textColor="#FF333333"
+                android:textSize="15sp"
+                tools:text="阶段1"
+                />
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:layout_marginLeft="14dp"
+            android:layout_marginRight="10dp"
+            android:background="#F2F2F2" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="6dp"
+            android:padding="8dp">
+
+            <TextView
+                android:id="@+id/item_business_stage_name_tv"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="2"
+                android:textColor="#FF666666"
+                android:textSize="12sp"
+                tools:text="客户探索:" />
+
+            <TextView
+                android:id="@+id/item_business_stage_explore_tv"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="5"
+                android:textColor="#FF666666"
+                android:textSize="12sp"
+                tools:text="本阶段可停留X天" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="6dp"
+            android:padding="8dp">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="2"
+                android:text="阶段要点:"
+                android:textColor="#FF666666"
+                android:textSize="12sp" />
+
+            <TextView
+                android:id="@+id/item_business_stage_point_tv"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="5"
+                android:textColor="#FF666666"
+                android:textSize="12sp"
+                tools:text="1、 要点内容1\n2、要点内容2" />
+
+        </LinearLayout>
+    </LinearLayout>
+
+</LinearLayout>

+ 29 - 0
app_modular/appworks/src/main/res/layout/item_common_form_detail.xml

@@ -0,0 +1,29 @@
+<?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="wrap_content"
+    android:background="@color/white"
+    android:orientation="horizontal"
+    android:padding="10dp">
+
+    <TextView
+        android:id="@+id/item_common_form_detail_caption"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="#FF666666"
+        android:textSize="15sp"
+        tools:text="商机编号" />
+
+
+    <TextView
+        android:id="@+id/item_common_form_detail_value"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="10dp"
+        android:gravity="right"
+        android:textColor="#FF333333"
+        android:textSize="15sp"
+        tools:text="英唐收购计划" />
+</LinearLayout>

+ 8 - 0
app_modular/appworks/src/main/res/layout/item_common_gray_line.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="10dp"
+    android:background="#f3f2f0">
+
+</android.support.constraint.ConstraintLayout>

+ 4 - 0
app_modular/appworks/src/main/res/values/dimens.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <dimen name="dimen_business_blue_btn_width">130dp</dimen>
+</resources>

+ 4 - 5
version.gradle

@@ -50,7 +50,8 @@ ext {
             smartRefreshLayoutVersion           : '1.0.5',
             rxJava2Version                      : '2.0.7',
             rxAndroid2Version                   : '2.0.1',
-            bottomsheetVersion                  : '1.5.3'
+            bottomsheetVersion                  : '1.5.3',
+            circleprogressbarVersion            : '1.3.0'
     ]
 
     deps = [
@@ -106,10 +107,8 @@ ext {
             wechatSdk                    : 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+',
             rxjava2                      : 'io.reactivex.rxjava2:rxjava:' + depsVersion.rxJava2Version,
             rxandroid2                   : 'io.reactivex.rxjava2:rxandroid:' + depsVersion.rxAndroid2Version,
-
-
-            bottomsheet                  : 'com.flipboard:bottomsheet-core:' + depsVersion.bottomsheetVersion
-
+            bottomsheet                  : 'com.flipboard:bottomsheet-core:' + depsVersion.bottomsheetVersion,
+            circleprogressbar            : 'com.dinuscxj:circleprogressbar:' + depsVersion.circleprogressbarVersion
     ]
 }