Browse Source

提交类型 修复bug
提交内容 修改会议出现两个情况

Bitliker 7 years ago
parent
commit
8aa58b3cb2
30 changed files with 1014 additions and 173 deletions
  1. 3 3
      app_core/common/src/main/java/com/core/utils/CommonUtil.java
  2. 1 0
      app_core/common/src/main/res/values/dimens.xml
  3. 18 1
      app_modular/apputils/src/main/java/com/modular/apputils/activity/BillInputActivity.java
  4. 7 0
      app_modular/apputils/src/main/java/com/modular/apputils/presenter/BillPresenter.java
  5. 102 1
      app_modular/apputils/src/main/java/com/modular/apputils/utils/TestStr.java
  6. 8 3
      app_modular/appworks/src/main/AndroidManifest.xml
  7. 6 4
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerBillInputActivity.java
  8. 28 14
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerDetails3_0Activity.java
  9. 13 3
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerListActivity.java
  10. 76 18
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerManageActivity.java
  11. 187 1
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerDetailsBottomListFragment.java
  12. 4 3
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerListDetailsFragment.java
  13. 8 4
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerListFragment.java
  14. 0 99
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerMapFragment.java
  15. 35 0
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/TestFragment.java
  16. 127 0
      app_modular/appworks/src/main/java/com/uas/appworks/model/CustomerBindBill.java
  17. 101 1
      app_modular/appworks/src/main/java/com/uas/appworks/presenter/CustomerDetailsPresenter.java
  18. 86 11
      app_modular/appworks/src/main/java/com/uas/appworks/presenter/CustomerManagePresenter.java
  19. 4 0
      app_modular/appworks/src/main/java/com/uas/appworks/presenter/imp/ICustomerDetails.java
  20. 2 2
      app_modular/appworks/src/main/res/layout/activity_customer_list_3_0.xml
  21. 4 2
      app_modular/appworks/src/main/res/layout/activity_customer_manage.xml
  22. 1 0
      app_modular/appworks/src/main/res/layout/fragment_customer_3_0.xml
  23. 10 0
      app_modular/appworks/src/main/res/layout/fragment_customer_details_bottomlist.xml
  24. 11 0
      app_modular/appworks/src/main/res/layout/fragment_test.xml
  25. 1 1
      app_modular/appworks/src/main/res/layout/item_create_schedule.xml
  26. 26 0
      app_modular/appworks/src/main/res/layout/item_customer_detail_bottom_address.xml
  27. 45 0
      app_modular/appworks/src/main/res/layout/item_customer_detail_bottom_business.xml
  28. 44 0
      app_modular/appworks/src/main/res/layout/item_customer_detail_bottom_conteact.xml
  29. 56 0
      app_modular/appworks/src/main/res/layout/item_customer_detail_bottom_visitrecord.xml
  30. 0 2
      app_modular/appworks/src/main/res/layout/item_customer_details_3_0.xml

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

@@ -102,9 +102,9 @@ public class CommonUtil {
             ct=MyApplication.getInstance();
         }
         String baseUrl = getSharedPreferences(ct, "erp_baseurl");
-//        if (BaseConfig.isDebug()){
-//            baseUrl="http://192.168.253.243:8080/ERP/";
-//        }
+        if (BaseConfig.isDebug()){
+            baseUrl="http://192.168.253.35:8080/ERP/";
+        }
         return baseUrl;
     }
 

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

@@ -40,6 +40,7 @@
     <dimen name="HintTextSize">14.0dp</dimen>
     <dimen name="SmallerTextSize">13.0sp</dimen>
     <dimen name="emotion_height">180dp</dimen>
+    <dimen name="paddingMax">12dp</dimen>
     <dimen name="padding">8dp</dimen>
     <dimen name="paddingMin">4dp</dimen>
     <dimen name="paddingApp">8dp</dimen>

+ 18 - 1
app_modular/apputils/src/main/java/com/modular/apputils/activity/BillInputActivity.java

@@ -5,6 +5,7 @@ import android.content.Intent;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Handler;
 import android.support.v7.widget.DividerItemDecoration;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -113,7 +114,23 @@ public class BillInputActivity extends OABaseActivity implements IBill {
     @Override
     public void commitSuccess() {
         ToastMessage("提交成功!");
-        finish();
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                if (mContext == null) return;
+                startActivity(new Intent("com.modular.form.erp.activity.CommonDocDetailsActivity")
+                        .putExtra("caller", mBillPresenter.getFormCaller())
+                        .putExtra("keyValue", mBillPresenter.getFormId())
+                        .putExtra("update", "1")
+                        .putExtra("title", getToolBarTitle())
+                        .putExtra("statusKey", mBillPresenter.getStatusField())
+                        .putExtra("status", "已提交"));
+                finish();
+                overridePendingTransition(R.anim.anim_activity_in, R.anim.anim_activity_out);
+            }
+        }, 2000);
+
+
     }
 
     @Override

+ 7 - 0
app_modular/apputils/src/main/java/com/modular/apputils/presenter/BillPresenter.java

@@ -78,6 +78,13 @@ public class BillPresenter extends BaseNetPresenter {
         return mCaller;
     }
 
+    public int getFormId() {
+        return mId;
+    } public String getStatusField() {
+        return statusField;
+    }
+
+
     public void start(Intent intent) {
         if (intent != null) {
             mCaller = intent.getStringExtra(Constants.Intents.CALLER);

+ 102 - 1
app_modular/apputils/src/main/java/com/modular/apputils/utils/TestStr.java

@@ -5,7 +5,108 @@ package com.modular.apputils.utils;
  */
 
 public class TestStr {
-
+   public static final String CUS_DATAS="{\n" +
+           "\t\"success\": true,\n" +
+           "\t\"sessionId\": \"416289D84F4523982C4CA0ED3D1FBFB8\",\n" +
+           "\t\"business\": [{\n" +
+           "\t\t\"id\": 121,\n" +
+           "\t\t\"bu_name\": \"商机名称\",\n" +
+           "\t\t\"bu_stage\": \"商机阶段\",\n" +
+           "\t\t\"bu_status\": \"商机状态\",\n" +
+           "\t\t\"bu_date\": \"商机创建时间\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"id\": 121,\n" +
+           "\t\t\"bu_name\": \"商机名称\",\n" +
+           "\t\t\"bu_stage\": \"商机阶段\",\n" +
+           "\t\t\"bu_status\": \"商机状态\",\n" +
+           "\t\t\"bu_date\": \"商机创建时间\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"id\": 121,\n" +
+           "\t\t\"bu_name\": \"商机名称\",\n" +
+           "\t\t\"bu_stage\": \"商机阶段\",\n" +
+           "\t\t\"bu_status\": \"商机状态\",\n" +
+           "\t\t\"bu_date\": \"商机创建时间\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"id\": 121,\n" +
+           "\t\t\"bu_name\": \"商机名称\",\n" +
+           "\t\t\"bu_stage\": \"商机阶段\",\n" +
+           "\t\t\"bu_status\": \"商机状态\",\n" +
+           "\t\t\"bu_date\": \"商机创建时间\"\n" +
+           "\t}],\n" +
+           "\t\"cus_contacts\": [{\n" +
+           "\t\t\"id\": 121,\n" +
+           "\t\t\"co_name\": \"客户联系人名称\",\n" +
+           "\t\t\"co_position\": \"职位\",\n" +
+           "\t\t\"co_phone\": \"手机号码|联系方式\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"id\": 121,\n" +
+           "\t\t\"co_name\": \"客户联系人名称\",\n" +
+           "\t\t\"co_position\": \"职位\",\n" +
+           "\t\t\"co_phone\": \"手机号码|联系方式\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"id\": 121,\n" +
+           "\t\t\"co_name\": \"客户联系人名称\",\n" +
+           "\t\t\"co_position\": \"职位\",\n" +
+           "\t\t\"co_phone\": \"手机号码|联系方式\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"id\": 121,\n" +
+           "\t\t\"co_name\": \"客户联系人名称\",\n" +
+           "\t\t\"co_position\": \"职位\",\n" +
+           "\t\t\"co_phone\": \"手机号码|联系方式\"\n" +
+           "\t}],\n" +
+           "\t\"visit_report\": [{\n" +
+           "\t\t\"vis_id\": 121,\n" +
+           "\t\t\"vis_date\": \"拜访时间\",\n" +
+           "\t\t\"vis_contact\": \"客户联系人\",\n" +
+           "\t\t\"vis_man\": \"拜访人\",\n" +
+           "\t\t\"vis_status\": \"状态\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"vis_id\": 121,\n" +
+           "\t\t\"vis_date\": \"拜访时间\",\n" +
+           "\t\t\"vis_contact\": \"客户联系人\",\n" +
+           "\t\t\"vis_man\": \"拜访人\",\n" +
+           "\t\t\"vis_status\": \"状态\"\n" +
+           "\t}],\n" +
+           "\t\"cus_address\": [{\n" +
+           "\t\t\"address_id\": 121,\n" +
+           "\t\t\"name\": \"位置名称|备注\",\n" +
+           "\t\t\"position\": \"地址\",\n" +
+           "\t\t\"address\": \"详细地址\",\n" +
+           "\t\t\"longitude\": \"经度(浮点型)\",\n" +
+           "\t\t\"latitude\": \"纬度(浮点型)\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"address_id\": 121,\n" +
+           "\t\t\"name\": \"位置名称|备注\",\n" +
+           "\t\t\"position\": \"地址\",\n" +
+           "\t\t\"address\": \"详细地址\",\n" +
+           "\t\t\"longitude\": \"经度(浮点型)\",\n" +
+           "\t\t\"latitude\": \"纬度(浮点型)\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"address_id\": 121,\n" +
+           "\t\t\"name\": \"位置名称|备注\",\n" +
+           "\t\t\"position\": \"地址\",\n" +
+           "\t\t\"address\": \"详细地址\",\n" +
+           "\t\t\"longitude\": \"经度(浮点型)\",\n" +
+           "\t\t\"latitude\": \"纬度(浮点型)\"\n" +
+           "\t},\n" +
+           "\t{\n" +
+           "\t\t\"address_id\": 121,\n" +
+           "\t\t\"name\": \"位置名称|备注\",\n" +
+           "\t\t\"position\": \"地址\",\n" +
+           "\t\t\"address\": \"详细地址\",\n" +
+           "\t\t\"longitude\": \"经度(浮点型)\",\n" +
+           "\t\t\"latitude\": \"纬度(浮点型)\"\n" +
+           "\t}]\n" +
+           "}";
    public static final String FEEPLEASE= "{\n" +
            "\t\"listdata\": [{\n" +
            "\t\t\"FP_ID\": 32442,\n" +

+ 8 - 3
app_modular/appworks/src/main/AndroidManifest.xml

@@ -30,7 +30,13 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-        <activity android:name=".OA.erp.activity.CommonDocDetailsActivity" />
+        <activity android:name=".OA.erp.activity.CommonDocDetailsActivity" >
+            <intent-filter>
+                <action android:name="com.modular.form.erp.activity.CommonDocDetailsActivity" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
         <activity
             android:name=".OA.erp.activity.form.DataFormDetailActivity"
             android:hardwareAccelerated="false">
@@ -495,8 +501,7 @@
         <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="客户列表"/>
+        <activity android:name=".crm3_0.activity.CustomerListActivity"/>
         <activity android:name=".crm3_0.activity.ContactsListActivity"></activity>
         <activity android:name=".crm3_0.activity.CustomerManageActivity"></activity>
         <activity android:name=".crm3_0.activity.CustomerBillInputActivity"></activity>

+ 6 - 4
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerBillInputActivity.java

@@ -40,7 +40,7 @@ import java.util.HashMap;
 import java.util.List;
 
 /**
- * 客户录入界面
+ * 客户|预录入客户录入界面
  */
 public class CustomerBillInputActivity extends OABaseActivity implements IBill {
     private final int REQUESTCODE_C = 0x11;
@@ -83,7 +83,8 @@ public class CustomerBillInputActivity extends OABaseActivity implements IBill {
                 mBillPresenter.saveAndSubmit(mBillAdapter.getBillGroupModels());
             }
         } else if (item.getItemId() == R.id.list) {
-            startActivity(new Intent(ct, CustomerListActivity.class));
+            startActivity(new Intent(ct, CustomerListActivity.class)
+                    .putExtra(Constants.Intents.TITLE, getToolBarTitle()));
         }
         return super.onOptionsItemSelected(item);
     }
@@ -122,9 +123,10 @@ public class CustomerBillInputActivity extends OABaseActivity implements IBill {
                     .putExtra(Constants.Intents.CALLER, "Contact")
                     .putExtra(Constants.Intents.TITLE, "客户联系人")
                     .putExtra(Constants.Intents.ID, 0)
-            .putExtra(Constants.Intents.CALLER,hashMap));
+                    .putExtra(Constants.Intents.CALLER, hashMap));
         } else {
-            startActivity(new Intent(ct, CustomerListActivity.class));
+            startActivity(new Intent(ct, CustomerListActivity.class)
+                    .putExtra(Constants.Intents.TITLE, getToolBarTitle()));
 
         }
         finish();

+ 28 - 14
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerDetails3_0Activity.java

@@ -7,6 +7,7 @@ import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.text.TextUtils;
+import android.util.SparseArray;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -18,7 +19,9 @@ import com.common.data.ListUtils;
 import com.core.base.OABaseActivity;
 import com.modular.apputils.model.BillGroupModel;
 import com.uas.appworks.R;
+import com.uas.appworks.crm3_0.fragment.CustomerDetailsBottomListFragment;
 import com.uas.appworks.crm3_0.fragment.CustomerListDetailsFragment;
+import com.uas.appworks.model.CustomerBindBill;
 import com.uas.appworks.presenter.CustomerDetailsPresenter;
 import com.uas.appworks.presenter.imp.ICustomerDetails;
 
@@ -34,8 +37,11 @@ public class CustomerDetails3_0Activity extends OABaseActivity implements ICusto
     private ViewPager mViewPager;
 
     private String[] tabTitle;
+    private final int TAB_NUM = 4;
     private CustomerDetailsPresenter mPresenter;
     private ListAdapter mListAdapter;
+    SparseArray<ArrayList<CustomerBindBill>> mBottomDataList = new SparseArray<>();
+    private ViewPageAdapter mAdapter;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -47,7 +53,7 @@ public class CustomerDetails3_0Activity extends OABaseActivity implements ICusto
     }
 
     private void initView() {
-        tabTitle = new String[]{getString(R.string.my_responsible), getString(R.string.my_subordinate)};
+        tabTitle = new String[TAB_NUM];
         mListView = findViewById(R.id.mListView);
         mTabLayout = (TabLayout) findViewById(R.id.mTabLayout);
         mViewPager = (ViewPager) findViewById(R.id.mViewPager);
@@ -55,7 +61,7 @@ public class CustomerDetails3_0Activity extends OABaseActivity implements ICusto
         for (String tab : tabTitle) {
             mTabLayout.addTab(mTabLayout.newTab().setText(tab));
         }
-        ViewPageAdapter mAdapter = new ViewPageAdapter(getSupportFragmentManager());
+        mAdapter = new ViewPageAdapter(getSupportFragmentManager());
         mViewPager.setAdapter(mAdapter);//给ViewPager设置适配器
         mTabLayout.setupWithViewPager(mViewPager);//将TabLayout和ViewPager关联起来。
     }
@@ -72,6 +78,15 @@ public class CustomerDetails3_0Activity extends OABaseActivity implements ICusto
         }
     }
 
+    @Override
+    public void setBottomDatas(ArrayList<CustomerBindBill> mCusBusiness, ArrayList<CustomerBindBill> mCusContacts, ArrayList<CustomerBindBill> mCusReport, ArrayList<CustomerBindBill> mCusAddress) {
+        mBottomDataList.put(0, mCusAddress);
+        mBottomDataList.put(1, mCusContacts);
+        mBottomDataList.put(2, mCusReport);
+        mBottomDataList.put(3, mCusBusiness);
+        mAdapter.notifyDataSetChanged();
+    }
+
 
     private class ViewPageAdapter extends FragmentPagerAdapter {
 
@@ -79,28 +94,27 @@ public class CustomerDetails3_0Activity extends OABaseActivity implements ICusto
             super(fm);
         }
 
-        @Override
-        public void setPrimaryItem(ViewGroup container, int position, Object object) {
-            if (object != null && object instanceof CustomerListDetailsFragment) {
-                //获取当前的fragment
-//                mCurrentFragment = (CustomerListDetailsFragment) object;
-            }
-            super.setPrimaryItem(container, position, object);
-        }
-
         @Override
         public Fragment getItem(int position) {
-            return CustomerListDetailsFragment.newInstance("", "");
+            ArrayList<CustomerBindBill> bills = null;
+            if (mBottomDataList != null && mBottomDataList.size() > position && mBottomDataList.get(position) != null) {
+                bills = mBottomDataList.get(position);
+            }
+            return CustomerDetailsBottomListFragment.newInstance(position, bills);
         }
 
         @Override
         public CharSequence getPageTitle(int position) {
-            return tabTitle[position];
+            if (tabTitle != null && tabTitle.length > position && tabTitle[position] != null) {
+                return tabTitle[position];
+            } else {
+                return "";
+            }
         }
 
         @Override
         public int getCount() {
-            return tabTitle.length;
+            return TAB_NUM;
         }
     }
 

+ 13 - 3
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerListActivity.java

@@ -4,13 +4,15 @@ package com.uas.appworks.crm3_0.activity;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
+import android.text.TextUtils;
 
+import com.common.data.TextUtil;
+import com.core.app.Constants;
 import com.core.base.BaseActivity;
 
 import com.modular.apputils.widget.DivideRadioGroup;
 import com.uas.appworks.R;
 import com.uas.appworks.crm3_0.fragment.CustomerListFragment;
-import com.uas.appworks.crm3_0.fragment.CustomerMapFragment;
 
 /**
  * 客户列表界面
@@ -29,8 +31,16 @@ public class CustomerListActivity extends BaseActivity {
     }
 
     private void init() {
+        if (getIntent() != null) {
+            String title = getIntent().getStringExtra(Constants.Intents.TITLE);
+            if (!TextUtils.isEmpty(title)) {
+                setTitle(title + "列表");
+            } else {
+                setTitle("列表");
+            }
+        }
         DivideRadioGroup tabBottomRg = findViewById(R.id.tabBottomRg);
-        CustomerListFragment listFragment = CustomerListFragment.newInstance(1);
+        Fragment listFragment = CustomerListFragment.newInstance(1);
         changeFragment(listFragment, LIST);
         tabBottomRg.setOnCheckedChangeListener(new DivideRadioGroup.OnCheckedChangeListener() {
             @Override
@@ -46,7 +56,7 @@ public class CustomerListActivity extends BaseActivity {
                 } else if (R.id.customerLocationRb == checkedId) {
                     fragment = getSupportFragmentManager().findFragmentByTag(MAP);
                     if (fragment == null) {
-                        fragment = new CustomerMapFragment();
+                        fragment = CustomerListFragment.newInstance(2);
                     }
                     tag = MAP;
                 }

+ 76 - 18
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerManageActivity.java

@@ -4,11 +4,15 @@ import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.Html;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.WindowManager;
+import android.view.animation.Animation;
+import android.view.animation.LinearInterpolator;
+import android.view.animation.RotateAnimation;
 import android.widget.AdapterView;
 import android.widget.ImageView;
 import android.widget.ListView;
@@ -17,6 +21,7 @@ import android.widget.SimpleAdapter;
 import android.widget.TextView;
 
 import com.common.LogUtil;
+import com.common.data.CalendarUtil;
 import com.common.data.DateFormatUtil;
 import com.common.data.TextUtil;
 import com.common.system.DisplayUtil;
@@ -24,6 +29,7 @@ import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
 import com.core.app.Constants;
 import com.core.base.OABaseActivity;
+import com.core.utils.time.wheel.DateTimePicker;
 import com.core.widget.MyListView;
 import com.core.widget.view.MyGridView;
 import com.modular.apputils.activity.BillInputActivity;
@@ -67,7 +73,8 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
     private CustomerListAdapter mCustomerCareAdapter;//客户关怀适配器
     private EasyBaseAdapter mVisitAdapter;//拜访记录
 
-    private  PopupWindow menuPopWindow;
+    private PopupWindow menuPopWindow;
+    private RotateAnimation mRotateAnimation;//动画
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
@@ -77,7 +84,7 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId()==R.id.add_item){
+        if (item.getItemId() == R.id.add_item) {
             showPopupWindow(getWindow().findViewById(R.id.add_item));
         }
         return super.onOptionsItemSelected(item);
@@ -155,18 +162,32 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
                 return R.layout.item_customer_manage_add;
             }
         });
+        showCustomerTv.setText(DateFormatUtil.long2Str(DateFormatUtil.YM));
+
         mCustomerManagePresenter = new CustomerManagePresenter(ct, this);
         mCustomerManagePresenter.loadAllData();
 
 
     }
 
+    private Animation getImgAnimation() {
+        if (mRotateAnimation == null) {
+            mRotateAnimation = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
+            LinearInterpolator lin = new LinearInterpolator();
+            mRotateAnimation.setInterpolator(lin);
+            mRotateAnimation.setDuration(1000);//设置动画持续时间
+            mRotateAnimation.setRepeatCount(-1);//设置重复次数
+            mRotateAnimation.setFillAfter(true);//动画执行完后是否停留在执行完的状态
+            mRotateAnimation.setStartOffset(10);//执行前的等待时间
+        }
+        return mRotateAnimation;
+    }
 
     public void showPopupWindow(View parent) {
         if (menuPopWindow == null) {
             LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             View view = layoutInflater.inflate(R.layout.pop_crm_list, null);
-            ListView plist =  view.findViewById(R.id.mList);
+            ListView plist = view.findViewById(R.id.mList);
             SimpleAdapter adapter = new SimpleAdapter(ct, getPopData(),
                     R.layout.item_pop_list, new String[]{"item_name"}, new int[]{R.id.tv_item_name});
             plist.setAdapter(adapter);
@@ -174,14 +195,14 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
                 @Override
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                     toAddPager(position);
-                    if(menuPopWindow!=null){
+                    if (menuPopWindow != null) {
                         menuPopWindow.dismiss();
                     }
                 }
             });
-            menuPopWindow =new PopupWindow(view);
-            menuPopWindow.setWidth(DisplayUtil.dip2px(ct,140));
-            menuPopWindow.setHeight(DisplayUtil.dip2px(ct,160));
+            menuPopWindow = new PopupWindow(view);
+            menuPopWindow.setWidth(DisplayUtil.dip2px(ct, 140));
+            menuPopWindow.setHeight(DisplayUtil.dip2px(ct, 160));
         }
         // 使其聚集
         menuPopWindow.setFocusable(true);
@@ -197,12 +218,13 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
         // 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
         menuPopWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.top_bubble));
         // 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半
-        menuPopWindow.showAsDropDown(parent, -DisplayUtil.dip2px(ct,50), 0);
+        menuPopWindow.showAsDropDown(parent, -DisplayUtil.dip2px(ct, 50), 0);
     }
+
     private List<Map<String, Object>> getPopData() {
         List<Map<String, Object>> list = new ArrayList<>();
         Map<String, Object> map = new HashMap<>();
-        map.put("item_name","正式客户");
+        map.put("item_name", "正式客户");
         list.add(map);
 
         map = new HashMap<>();
@@ -210,11 +232,11 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
         list.add(map);
 
         map = new HashMap<>();
-        map.put("item_name","客户联系人");
+        map.put("item_name", "客户联系人");
         list.add(map);
 
         map = new HashMap<>();
-        map.put("item_name","拜访报告");
+        map.put("item_name", "拜访报告");
         list.add(map);
         return list;
     }
@@ -282,7 +304,19 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
         public void onClick(View view) {
             int id = view.getId();
             if (R.id.showCustomerTv == id) {
-                //客户看板时间
+                showDataSelect();
+            } else if (showCustomerRefIv == view || forgetCustomerRefIv == view || customerCareRefIv == view || visitRefIv == view) {
+                view.setAnimation(getImgAnimation());
+                view.startAnimation(getImgAnimation());
+                if (showCustomerRefIv == view) {
+                    mCustomerManagePresenter.loadShowCustomerItems(showCustomerTv.getText().toString());
+                } else if (forgetCustomerRefIv == view) {
+                    mCustomerManagePresenter.loadForgetCustomer();
+                } else if (customerCareRefIv == view) {
+                    mCustomerManagePresenter.loadCustomerCare();
+                } else if (visitRefIv == view) {
+                    mCustomerManagePresenter.loadVisitStatistics();
+                }
             }
         }
     };
@@ -299,32 +333,50 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
     };
 
 
+    private void showDataSelect() {
+        DateTimePicker picker = new DateTimePicker(this, DateTimePicker.YEAR_MONTH);
+        picker.setRange(CalendarUtil.getYear() - 10, CalendarUtil.getYear() + 10);
+        picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
+        picker.setOnDateTimePickListener(new DateTimePicker.OnYearMonthPickListener() {
+            @Override
+            public void onDateTimePicked(String year, String month, String hour, String minute) {
+                if (!TextUtils.isEmpty(year) && !TextUtils.isEmpty(month)) {
+                    showCustomerTv.setText(year + "-" + month);
+                    mCustomerManagePresenter.loadShowCustomerItems(showCustomerTv.getText().toString());
+                }
+            }
+        });
+
+        picker.show();
+    }
+
+
     private void toAddPager(int position) {
-        LogUtil.i("gong","position="+position);
+        LogUtil.i("gong", "position=" + position);
         String mCaller = "";
         String mTitle = "";
         int mId = 0;
-        Class clazz=null;
+        Class clazz = null;
         switch (position) {
             case 0:
                 mCaller = "Customer!Base";
                 mTitle = "正式客户";
-                clazz=CustomerBillInputActivity.class;
+                clazz = CustomerBillInputActivity.class;
                 break;
             case 1:
                 mCaller = "PreCustomer";
                 mTitle = "预录入客户";
-                clazz=CustomerBillInputActivity.class;
+                clazz = CustomerBillInputActivity.class;
                 break;
             case 2:
                 mCaller = "Contact";
                 mTitle = "客户联系人";
-                clazz=BillInputActivity.class;
+                clazz = BillInputActivity.class;
                 break;
             case 3:
                 mCaller = "VisitRecord";
                 mTitle = "拜访报告";
-                clazz=BillInputActivity.class;
+                clazz = BillInputActivity.class;
                 break;
         }
         startActivity(new Intent(ct, clazz)
@@ -346,6 +398,8 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
 
     @Override
     public void setShowCustomerAdapter(List<EasyBaseModel> models) {
+
+        showCustomerRefIv.setAnimation(null);
         showCustomerRefTimeTv.setText(DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
         if (showCustomerAdapter == null) {
             showCustomerAdapter = new EasyBaseAdapter(ct, models) {
@@ -385,6 +439,7 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
 
     @Override
     public void setForgetCustomerAdapter(List<EasyBaseModel> models) {
+        forgetCustomerRefIv.setAnimation(null);
         forgetCustomerRefTimeTv.setText(DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
         if (mCustomerForgetAdapter == null) {
             mCustomerForgetAdapter = new CustomerListAdapter(ct, models, 1);
@@ -396,6 +451,8 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
 
     @Override
     public void setCustomerCareAdapter(List<EasyBaseModel> models) {
+
+        customerCareRefIv.setAnimation(null);
         customerCareRefTimeTv.setText(DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
         if (mCustomerCareAdapter == null) {
             mCustomerCareAdapter = new CustomerListAdapter(ct, models, 2);
@@ -407,6 +464,7 @@ public class CustomerManageActivity extends OABaseActivity implements ICustomerM
 
     @Override
     public void setVisitAdapter(List<EasyBaseModel> models) {
+        visitRefIv.setAnimation(null);
         visitRefTimeTv.setText(DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
         if (mVisitAdapter == null) {
             mVisitAdapter = new EasyBaseAdapter(ct, models) {

+ 187 - 1
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerDetailsBottomListFragment.java

@@ -1,20 +1,206 @@
 package com.uas.appworks.crm3_0.fragment;
 
 import android.os.Bundle;
+import android.support.v7.widget.DividerItemDecoration;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.TextView;
 
+import com.common.data.ListUtils;
 import com.modular.apputils.fragment.ViewPagerLazyFragment;
+import com.module.recyclerlibrary.ui.refresh.EmptyRecyclerView;
+import com.uas.appworks.R;
+import com.uas.appworks.model.CustomerBindBill;
+
+import java.util.ArrayList;
+import java.util.List;
 
 public class CustomerDetailsBottomListFragment extends ViewPagerLazyFragment {
+    private int type;//0,客户地址 1,客户联系人 2.拜访记录 3,客户商机
+    private List<CustomerBindBill> mCusBusiness;
+    private RecyclerView mRecyclerView;
+
 
+    public static CustomerDetailsBottomListFragment newInstance(int type, ArrayList<CustomerBindBill> mCusBusiness) {
+        Bundle args = new Bundle();
+        CustomerDetailsBottomListFragment fragment = new CustomerDetailsBottomListFragment();
+        args.putInt("type", type);
+        args.putParcelableArrayList("mCusBusiness", mCusBusiness);
+        fragment.setArguments(args);
+        return fragment;
+    }
 
     @Override
     protected int inflateLayoutId() {
-        return 0;
+        return R.layout.fragment_customer_details_bottomlist;
     }
 
 
     @Override
     protected void LazyData() {
+        if (getArguments() != null) {
+            type = getArguments().getInt("mCusBusiness", 0);
+            mCusBusiness = getArguments().getParcelableArrayList("mCusBusiness");
+        }
+
+        EmptyRecyclerView mEmptyRecyclerView = findViewById(R.id.mEmptyRecyclerView);
+        mRecyclerView = mEmptyRecyclerView.getRecyclerView();
+        mRecyclerView.setLayoutManager(new LinearLayoutManager(ct));
+        mRecyclerView.addItemDecoration(new DividerItemDecoration(ct, LinearLayout.VERTICAL));
+        mRecyclerView.setAdapter(new ListAdapter());
+    }
+
+
+    private class ListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
+        private LayoutInflater mLayoutInflater;
+
+        @Override
+        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
+            //0,客户地址 1,客户联系人 2.拜访记录 3,客户商机
+            switch (type) {
+                case 1:
+                    return new ContactViewHolder(viewGroup);
+                case 2:
+                    return new VisitRecordViewHolder(viewGroup);
+                case 3:
+                    return new BusinessViewHolder(viewGroup);
+                default:
+                    return new AddressViewHolder(viewGroup);
+            }
+        }
+
+        public LayoutInflater getLayoutInflater() {
+            if (mLayoutInflater == null) {
+                mLayoutInflater = LayoutInflater.from(ct);
+            }
+            return mLayoutInflater;
+        }
+
+        @Override
+        public int getItemCount() {
+            return ListUtils.getSize(mCusBusiness);
+        }
+
+        //客户联系人
+        private class ContactViewHolder extends RecyclerView.ViewHolder {
+            private TextView nameTv;
+            private TextView subNameTv;
+            private TextView phoneTv;
+
+            public ContactViewHolder(ViewGroup viewGroup) {
+                this(getLayoutInflater().inflate(R.layout.item_customer_detail_bottom_conteact, viewGroup, false));
+            }
+
+            public ContactViewHolder(View itemView) {
+                super(itemView);
+                nameTv = (TextView) itemView.findViewById(R.id.nameTv);
+                subNameTv = (TextView) itemView.findViewById(R.id.subNameTv);
+                phoneTv = (TextView) itemView.findViewById(R.id.phoneTv);
+
+            }
+        }
+
+        //拜访记录visitRecord
+        private class VisitRecordViewHolder extends RecyclerView.ViewHolder {
+            private TextView dateTv;
+            private TextView contactTv;
+            private TextView doManTv;
+            private TextView statusTv;
+
+            public VisitRecordViewHolder(ViewGroup viewGroup) {
+                this(getLayoutInflater().inflate(R.layout.item_customer_detail_bottom_visitrecord, viewGroup, false));
+            }
+
+            public VisitRecordViewHolder(View itemView) {
+                super(itemView);
+                dateTv = (TextView) itemView.findViewById(R.id.dateTv);
+                contactTv = (TextView) itemView.findViewById(R.id.contactTv);
+                doManTv = (TextView) itemView.findViewById(R.id.doManTv);
+                statusTv = (TextView) itemView.findViewById(R.id.statusTv);
+
+            }
+        }
+
+
+        //address  客户地址
+        private class AddressViewHolder extends RecyclerView.ViewHolder {
+            private TextView nameTv;
+            private TextView addressTv;
+
+            public AddressViewHolder(ViewGroup viewGroup) {
+                this(getLayoutInflater().inflate(R.layout.item_customer_detail_bottom_address, viewGroup, false));
+            }
+
+            public AddressViewHolder(View itemView) {
+                super(itemView);
+                nameTv = (TextView) itemView.findViewById(R.id.nameTv);
+                addressTv = (TextView) itemView.findViewById(R.id.addressTv);
+
+
+            }
+        }
+
+        //客户商机
+        private class BusinessViewHolder extends RecyclerView.ViewHolder {
+            private TextView nameTv;
+            private TextView stageTv;
+            private TextView statusTv;
+            private TextView dateTv;
+
+            public BusinessViewHolder(ViewGroup viewGroup) {
+                this(getLayoutInflater().inflate(R.layout.item_customer_detail_bottom_business, viewGroup, false));
+            }
+
+            public BusinessViewHolder(View itemView) {
+                super(itemView);
+                nameTv = (TextView) itemView.findViewById(R.id.nameTv);
+                stageTv = (TextView) itemView.findViewById(R.id.stageTv);
+                statusTv = (TextView) itemView.findViewById(R.id.statusTv);
+                dateTv = (TextView) itemView.findViewById(R.id.dateTv);
+            }
+        }
+
+        @Override
+        public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
+            CustomerBindBill bill = mCusBusiness.get(i);
+            if (viewHolder instanceof ContactViewHolder) {
+                bindContactView((ContactViewHolder) viewHolder, i, bill);
+            } else if (viewHolder instanceof VisitRecordViewHolder) {
+                bindVisitRecordView((VisitRecordViewHolder) viewHolder, i, bill);
+            } else if (viewHolder instanceof BusinessViewHolder) {
+                bindBusinessView((BusinessViewHolder) viewHolder, i, bill);
+            } else if (viewHolder instanceof AddressViewHolder) {
+                bindAddressView((AddressViewHolder) viewHolder, i, bill);
+            }
+        }
+
+        private void bindContactView(ContactViewHolder holder, int position, CustomerBindBill bill) {
+            holder.nameTv.setText(bill.getName());
+            holder.subNameTv.setText(bill.getSubName());
+            holder.phoneTv.setText(bill.getDate());
+        }
+
+        private void bindVisitRecordView(VisitRecordViewHolder holder, int position, CustomerBindBill bill) {
+            holder.contactTv.setText(bill.getSubName());
+            holder.dateTv.setText(bill.getDate());
+            holder.doManTv.setText(bill.getName());
+            holder.statusTv.setText(bill.getStatus());
+        }
+
+        private void bindBusinessView(BusinessViewHolder holder, int position, CustomerBindBill bill) {
+            holder.dateTv.setText(bill.getDate());
+            holder.nameTv.setText(bill.getName());
+            holder.stageTv.setText(bill.getSubName());
+            holder.statusTv.setText(bill.getStatus());
+        }
 
+        private void bindAddressView(AddressViewHolder holder, int position, CustomerBindBill bill) {
+            holder.nameTv.setText(bill.getName());
+            holder.addressTv.setText(bill.getAddress());
+        }
     }
 }

+ 4 - 3
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerListDetailsFragment.java

@@ -77,11 +77,12 @@ public class CustomerListDetailsFragment extends ViewPagerLazyFragment {
             mCaller = args.getString("mCaller");
         }
 
-        mRefreshLayout = (SimpleRefreshLayout) findViewById(R.id.mRefreshLayout);
-        EmptyRecyclerView mEmptyRecyclerView = (EmptyRecyclerView) findViewById(R.id.mEmptyRecyclerView);
+        mRefreshLayout =  findViewById(R.id.mRefreshLayout);
+        EmptyRecyclerView mEmptyRecyclerView = findViewById(R.id.mEmptyRecyclerView);
         mRecyclerView = mEmptyRecyclerView.getRecyclerView();
         mRecyclerView.setLayoutManager(new LinearLayoutManager(ct));
-
+        mRefreshLayout.setEnabledPullUp(false);
+        mRefreshLayout.setEnablePullDown(false);
         mRefreshLayout.setOnRefreshListener(new BaseRefreshLayout.onRefreshListener() {
             @Override
             public void onRefresh() {

+ 8 - 4
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerListFragment.java

@@ -6,6 +6,7 @@ import android.support.design.widget.TabLayout;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
+import android.support.v4.app.FragmentStatePagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.view.View;
 import android.view.ViewGroup;
@@ -41,8 +42,11 @@ public class CustomerListFragment extends EasyFragment {
     @Override
     protected void onCreateView(Bundle savedInstanceState, boolean createView) {
         if (createView) {
-            type = getArguments().getInt("type", 1);
-            LogUtil.i("gong","type="+type);
+            type = 1;
+            if (getArguments() != null) {
+                type = getArguments().getInt("type", 1);
+            }
+            LogUtil.i("gong", "type=" + type);
             initView(getmRootView());
         }
     }
@@ -61,7 +65,7 @@ public class CustomerListFragment extends EasyFragment {
 
     }
 
-    private class ViewPageAdapter extends FragmentPagerAdapter {
+    private class ViewPageAdapter extends FragmentStatePagerAdapter {
 
         public ViewPageAdapter(FragmentManager fm) {
             super(fm);
@@ -88,7 +92,7 @@ public class CustomerListFragment extends EasyFragment {
                         " (select em_defaulthsid from employee where em_code =\'" + CommonUtil.getEmcode() + "\')" +
                         ")";
             }
-            LogUtil.i("gong","mCaller="+mCaller);
+            LogUtil.i("gong", "type=" + type);
             if (type == 2) {//地图界面
                 return CustomerMapDetailsFragment.newInstance(mCaller, mCondition);
             } else {//列表界面

+ 0 - 99
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerMapFragment.java

@@ -1,99 +0,0 @@
-package com.uas.appworks.crm3_0.fragment;
-
-import android.os.Bundle;
-import android.support.design.widget.TabLayout;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.common.LogUtil;
-import com.core.base.EasyFragment;
-import com.core.utils.CommonUtil;
-import com.uas.appworks.R;
-
-public class CustomerMapFragment extends EasyFragment {
-
-    private String[] tabTitle;
-    private TabLayout mTabLayout;
-    private ViewPager mViewPager;
-
-
-    public static CustomerListFragment newInstance( ) {
-        Bundle args = new Bundle();
-        CustomerListFragment fragment = new CustomerListFragment();
-
-        fragment.setArguments(args);
-        return fragment;
-    }
-
-    @Override
-    protected int inflateLayoutId() {
-        return R.layout.fragment_customer_3_0;
-    }
-
-    @Override
-    protected void onCreateView(Bundle savedInstanceState, boolean createView) {
-        if (createView) {
-            initView(getmRootView());
-        }
-    }
-
-    private void initView(View rootView) {
-        tabTitle = new String[]{getString(R.string.my_responsible), getString(R.string.my_subordinate)};
-        mTabLayout = findViewById(R.id.mTabLayout);
-        mViewPager = findViewById(R.id.mViewPager);
-        mTabLayout.setTabMode(TabLayout.MODE_FIXED);//设置tab模式,当前为系统默认模式
-        for (String tab : tabTitle) {
-            mTabLayout.addTab(mTabLayout.newTab().setText(tab));
-        }
-        ViewPageAdapter mAdapter = new ViewPageAdapter(getActivity().getSupportFragmentManager());
-        mViewPager.setAdapter(mAdapter);//给ViewPager设置适配器
-        mTabLayout.setupWithViewPager(mViewPager);//将TabLayout和ViewPager关联起来。
-
-    }
-
-    private class ViewPageAdapter extends FragmentPagerAdapter {
-
-        public ViewPageAdapter(FragmentManager fm) {
-            super(fm);
-        }
-
-        @Override
-        public void setPrimaryItem(ViewGroup container, int position, Object object) {
-            if (object != null && object instanceof CustomerListDetailsFragment) {
-                //获取当前的fragment
-//                mCurrentFragment = (CustomerListDetailsFragment) object;
-            }
-            super.setPrimaryItem(container, position, object);
-        }
-
-        @Override
-        public Fragment getItem(int position) {
-            String mCaller = "Customer!Base";
-            String mCondition;
-            if (position == 0) {
-                mCondition = "cu_sellercode=\'" + CommonUtil.getEmcode() + "\'";
-            } else {
-                mCondition = "cu_sellercode in ( " +
-                        " select em_code from employee left join job on em_defaulthsid=jo_subof where jo_subof=" +
-                        " (select em_defaulthsid from employee where em_code =\'" + CommonUtil.getEmcode() + "\')" +
-                        ")";
-            }
-            LogUtil.i("gong", "mCaller=" + mCaller);
-            return CustomerMapDetailsFragment.newInstance(mCaller, mCondition);
-        }
-
-        @Override
-        public CharSequence getPageTitle(int position) {
-            return tabTitle[position];
-        }
-
-        @Override
-        public int getCount() {
-            return tabTitle.length;
-        }
-    }
-}

+ 35 - 0
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/TestFragment.java

@@ -0,0 +1,35 @@
+package com.uas.appworks.crm3_0.fragment;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.widget.TextView;
+
+import com.core.base.EasyFragment;
+import com.uas.appworks.R;
+
+public class TestFragment extends EasyFragment {
+
+
+    public static TestFragment newInstance(String text) {
+        Bundle args = new Bundle();
+        TestFragment fragment = new TestFragment();
+        args.putString("text",text);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    protected int inflateLayoutId() {
+        return R.layout.fragment_test;
+    }
+
+    @Override
+    protected void onCreateView(Bundle savedInstanceState, boolean createView) {
+        if (createView){
+            TextView text=findViewById(R.id.text);
+            if (getArguments()!=null){
+                text.setText(getArguments().getString("text",""));
+            }
+        }
+    }
+}

+ 127 - 0
app_modular/appworks/src/main/java/com/uas/appworks/model/CustomerBindBill.java

@@ -0,0 +1,127 @@
+package com.uas.appworks.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.common.data.JSONUtil;
+
+/**
+ * 客户绑定的子单据对象
+ */
+public class CustomerBindBill implements Parcelable{
+    private int id;
+    private String name;
+    private String subName;
+    private String address;
+    private String status;
+    private String date;
+    private String longitude;
+    private String latitude;
+
+    public CustomerBindBill() {
+    }
+
+    protected CustomerBindBill(Parcel in) {
+        id = in.readInt();
+        name = in.readString();
+        subName = in.readString();
+        address = in.readString();
+        status = in.readString();
+        date = in.readString();
+        longitude = in.readString();
+        latitude = in.readString();
+    }
+
+    public static final Creator<CustomerBindBill> CREATOR = new Creator<CustomerBindBill>() {
+        @Override
+        public CustomerBindBill createFromParcel(Parcel in) {
+            return new CustomerBindBill(in);
+        }
+
+        @Override
+        public CustomerBindBill[] newArray(int size) {
+            return new CustomerBindBill[size];
+        }
+    };
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(String longitude) {
+        this.longitude = longitude;
+    }
+
+    public String getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(String latitude) {
+        this.latitude = latitude;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSubName() {
+        return subName;
+    }
+
+    public void setSubName(String subName) {
+        this.subName = subName;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel parcel, int i) {
+        parcel.writeInt(id);
+        parcel.writeString(name);
+        parcel.writeString(subName);
+        parcel.writeString(address);
+        parcel.writeString(status);
+        parcel.writeString(date);
+        parcel.writeString(longitude);
+        parcel.writeString(latitude);
+    }
+}

+ 101 - 1
app_modular/appworks/src/main/java/com/uas/appworks/presenter/CustomerDetailsPresenter.java

@@ -6,6 +6,7 @@ import android.content.Intent;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baidu.platform.comapi.map.E;
 import com.common.LogUtil;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
@@ -18,6 +19,8 @@ import com.modular.apputils.network.Parameter;
 import com.modular.apputils.network.Tags;
 import com.modular.apputils.presenter.BaseNetPresenter;
 
+import com.modular.apputils.utils.TestStr;
+import com.uas.appworks.model.CustomerBindBill;
 import com.uas.appworks.presenter.imp.ICustomerDetails;
 
 import java.util.ArrayList;
@@ -26,6 +29,7 @@ import java.util.List;
 
 public class CustomerDetailsPresenter extends BaseNetPresenter {
     private final int LOAD_FORM = 0x11;//获取配置接口
+    private final int LOAD_RELATION_DETAILS = 0x12;//获取下面信息数据
 
     private ICustomerDetails iCustomerDetails;
     private String mCaller;//当前单据的Caller
@@ -51,6 +55,7 @@ public class CustomerDetailsPresenter extends BaseNetPresenter {
             }
         }
         loadFormandGridDetail();
+        loadRelationDetails();
     }
 
 
@@ -65,13 +70,31 @@ public class CustomerDetailsPresenter extends BaseNetPresenter {
     }
 
 
+    private void loadRelationDetails() {
+        iCustomerDetails.showLoading();
+        requestCompanyHttp(new Parameter.Builder()
+                        .url("mobile/crm/customerRelationDetails.action")
+                        .addParams("customerId", 51874)
+                        .record(LOAD_RELATION_DETAILS)
+                , mOnSmartHttpListener);
+//        try {
+//            handlerRelationDetails(JSON.parseObject(TestStr.CUS_DATAS));
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+    }
+
+
     private OnSmartHttpListener mOnSmartHttpListener = new OnSmartHttpListener() {
         @Override
         public void onSuccess(int what, String message, Tags tag) throws Exception {
             JSONObject jsonObject = JSON.parseObject(message);
             switch (what) {
                 case LOAD_FORM:
-                    handlerFormData(JSONUtil.getJSONObject(jsonObject,"datas"));
+                    handlerFormData(JSONUtil.getJSONObject(jsonObject, "datas"));
+                    break;
+                case LOAD_RELATION_DETAILS:
+                    handlerRelationDetails(jsonObject);
                     break;
 
             }
@@ -90,6 +113,83 @@ public class CustomerDetailsPresenter extends BaseNetPresenter {
         }
     };
 
+    private void handlerRelationDetails(JSONObject jsonObject) throws Exception {
+        JSONArray business = JSONUtil.getJSONArray(jsonObject, "business");
+        JSONArray cus_contacts = JSONUtil.getJSONArray(jsonObject, "cus_contacts");
+        JSONArray visit_report = JSONUtil.getJSONArray(jsonObject, "visit_report");
+        JSONArray cus_address = JSONUtil.getJSONArray(jsonObject, "cus_address");
+
+
+        ArrayList<CustomerBindBill> mCusBusiness = new ArrayList<>();
+        for (int i = 0; i < business.size(); i++) {
+            CustomerBindBill bindBill = new CustomerBindBill();
+            JSONObject object = business.getJSONObject(i);
+            int id = JSONUtil.getInt(object, "id");
+            String name = JSONUtil.getText(object, "bu_name");
+            String stage = JSONUtil.getText(object, "bu_stage");
+            String status = JSONUtil.getText(object, "bu_status");
+            String date = JSONUtil.getText(object, "bu_date");
+            bindBill.setId(id);
+            bindBill.setName(name);
+            bindBill.setSubName(stage);
+            bindBill.setStatus(status);
+            bindBill.setDate(date);
+            mCusBusiness.add(bindBill);
+        }
+
+        ArrayList<CustomerBindBill> mCusContacts = new ArrayList<>();
+        for (int i = 0; i < cus_contacts.size(); i++) {
+            CustomerBindBill bindBill = new CustomerBindBill();
+            JSONObject object = cus_contacts.getJSONObject(i);
+            int id = JSONUtil.getInt(object, "id");
+            String name = JSONUtil.getText(object, "co_name");
+            String position = JSONUtil.getText(object, "co_position");
+            String phone = JSONUtil.getText(object, "co_phone");
+            bindBill.setId(id);
+            bindBill.setName(name);
+            bindBill.setSubName(position);
+            bindBill.setDate(phone);
+            mCusContacts.add(bindBill);
+        }
+
+        ArrayList<CustomerBindBill> mCusReport = new ArrayList<>();
+        for (int i = 0; i < visit_report.size(); i++) {
+            CustomerBindBill bindBill = new CustomerBindBill();
+            JSONObject object = visit_report.getJSONObject(i);
+            int id = JSONUtil.getInt(object, "vis_id");
+            String name = JSONUtil.getText(object, "vis_man");
+            String contact = JSONUtil.getText(object, "vis_contact");
+            String date = JSONUtil.getText(object, "vis_date");
+            String status = JSONUtil.getText(object, "vis_status");
+            bindBill.setId(id);
+            bindBill.setName(name);
+            bindBill.setSubName(contact);
+            bindBill.setDate(date);
+            bindBill.setStatus(status);
+            mCusReport.add(bindBill);
+        }
+
+        ArrayList<CustomerBindBill> mCusAddress = new ArrayList<>();
+        for (int i = 0; i < cus_address.size(); i++) {
+            CustomerBindBill bindBill = new CustomerBindBill();
+            JSONObject object = cus_address.getJSONObject(i);
+            int id = JSONUtil.getInt(object, "address_id");
+            String name = JSONUtil.getText(object, "name");
+            String position = JSONUtil.getText(object, "position");
+            String address = JSONUtil.getText(object, "address");
+            String longitude = JSONUtil.getText(object, "longitude");
+            String latitude = JSONUtil.getText(object, "latitude");
+            bindBill.setId(id);
+            bindBill.setName(name);
+            bindBill.setSubName(position);
+            bindBill.setAddress(address);
+            bindBill.setLongitude(longitude);
+            bindBill.setLatitude(latitude);
+            mCusAddress.add(bindBill);
+        }
+        iCustomerDetails.setBottomDatas(mCusBusiness, mCusContacts, mCusReport, mCusAddress);
+    }
+
     private void handlerFormData(JSONObject datas) throws Exception {
         List<BillGroupModel> mBillGroupModels = new ArrayList<>();
         //配置主表

+ 86 - 11
app_modular/appworks/src/main/java/com/uas/appworks/presenter/CustomerManagePresenter.java

@@ -2,8 +2,16 @@ package com.uas.appworks.presenter;
 
 import android.content.Context;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.DateFormatUtil;
+import com.common.data.JSONUtil;
 import com.core.utils.CommonUtil;
+import com.modular.apputils.listener.OnSmartHttpListener;
 import com.modular.apputils.model.EasyBaseModel;
+import com.modular.apputils.network.Parameter;
+import com.modular.apputils.network.Tags;
 import com.modular.apputils.presenter.BaseNetPresenter;
 import com.uas.appworks.presenter.imp.ICustomerManage;
 
@@ -11,12 +19,18 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class CustomerManagePresenter extends BaseNetPresenter {
+    private final int LOAD_SHOW_CUSTOMER_ITEMS = 111;
+    private final int LOAD_FORGET_CUSTOMER = 112;
+    private final int LOAD_CUSTOMER_CARE = 113;
+    private final int LOAD_VISIT_STATISTICS = 114;
 
     private final ICustomerManage iCustomerManage;
+    private final String ME_EMCODE;
 
     public CustomerManagePresenter(Context ct, ICustomerManage iCustomerManage) {
         super(ct);
         this.iCustomerManage = iCustomerManage;
+        this.ME_EMCODE = CommonUtil.getEmcode();
     }
 
     @Override
@@ -26,31 +40,92 @@ public class CustomerManagePresenter extends BaseNetPresenter {
 
 
     public void loadAllData() {
-        loadVisitStatistics();
-        loadCustomerCare();
+        loadShowCustomerItems(DateFormatUtil.long2Str(DateFormatUtil.YM));
         loadForgetCustomer();
-        loadShowCustomerItems();
+        loadCustomerCare();
+        loadVisitStatistics();
     }
 
+    //客户看板
+    public void loadShowCustomerItems(String date) {
+        iCustomerManage.showLoading();
+        requestCompanyHttp(new Parameter.Builder()
+                        .url("mobile/crm/customerBoardShow.action")
+                        .addParams("dataTime", date)
+                        .addParams("salesmanCode ", ME_EMCODE)
+                        .record(LOAD_SHOW_CUSTOMER_ITEMS)
+                , mOnSmartHttpListener);
 
-    public void loadVisitStatistics() {
-        //TODO 通过网络获取数据
-        iCustomerManage.setVisitAdapter(getVisitStatistics());
+        iCustomerManage.setShowCustomerAdapter(getShowCustomerItems());
+
+    }
 
+    //遗忘客户
+    public void loadForgetCustomer() {
+        iCustomerManage.showLoading();
+        requestCompanyHttp(new Parameter.Builder()
+                        .url("mobile/crm/customerForget.action")
+                        .addParams("pageIndex", 1)
+                        .addParams("pageSize", 3)
+                        .addParams("salesmanCode ", ME_EMCODE)
+                        .record(LOAD_FORGET_CUSTOMER)
+                , mOnSmartHttpListener);
+        iCustomerManage.setForgetCustomerAdapter(getForgetCustomer());
     }
 
+    //客户关怀
     public void loadCustomerCare() {
+        iCustomerManage.showLoading();
+        requestCompanyHttp(new Parameter.Builder()
+                        .url("mobile/crm/customerCare.action")
+                        .addParams("pageIndex", 1)
+                        .addParams("pageSize", 3)
+                        .addParams("salesmanCode ", ME_EMCODE)
+                        .record(LOAD_CUSTOMER_CARE)
+                , mOnSmartHttpListener);
         iCustomerManage.setCustomerCareAdapter(getCustomerCare());
 
     }
 
-    public void loadForgetCustomer() {
-        iCustomerManage.setForgetCustomerAdapter(getForgetCustomer());
+    public void loadVisitStatistics() {
+        iCustomerManage.showLoading();
+        requestCompanyHttp(new Parameter.Builder()
+                        .url("mobile/crm/customerStatistics.action")
+                        .addParams("dataTime", DateFormatUtil.long2Str(DateFormatUtil.YM))
+                        .addParams("salesmanCode ", ME_EMCODE)
+                        .record(LOAD_VISIT_STATISTICS)
+                , mOnSmartHttpListener);
+        //TODO 通过网络获取数据
+        iCustomerManage.setVisitAdapter(getVisitStatistics());
     }
-    public void loadShowCustomerItems() {
-        iCustomerManage.setShowCustomerAdapter(getShowCustomerItems());
 
-    }
+
+    private OnSmartHttpListener mOnSmartHttpListener = new OnSmartHttpListener() {
+        @Override
+        public void onSuccess(int what, String message, Tags tag) throws Exception {
+            JSONObject jsonObject = JSON.parseObject(message);
+            LogUtil.i("gong", what + "||onSuccess||" + message);
+            switch (what) {
+                case LOAD_VISIT_STATISTICS:
+//                    handlerFormData(JSONUtil.getJSONObject(jsonObject,"datas"));
+                    break;
+
+            }
+            iCustomerManage.dimssLoading();
+        }
+
+        @Override
+        public void onFailure(int what, String message, Tags tag) throws Exception {
+            LogUtil.i("gong", what + "||onFailure||" + message);
+            iCustomerManage.dimssLoading();
+            if (JSONUtil.validateJSONObject(message)) {
+                iCustomerManage.showToast(JSONUtil.getText(message, "exceptionInfo"));
+            } else {
+                iCustomerManage.showToast(message);
+            }
+
+        }
+    };
 
 
     private List<EasyBaseModel> getVisitStatistics() {

+ 4 - 0
app_modular/appworks/src/main/java/com/uas/appworks/presenter/imp/ICustomerDetails.java

@@ -2,9 +2,13 @@ package com.uas.appworks.presenter.imp;
 
 import com.core.base.HttpImp;
 import com.modular.apputils.model.BillGroupModel;
+import com.uas.appworks.model.CustomerBindBill;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public interface  ICustomerDetails extends HttpImp {
     void setAdapter(List<BillGroupModel> groupModels);
+    void setBottomDatas(ArrayList<CustomerBindBill> mCusBusiness, ArrayList<CustomerBindBill> mCusContacts, ArrayList<CustomerBindBill> mCusReport
+            , ArrayList<CustomerBindBill> mCusAddress);
 }

+ 2 - 2
app_modular/appworks/src/main/res/layout/activity_customer_list_3_0.xml

@@ -22,7 +22,7 @@
             android:padding="@dimen/padding"
             android:text="客户列表"
             android:textColor="@color/color_public_customer_tab"
-            android:textSize="12sp" />
+            android:textSize="8sp" />
 
         <View
             android:layout_width="@dimen/line"
@@ -41,7 +41,7 @@
             android:padding="@dimen/padding"
             android:text="地图分布"
             android:textColor="@color/color_public_customer_tab"
-            android:textSize="12sp" />
+            android:textSize="8sp" />
 
     </com.modular.apputils.widget.DivideRadioGroup>
 

+ 4 - 2
app_modular/appworks/src/main/res/layout/activity_customer_manage.xml

@@ -27,6 +27,7 @@
             android:padding="@dimen/paddingMin">
 
             <TextView
+                android:id="@+id/showCustomerTag"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:drawableLeft="@drawable/icon_show_customer"
@@ -38,12 +39,13 @@
 
             <TextView
                 android:id="@+id/showCustomerTv"
-                android:layout_width="wrap_content"
+                android:layout_width="match_parent"
+                android:gravity="right"
                 android:layout_height="wrap_content"
                 android:layout_alignParentBottom="true"
                 android:layout_alignParentRight="true"
                 android:drawableRight="@drawable/oa_next"
-                android:text="2018年8月"
+                android:text="2018-08"
                 android:textColor="#FF666666"
                 android:textSize="10sp" />
         </RelativeLayout>

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

@@ -20,6 +20,7 @@
         android:layout_height="0dp"
         android:layout_marginTop="@dimen/padding"
         android:background="@color/white"
+        android:paddingBottom="40dp"
         app:layout_constraintTop_toBottomOf="@id/mTabLayout" />
 
 

+ 10 - 0
app_modular/appworks/src/main/res/layout/fragment_customer_details_bottomlist.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <com.module.recyclerlibrary.ui.refresh.EmptyRecyclerView
+        android:id="@+id/mEmptyRecyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+</FrameLayout>

+ 11 - 0
app_modular/appworks/src/main/res/layout/fragment_test.xml

@@ -0,0 +1,11 @@
+<?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="match_parent">
+<TextView
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:textSize="20sp"
+    android:text="test"
+    android:id="@+id/text"/>
+</android.support.constraint.ConstraintLayout>

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

@@ -2,7 +2,7 @@
 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="wrap_content">
 
     <Button
         android:id="@+id/createBtn"

+ 26 - 0
app_modular/appworks/src/main/res/layout/item_customer_detail_bottom_address.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/white"
+    android:padding="@dimen/padding">
+
+    <TextView
+        android:id="@+id/nameTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="工厂地址"
+        android:textColor="#FF333333"
+        android:textSize="15sp" />
+
+    <TextView
+        android:id="@+id/addressTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/paddingMin"
+        android:text="广东省深圳市南山区科技园科技南五楼英唐大厦"
+        android:textColor="#FF666666"
+        android:textSize="12sp"
+        app:layout_constraintTop_toBottomOf="@id/nameTv" />
+</android.support.constraint.ConstraintLayout>

+ 45 - 0
app_modular/appworks/src/main/res/layout/item_customer_detail_bottom_business.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/white"
+    android:padding="@dimen/padding">
+
+    <TextView
+        android:id="@+id/nameTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="英唐收购计划"
+        android:textColor="#FF333333"
+        android:textSize="16sp" />
+
+    <TextView
+        android:id="@+id/stageTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/paddingMin"
+        android:text="商机预演"
+        android:textColor="#FF666666"
+        android:textSize="12sp"
+        app:layout_constraintTop_toBottomOf="@id/nameTv" />
+
+    <TextView
+        android:id="@+id/statusTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="进行中"
+        android:textColor="#FFC11807"
+        android:textSize="12sp"
+        app:layout_constraintRight_toRightOf="parent" />
+
+    <TextView
+        android:id="@+id/dateTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="2018-8-28"
+        android:textColor="#FF666666"
+        android:textSize="12sp"
+        app:layout_constraintRight_toRightOf="@id/statusTv"
+        app:layout_constraintTop_toTopOf="@id/stageTv" />
+</android.support.constraint.ConstraintLayout>

+ 44 - 0
app_modular/appworks/src/main/res/layout/item_customer_detail_bottom_conteact.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/white"
+    android:padding="@dimen/padding">
+
+    <TextView
+        android:id="@+id/nameTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="张三"
+        android:textColor="#FF333333"
+        android:textSize="15sp" />
+
+    <TextView
+        android:id="@+id/subNameTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/paddingMax"
+        android:text="经理"
+        android:textColor="#FF333333"
+        android:textSize="12sp"
+        app:layout_constraintBottom_toBottomOf="@id/nameTv"
+        app:layout_constraintLeft_toRightOf="@id/nameTv" />
+
+    <TextView
+        android:id="@+id/phoneTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="13719384789"
+        android:textColor="#FF333333"
+        android:textSize="15sp"
+        app:layout_constraintTop_toBottomOf="@id/nameTv" />
+
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:src="@drawable/oa_next"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+</android.support.constraint.ConstraintLayout>

+ 56 - 0
app_modular/appworks/src/main/res/layout/item_customer_detail_bottom_visitrecord.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/white"
+    android:padding="@dimen/padding">
+
+    <TextView
+        android:id="@+id/dateTag"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="计划拜访日期:"
+        android:textColor="#FF333333"
+        android:textSize="15sp" />
+
+    <TextView
+        android:id="@+id/dateTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="2018-09-23"
+        android:textColor="#FF666666"
+        android:textSize="15sp"
+        app:layout_constraintLeft_toRightOf="@id/dateTag" />
+
+    <TextView
+        android:id="@+id/contactTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/paddingMin"
+        android:text="客户联系人:张三"
+        android:textColor="#FF666666"
+        android:textSize="12sp"
+        app:layout_constraintTop_toBottomOf="@id/dateTag" />
+
+    <TextView
+        android:id="@+id/doManTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/paddingMin"
+        android:text="拜访人:李四"
+        android:textColor="#FF666666"
+        android:textSize="12sp"
+        app:layout_constraintTop_toBottomOf="@id/contactTv" />
+
+    <TextView
+        android:id="@+id/statusTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="已完成"
+        android:textColor="#FF2FCB7A"
+        android:textSize="12sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+</android.support.constraint.ConstraintLayout>

+ 0 - 2
app_modular/appworks/src/main/res/layout/item_customer_details_3_0.xml

@@ -21,8 +21,6 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@color/white"
-        android:maxHeight="180dp"
-        android:minHeight="50dp"
         android:padding="@dimen/padding">
 
         <TextView