Explorar el Código

Merge remote-tracking branch 'origin/developer' into developer

Bitliker hace 7 años
padre
commit
ac6a245cb6
Se han modificado 25 ficheros con 787 adiciones y 137 borrados
  1. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/ClientActivity.java
  2. 5 5
      WeiChat/version.properties
  3. 1 11
      app_core/common/src/main/assets/work_menu.json
  4. BIN
      app_core/common/src/main/res/drawable-hdpi/icon_crm_contact.png
  5. 21 15
      app_core/common/src/main/res/layout/item_approval_node.xml
  6. 1 0
      app_core/common/src/main/res/values-zh-rCN/strings.xml
  7. 1 0
      app_core/common/src/main/res/values/strings.xml
  8. 2 2
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/SettingActivity.java
  9. 54 56
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/RealTimeFormActivity.java
  10. 16 12
      app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java
  11. 4 10
      app_modular/apputils/src/main/java/com/modular/apputils/presenter/BillPresenter.java
  12. 2 0
      app_modular/appworks/src/main/AndroidManifest.xml
  13. 4 5
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/BusinessDetailActivty.java
  14. 9 1
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/BusinessRecordsAdapter.java
  15. 562 0
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/BillInputBindActivity.java
  16. 21 1
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactsDetialActivity.java
  17. 1 0
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactsListActivity.java
  18. 16 3
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/adapter/ContactLocalSortAdapter.java
  19. 21 8
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/adapter/ContactSortAdapter.java
  20. 4 2
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/ContactsListFragment.java
  21. 1 0
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/LocalContactsListFragment.java
  22. 18 4
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/ViewPagerLazyFragment.java
  23. 2 0
      app_modular/appworks/src/main/java/com/uas/appworks/fragment/BusinessRecordsFragment.java
  24. 18 0
      app_modular/appworks/src/main/java/com/uas/appworks/model/bean/BusinessFollowBean.java
  25. 2 1
      app_modular/appworks/src/main/res/layout/item_contacts_me.xml

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

@@ -489,7 +489,7 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
-//        getMenuInflater().inflate(R.menu.menu_crm, menu);
+        getMenuInflater().inflate(R.menu.menu_crm, menu);
         return true;
     }
 

+ 5 - 5
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Sat Oct 13 17:08:49 CST 2018
-debugName=901
-versionName=651
-debugCode=901
-versionCode=191
+#Thu Oct 18 17:22:43 CST 2018
+debugName=932
+versionName=645
+debugCode=932
+versionCode=195

+ 1 - 11
app_core/common/src/main/assets/work_menu.json

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

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


+ 21 - 15
app_core/common/src/main/res/layout/item_approval_node.xml

@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
+              xmlns:tools="http://schemas.android.com/tools"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:orientation="vertical">
 
     <View
         android:id="@+id/padding"
@@ -16,26 +17,28 @@
 
 
         <LinearLayout
-            android:paddingTop="@dimen/padding"
             android:id="@+id/timeLl"
             android:layout_width="47sp"
             android:layout_height="match_parent"
             android:layout_centerVertical="true"
-            android:gravity="center|right"
             android:layout_marginLeft="@dimen/padding"
-            android:orientation="vertical">
+            android:gravity="center|right"
+            android:orientation="vertical"
+            android:paddingTop="@dimen/padding">
 
             <TextView
                 android:id="@+id/dateTv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:textSize="14sp" />
+                android:textSize="14sp"
+                tools:text="10-17" />
 
             <TextView
                 android:id="@+id/timeTv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:textSize="14sp" />
+                android:textSize="14sp"
+                tools:text="10:57" />
         </LinearLayout>
 
         <ImageView
@@ -76,7 +79,8 @@
             android:layout_alignParentRight="true"
             android:layout_alignTop="@id/handIv"
             android:paddingRight="@dimen/padding"
-            android:textSize="12sp" />
+            android:textSize="12sp"
+            tools:text="等待审批" />
 
         <TextView
             android:id="@+id/keyTv"
@@ -84,11 +88,12 @@
             android:layout_width="wrap_content"
             android:layout_alignTop="@id/handIv"
             android:layout_toRightOf="@id/handIv"
-            android:maxWidth="180dp"
-            android:maxLines="3"
             android:ellipsize="end"
+            android:maxLines="3"
+            android:maxWidth="180dp"
             android:textColor="#999999"
-            android:textSize="14sp" />
+            android:textSize="14sp"
+            tools:text="饶猛" />
 
         <ImageView
             android:id="@+id/changeUser"
@@ -98,8 +103,8 @@
             android:layout_marginLeft="@dimen/padding"
             android:layout_toRightOf="@id/keyTv"
             android:padding="2dp"
-            android:visibility="gone"
-            android:src="@drawable/change_user" />
+            android:src="@drawable/change_user"
+            android:visibility="gone" />
 
         <TextView
             android:id="@+id/valuesTv"
@@ -108,6 +113,7 @@
             android:layout_toLeftOf="@id/statusTv"
             android:layout_toRightOf="@id/handIv"
             android:textColor="@color/done_approval"
-            android:textSize="@dimen/text_min" />
+            android:textSize="@dimen/text_min"
+            tools:text="审批意见" />
     </RelativeLayout>
 </LinearLayout>

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

@@ -1575,6 +1575,7 @@
 
     <string name="str_customer_relationship">客户关系管理</string>
     <string name="str_work_business_manage">商机管理</string>
+    <string name="str_work_customer_link">联系人</string>
     <string name="str_work_customer_manage">客户管理</string>
     <string name="str_work_customer_visit">客户拜访</string>
     <string name="str_work_sales_data">销售看板</string>

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

@@ -1916,6 +1916,7 @@
 
     <string name="str_customer_relationship">客户关系管理</string>
     <string name="str_work_business_manage">商机管理</string>
+    <string name="str_work_customer_link">联系人</string>
     <string name="str_work_customer_manage">客户管理</string>
     <string name="str_work_customer_visit">客户拜访</string>
     <string name="str_work_sales_data">销售看板</string>

+ 2 - 2
app_modular/appme/src/main/java/com/uas/appme/settings/activity/SettingActivity.java

@@ -425,8 +425,8 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
             intent.putExtra(AppConstant.EXTRA_TITLE, getString(R.string.use_help));
             startActivity(intent);
         } else if (v.getId() == R.id.about_us_rl) {
-            //startActivity(new Intent(mContext, AboutActivity.class));
-           startActivity(new Intent("com.modular.work.ContactsListActivity"));
+            startActivity(new Intent(mContext, AboutActivity.class));
+          // startActivity(new Intent("com.modular.work.ContactsListActivity"));
         } else if (v.getId() == R.id.share_rl) {
             share();
         } else if (v.getId() == R.id.rl_app_update) {

+ 54 - 56
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/RealTimeFormActivity.java

@@ -5,7 +5,6 @@ import android.os.Bundle;
 import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
 import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.TextView;
@@ -16,7 +15,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.common.data.JSONUtil;
 import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
-import com.core.app.Constants;
 import com.core.base.BaseActivity;
 import com.core.utils.CommonUtil;
 import com.core.utils.ToastUtil;
@@ -72,65 +70,65 @@ public class RealTimeFormActivity extends BaseActivity {
     }
 
     private void initData() {
-        final String realTimeCache = CommonUtil.getSharedPreferences(this, Constants.REAL_TIME_CACHE);
-        if (!TextUtils.isEmpty(realTimeCache) && JSONUtil.validate(realTimeCache)) {
-            JSONArray realTimeArray = JSON.parseArray(realTimeCache);
-            if (realTimeArray != null && realTimeArray.size() > 0) {
-                for (int i = 0; i < realTimeArray.size(); i++) {
-                    RealTimeFormMenuBean realTimeFormMenuBean = new RealTimeFormMenuBean();
-                    JSONObject realTimeObject = realTimeArray.getJSONObject(i);
-                    realTimeFormMenuBean.setId(JSONUtil.getInt(realTimeObject, "ID"));
-                    realTimeFormMenuBean.setTitle(JSONUtil.getText(realTimeObject, "TITLE"));
-                    realTimeFormMenuBean.setColor(mGridColors[(i) % mGridColors.length]);
-
-                    mRealTimeFormMenuBeen.add(realTimeFormMenuBean);
-                }
-            }
-
-            mRealTimeFormMenuAdapter.notifyDataSetChanged();
-        } else {
-            progressDialog.show();
-            HttpClient mHttpClient = new HttpClient.Builder(CommonUtil.getAppBaseUrl(RealTimeFormActivity.this)).build();
-            mHttpClient.Api().send(new HttpClient.Builder()
-                    .url("mobile/getRealTimeSubs.action")
-                    .add("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"))
-                    .header("Cookie", CommonUtil.getErpCookie(ct))
-                    .method(Method.GET)
-                    .build(), new ResultSubscriber<Object>(new Result2Listener<Object>() {
-                @Override
-                public void onResponse(Object o) {
-                    progressDialog.dismiss();
-                    String result = o.toString();
-                    JSONObject object = JSON.parseObject(result);
+//        final String realTimeCache = CommonUtil.getSharedPreferences(this, Constants.REAL_TIME_CACHE);
+//        if (!TextUtils.isEmpty(realTimeCache) && JSONUtil.validate(realTimeCache)) {
+//            JSONArray realTimeArray = JSON.parseArray(realTimeCache);
+//            if (realTimeArray != null && realTimeArray.size() > 0) {
+//                for (int i = 0; i < realTimeArray.size(); i++) {
+//                    RealTimeFormMenuBean realTimeFormMenuBean = new RealTimeFormMenuBean();
+//                    JSONObject realTimeObject = realTimeArray.getJSONObject(i);
+//                    realTimeFormMenuBean.setId(JSONUtil.getInt(realTimeObject, "ID"));
+//                    realTimeFormMenuBean.setTitle(JSONUtil.getText(realTimeObject, "TITLE"));
+//                    realTimeFormMenuBean.setColor(mGridColors[(i) % mGridColors.length]);
+//
+//                    mRealTimeFormMenuBeen.add(realTimeFormMenuBean);
+//                }
+//            }
+//
+//            mRealTimeFormMenuAdapter.notifyDataSetChanged();
+//        } else {
+        progressDialog.show();
+        HttpClient mHttpClient = new HttpClient.Builder(CommonUtil.getAppBaseUrl(RealTimeFormActivity.this)).build();
+        mHttpClient.Api().send(new HttpClient.Builder()
+                .url("mobile/getRealTimeSubs.action")
+                .add("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"))
+                .header("Cookie", CommonUtil.getErpCookie(ct))
+                .method(Method.GET)
+                .build(), new ResultSubscriber<Object>(new Result2Listener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                progressDialog.dismiss();
+                String result = o.toString();
+                JSONObject object = JSON.parseObject(result);
 
-                    JSONArray subsArray = object.getJSONArray("subs");
-                    if (subsArray != null && subsArray.size() > 0) {
-                        for (int i = 0; i < subsArray.size(); i++) {
-                            RealTimeFormMenuBean realTimeFormMenuBean = new RealTimeFormMenuBean();
-                            JSONObject realTimeObject = subsArray.getJSONObject(i);
-                            realTimeFormMenuBean.setId(JSONUtil.getInt(realTimeObject, "ID"));
-                            realTimeFormMenuBean.setTitle(JSONUtil.getText(realTimeObject, "TITLE"));
-                            realTimeFormMenuBean.setColor(mGridColors[(i) % mGridColors.length]);
+                JSONArray subsArray = object.getJSONArray("subs");
+                if (subsArray != null && subsArray.size() > 0) {
+                    for (int i = 0; i < subsArray.size(); i++) {
+                        RealTimeFormMenuBean realTimeFormMenuBean = new RealTimeFormMenuBean();
+                        JSONObject realTimeObject = subsArray.getJSONObject(i);
+                        realTimeFormMenuBean.setId(JSONUtil.getInt(realTimeObject, "ID"));
+                        realTimeFormMenuBean.setTitle(JSONUtil.getText(realTimeObject, "TITLE"));
+                        realTimeFormMenuBean.setColor(mGridColors[(i) % mGridColors.length]);
 
-                            mRealTimeFormMenuBeen.add(realTimeFormMenuBean);
-                        }
-                        mRealTimeFormMenuAdapter.notifyDataSetChanged();
-                    } else {
-                        ToastUtil.showToast(RealTimeFormActivity.this, "看板数据为空");
-                        mEmptyLayout.setVisibility(View.VISIBLE);
-                        mEmptyTextView.setText("看板数据为空");
+                        mRealTimeFormMenuBeen.add(realTimeFormMenuBean);
                     }
-                }
-
-                @Override
-                public void onFailure(Object t) {
-                    progressDialog.dismiss();
-                    ToastUtil.showToast(RealTimeFormActivity.this, "看板数据获取失败");
+                    mRealTimeFormMenuAdapter.notifyDataSetChanged();
+                } else {
+                    ToastUtil.showToast(RealTimeFormActivity.this, "看板数据为空");
                     mEmptyLayout.setVisibility(View.VISIBLE);
-                    mEmptyTextView.setText("看板数据获取失败");
+                    mEmptyTextView.setText("看板数据为空");
                 }
-            }));
-        }
+            }
+
+            @Override
+            public void onFailure(Object t) {
+                progressDialog.dismiss();
+                ToastUtil.showToast(RealTimeFormActivity.this, "看板数据获取失败");
+                mEmptyLayout.setVisibility(View.VISIBLE);
+                mEmptyTextView.setText("看板数据获取失败");
+            }
+        }));
+//        }
     }
 
     private void initView() {

+ 16 - 12
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java

@@ -876,19 +876,21 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     approval.setgCaller(gCaller);
                     approval.setCoreKey(coreKey);
                 }
-                if (!StringUtil.isEmpty(renderer) && renderer.contains("formula:")) try {
-                    renderer = renderer.substring("formula:".length(), renderer.length());
-                    renderer = getOperator(renderer, data);
-                    if (renderer.contains("字段需要设置为app显示")) {
-                        newValues = renderer;
-                    } else {
-                        double val = MathUtil.eval(renderer);
-                        if (val != Double.NEGATIVE_INFINITY && val != Double.POSITIVE_INFINITY) {
-                            newValues = getDecimalFormat(val);
+                if (!StringUtil.isEmpty(renderer) && renderer.contains("formula:")) {
+                    try {
+                        renderer = renderer.substring("formula:".length(), renderer.length());
+                        renderer = getOperator(renderer, data);
+                        if (renderer.contains("字段需要设置为app显示")) {
+                            newValues = renderer;
+                        } else {
+                            double val = MathUtil.eval(renderer);
+                            if (val != Double.NEGATIVE_INFINITY && val != Double.POSITIVE_INFINITY) {
+                                newValues = getDecimalFormat(val);
+                            }
                         }
-                    }
 
-                } catch (Exception e) {
+                    } catch (Exception e) {
+                    }
                 }
             }
 
@@ -993,7 +995,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 approval.setNeerInput(false);
             }
             approval.data2Values();
-            if ((!approval.isNeerInput() && StringUtil.isEmpty(approval.getValues())) || !showAble || approval.getValues().equals("null") || !showAble || approval.getValues().equals("(null)")) {
+            if ((!approval.isNeerInput() && StringUtil.isEmpty(approval.getValues())) || !showAble
+                    || approval.getValues().equals("null") || !showAble
+                    || approval.getValues().equals("(null)")) {
                 continue;//如果不是要输入的对象,同时显示值为空,需要隐藏去
             }
             //合并字段

+ 4 - 10
app_modular/apputils/src/main/java/com/modular/apputils/presenter/BillPresenter.java

@@ -3,8 +3,6 @@ package com.modular.apputils.presenter;
 import android.content.Context;
 import android.content.Intent;
 import android.text.TextUtils;
-import android.util.Log;
-import android.util.SparseArray;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -14,12 +12,8 @@ import com.common.data.DateFormatUtil;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
-import com.common.data.TextUtil;
-import com.common.ui.ImageUtil;
 import com.core.app.Constants;
-import com.core.app.MyApplication;
 import com.core.model.SelectBean;
-import com.core.net.http.ViewUtil;
 import com.core.utils.CommonUtil;
 import com.core.widget.view.Activity.SelectActivity;
 import com.lidroid.xutils.HttpUtils;
@@ -28,17 +22,13 @@ import com.lidroid.xutils.http.RequestParams;
 import com.lidroid.xutils.http.ResponseInfo;
 import com.lidroid.xutils.http.callback.RequestCallBack;
 import com.lidroid.xutils.http.client.HttpRequest;
-import com.me.network.app.http.HttpClient;
 import com.me.network.app.http.Method;
-import com.me.network.app.http.rx.Result2Listener;
-import com.me.network.app.http.rx.ResultSubscriber;
 import com.modular.apputils.R;
 import com.modular.apputils.listener.OnSmartHttpListener;
 import com.modular.apputils.model.BillGroupModel;
 import com.modular.apputils.network.Parameter;
 import com.modular.apputils.network.Tags;
 import com.modular.apputils.presenter.imp.IBill;
-import com.modular.apputils.utils.TestDataUtils;
 
 import java.io.File;
 import java.io.Serializable;
@@ -84,6 +74,10 @@ public class BillPresenter extends BaseNetPresenter implements OnSmartHttpListen
     public int getFormId() {
         return mId;
     }
+    
+    public void setmId(int mId) {
+        this.mId = mId;
+    }
 
     public String getStatusField() {
         return statusField;

+ 2 - 0
app_modular/appworks/src/main/AndroidManifest.xml

@@ -583,6 +583,8 @@
         <activity android:name=".activity.businessManage.BusinessCompanyListActivity" />
         <activity android:name=".activity.businessManage.businessChangeStage.BusinessChangeStageActivity" />
         <activity android:name=".activity.businessManage.BusinessBillInputActivity" />
+        
+        <activity android:name=".crm3_0.activity.BillInputBindActivity"/>
     </application>
 
 </manifest>

+ 4 - 5
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/BusinessDetailActivty.java

@@ -43,7 +43,6 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.uas.appworks.CRM.erp.model.Business;
 import com.uas.appworks.R;
-import com.uas.appworks.activity.businessManage.businessDetailActivity.BusinessDetailNewActivity;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -130,14 +129,14 @@ public class BusinessDetailActivty extends BaseActivity {
         mlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                /*final BussinessDetailAdapter.OldViewHolder holder = (BussinessDetailAdapter.OldViewHolder) view.getTag();
+                final BussinessDetailAdapter.OldViewHolder holder = (BussinessDetailAdapter.OldViewHolder) view.getTag();
                 startActivity(new Intent(BusinessDetailActivty.this, BusinessDetailInfoActivity.class)
                         .putExtra("type", holder.type)
                         .putExtra("formCondition", formCondition + "=" + holder.bc_id)
                         .putExtra("gridCondition", gridCondition + "=" + holder.bc_id)
                         .putExtra("id", holder.bc_id)
-                );*/
-                try {
+                );
+                /*try {
                     int itemAtPosition = (int) parent.getItemIdAtPosition(position);
                     Business business = mData.get(itemAtPosition);
                     startActivity(new Intent(mContext, BusinessDetailNewActivity.class)
@@ -148,7 +147,7 @@ public class BusinessDetailActivty extends BaseActivity {
                             .putExtra(Constants.FLAG.COMMON_WHICH_PAGE, "businessCompany"));
                 } catch (Exception e) {
 
-                }
+                }*/
             }
         });
 

+ 9 - 1
app_modular/appworks/src/main/java/com/uas/appworks/adapter/BusinessRecordsAdapter.java

@@ -1,6 +1,7 @@
 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;
@@ -26,6 +27,13 @@ public class BusinessRecordsAdapter extends BaseQuickAdapter<BusinessFollowBean,
         helper.setText(R.id.business_records_dotime_tv, item.getDotime());
         helper.setText(R.id.business_records_stage_tv, item.getGeneration()
                 + "->" + item.getNextgeneration() + "(" + item.getType() + ")");
-        helper.setText(R.id.business_records_remark_tv, item.getRemark());
+        String remarkbf = item.getRemarkbf();
+        String remarkdt = item.getRemarkdt();
+        String remark = "";
+        if (!TextUtils.isEmpty(remarkbf)) {
+            remark = remarkbf + ";";
+        }
+        remark += remarkdt;
+        helper.setText(R.id.business_records_remark_tv, remark);
     }
 }

+ 562 - 0
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/BillInputBindActivity.java

@@ -0,0 +1,562 @@
+package com.uas.appworks.crm3_0.activity;
+
+import android.app.Activity;
+import android.content.DialogInterface;
+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;
+import android.text.TextUtils;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.LinearLayout;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.CalendarUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.common.data.StringUtil;
+import com.common.file.FileUtils;
+import com.common.ui.CameraUtil;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
+import com.core.base.OABaseActivity;
+import com.core.model.SelectBean;
+import com.core.utils.StatusBarUtil;
+import com.core.utils.ToastUtil;
+import com.core.utils.time.wheel.DateTimePicker;
+import com.core.widget.view.Activity.ImgFileListActivity;
+import com.core.widget.view.Activity.SelectActivity;
+import com.modular.apputils.R;
+import com.modular.apputils.activity.BillDetailsActivity;
+import com.modular.apputils.activity.BillListActivity;
+import com.modular.apputils.activity.SelectNetAcitivty;
+import com.modular.apputils.adapter.BillAdapter;
+import com.modular.apputils.model.BillGroupModel;
+import com.modular.apputils.model.BillListConfig;
+import com.modular.apputils.presenter.BillPresenter;
+import com.modular.apputils.presenter.imp.IBill;
+
+import java.io.File;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+
+/**
+ * 动态表单单据录入界面,后续会尽量关闭修改,添加拓展功能
+ */
+public class BillInputBindActivity extends OABaseActivity implements IBill, BillAdapter.OnAdapterListener {
+    public final int REQUESTCODE_C = 0x11;
+    public final int REQUESTCODE_DB_FIND = 0x12;
+    public final int REQUESTCODE_ENCLOSURE = 0x13;
+    public final int REQUESTCODE_C_NET = 0x14;
+    public final int REQUESTCODE_ENCLOSURE_LOW = 0x15;
+    public final int REQUEST_CODE_CAPTURE_PHOTO = 0x16;
+
+    public RecyclerView mRecyclerView;
+    public BillPresenter mBillPresenter;
+    public BillAdapter mBillAdapter;
+    private String mListCondition;
+    public int selectPosition = -1;//当前选择调转界面的index,本来不想添加全局变量的,没有办法
+    private HashMap<String, String> dbFindCondition;
+    private String phone;
+    private String name;
+
+    //TODO 重写方法实现自定义的 BillPresenter,必须继承于BillPresenter
+    public BillPresenter newBillPresenter() {
+        return new BillPresenter(this, this);
+    }
+
+    //TODO 重写方法实现自定义的 BillAdapter,必须继承于BillAdapter
+    public BillAdapter newBillAdapter(List<BillGroupModel> groupModels) {
+        return new BillAdapter(ct, groupModels, this);
+    }
+
+    //TODO  重写方法实现自定义的 提交完成后处理
+    public void commitSuccess(final int keyValue, String code) {
+        ToastMessage("提交成功!");
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                if (mContext == null) return;
+                //使用新界面
+                startActivity(new Intent(ct, BillDetailsActivity.class)
+                        .putExtra(Constants.Intents.CALLER, mBillPresenter.getFormCaller())
+                        .putExtra(Constants.Intents.TITLE, getToolBarTitle())
+                        .putExtra(Constants.Intents.ID, keyValue));
+//                startActivity(new Intent("com.modular.form.erp.activity.CommonDocDetailsActivity")
+//                        .putExtra("caller", mBillPresenter.getFormCaller())
+//                        .putExtra("keyValue", keyValue)
+//                        .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);
+    }
+
+    //TODO  重写方法实现自定义的初始化
+    public void init() {
+        Intent intent = getIntent();
+        if (intent != null) {
+            Serializable mSerializable = intent.getSerializableExtra(Constants.Intents.DB_FIND_CONDITION);
+            if (mSerializable != null && mSerializable instanceof HashMap) {
+                dbFindCondition = (HashMap<String, String>) mSerializable;
+            }
+        }
+        mBillPresenter = newBillPresenter();
+        mBillPresenter.start(getIntent());
+        if (getIntent() != null) {
+            mListCondition = getIntent().getStringExtra(Constants.Intents.LIST_CONDITION);
+            phone=getIntent().getStringExtra("phone");
+            name=getIntent().getStringExtra("name");
+        }
+        if (TextUtils.isEmpty(mListCondition)) {
+            mListCondition = "1=1";
+        }
+
+      
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_bill_input);
+        initView();
+        init();
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.menu_bill_input, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.saveAndSubmit) {
+            mBillPresenter.saveAndSubmit(mBillAdapter.getBillGroupModels());
+        } else if (item.getItemId() == R.id.list) {
+            toDataFormList();
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    public void toDataFormList() {
+        ArrayList<BillListConfig> billListConfigs = new ArrayList<>();
+        BillListConfig mBillListConfig = new BillListConfig();
+        mBillListConfig.setTitle("");
+        mBillListConfig.setCaller(mBillPresenter.getFormCaller());
+        mBillListConfig.setCondition(mListCondition);
+        billListConfigs.add(mBillListConfig);
+        startActivity(new Intent(ct, BillListActivity.class)
+                .putExtra(Constants.Intents.CONFIG, billListConfigs)
+                .putExtra(Constants.Intents.TITLE, getToolBarTitle())
+                .putExtra(Constants.Intents.DETAILS_CLASS, BillDetailsActivity.class)
+        );
+//        startActivity(new Intent("com.modular.work.OA.erp.activity.form.FormListSelectActivity")
+//                .putExtra("caller", mBillPresenter.getFormCaller())
+//                .putExtra("statusKey", mBillPresenter.getStatusField())//传状态key
+//                .putExtra("title", getToolBarTitle()));
+
+    }
+
+
+    private void initView() {
+        mRecyclerView = findViewById(R.id.mRecyclerView);
+        mRecyclerView.setLayoutManager(new LinearLayoutManager(ct));
+        mRecyclerView.addItemDecoration(new DividerItemDecoration(ct, LinearLayout.VERTICAL));
+        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
+            final View mRootLL = findViewById(R.id.mRootLL);
+            mRootLL.post(new Runnable() {
+                @Override
+                public void run() {
+                    int top = StatusBarUtil.getStatusBarHeight(ct);
+                    mRootLL.setTranslationY(-top);
+                }
+            });
+        }
+    }
+
+    @Override
+    public void setAdapter(List<BillGroupModel> groupModels) {
+        if (mBillAdapter == null) {
+            mBillAdapter = newBillAdapter(groupModels);
+            mRecyclerView.setAdapter(mBillAdapter);
+        } else {
+            mBillAdapter.setBillGroupModels(groupModels);
+            mBillAdapter.notifyDataSetChanged();
+        }
+
+        updateItemsValue(name,phone);
+    }
+
+
+    @Override
+    public void updateFileOk() {
+        dimssLoading();
+        mBillPresenter.saveAndSubmit(mBillAdapter.getBillGroupModels());
+    }
+
+    @Override
+    public void toSelect(int position, BillGroupModel.BillModel model) {
+        if (TextUtils.isEmpty(model.getType())) return;
+        if (!ListUtils.isEmpty(model.getLocalDatas())) {
+            //本地数据不为空的情况下
+            selectByLocal(position, model);
+        } else {
+            //本地数据为空,获取网络数据
+            switch (model.getType()) {
+                case "C"://单项选择
+                    getComboValue(position, model);
+                    break;
+                case "D"://日期选择
+                case "T"://时间选择
+                    showDateDialog(!model.getCaption().contains("生日"), position);
+                    break;
+                case "SF":
+                case "DF":
+                    //DBFind 选择
+                    findBydbFind(model);
+                    break;
+                case "MF":
+                    break;
+
+            }
+        }
+    }
+
+    @Override
+    public void toEnclosureSelect(int position, BillGroupModel.BillModel model) {
+        selectPosition = position;
+        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
+            toSelectEnclosure();
+        } else {
+            showSelectPictureDialog(model);
+        }
+    }
+
+
+    private void toSelectEnclosure() {
+        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+        intent.setType("*/*");//无类型限制
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        startActivityForResult(intent, REQUESTCODE_ENCLOSURE);
+    }
+
+    private void toSelectEnclosure(BillGroupModel.BillModel model) {
+        Intent intent = new Intent(ct, ImgFileListActivity.class);
+        intent.putExtra("MAX_SIZE", 9);
+        intent.putExtra("CURRENT_SIZE", ListUtils.getSize(model.getLocalDatas()));
+        startActivityForResult(intent, REQUESTCODE_ENCLOSURE_LOW);
+    }
+
+    private void showSelectPictureDialog(final BillGroupModel.BillModel model) {
+        String[] items = new String[]{getString(R.string.c_take_picture), getString(R.string.c_photo_album)};
+        android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this).setSingleChoiceItems(items, 0,
+                new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        if (which == 0) {
+                            try {
+                                takePhoto();
+                            } catch (Exception e) {
+                                String message = e.getMessage();
+                                if (!StringUtil.isEmpty(message) && message.contains("Permission")) {
+                                    ToastUtil.showToast(ct, R.string.not_system_permission);
+                                }
+                            }
+                        } else {
+                            toSelectEnclosure(model);
+                        }
+                        dialog.dismiss();
+                    }
+                });
+        builder.show();
+    }
+
+    private Uri mNewPhotoUri;
+
+    private void takePhoto() throws Exception {
+        Uri mNewPhotoUri = CameraUtil.getOutputMediaFileUri(mContext, MyApplication.getInstance().mLoginUser.getUserId(), CameraUtil.MEDIA_TYPE_IMAGE);
+        if (mNewPhotoUri != null) {
+            CameraUtil.captureImage((Activity) ct,
+                    mNewPhotoUri,
+                    REQUEST_CODE_CAPTURE_PHOTO);
+        } else {
+            ToastUtil.showToast(this, "uri is null");
+        }
+    }
+
+    public void getComboValue(int position, BillGroupModel.BillModel model) {
+        HashMap param = new HashMap<>();
+        param.put("caller", mBillPresenter.getFormCaller());
+        param.put("field", model.getField());
+        Bundle bundle = new Bundle();
+        bundle.putSerializable("param", param);
+        Intent intent = new Intent(ct, SelectActivity.class);
+        intent.putExtra("type", 1);
+        intent.putExtra("reid", R.style.OAThemeMeet);
+        intent.putExtras(bundle);
+        intent.putExtra("key", "combdatas");
+        intent.putExtra("showKey", "DISPLAY");
+        intent.putExtra("action", "mobile/common/getComboValue.action");
+        intent.putExtra("title", model.getCaption());
+        intent.putExtra("id", position);//需要把zum
+        startActivityForResult(intent, REQUESTCODE_C_NET);
+    }
+
+    /**
+     * 选择日期
+     */
+    public void showDateDialog(final boolean needTime, final int position) {
+        DateTimePicker picker = new DateTimePicker(this, needTime ? DateTimePicker.HOUR_OF_DAY : DateTimePicker.YEAR_MONTH_DAY);
+        picker.setRange(CalendarUtil.getYear() - 100, CalendarUtil.getYear() + 20);
+        if (needTime) {
+            picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay(), CalendarUtil.getHour(), CalendarUtil.getMinute());
+        } else {
+            picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
+        }
+        picker.setOnDateTimePickListener(new DateTimePicker.OnYearMonthDayTimePickListener() {
+            @Override
+            public void onDateTimePicked(String year, String month, String day, String hour, String minute) {
+                String date = year + "-" + month + "-" + day;
+                String dateTime = date + " " + hour + ":" + minute + ":00";
+                mBillAdapter.updateBillModelValues(position, needTime ? dateTime : date, dateTime);
+            }
+        });
+
+        picker.show();
+    }
+
+    /**
+     * dbfind 查找
+     *
+     * @param model
+     */
+    public void findBydbFind(BillGroupModel.BillModel model) {
+        String gridCaller = "";
+        String fieldKey = model.getField();
+        BillGroupModel mGroupModel = mBillAdapter.getBillGroupModel(model.getGroupIndex());
+        boolean isForm = mGroupModel == null || mGroupModel.isForm();
+        if (!isForm && !StringUtil.isEmpty(model.getFindFunctionName())) {
+            String[] mFindFunctionNames = model.getFindFunctionName().split("\\|");
+            if (mFindFunctionNames != null && mFindFunctionNames.length > 1) {
+                gridCaller = mFindFunctionNames[0];
+//                fieldKey = mFindFunctionNames[1];
+            }
+        }
+        String mCondition = "";
+        if (dbFindCondition != null && dbFindCondition.containsKey(fieldKey)) {
+            mCondition = dbFindCondition.get(fieldKey);
+        }
+        startActivityForResult(new Intent(ct, SelectNetAcitivty.class)
+                        .putExtra("fieldKey", fieldKey)
+                        .putExtra("caller", mBillPresenter.getFormCaller())
+                        .putExtra("gCaller", gridCaller)
+                        .putExtra("mCondition", mCondition)
+                        .putExtra("isDevice", false)
+                        .putExtra("isForm", isForm)
+                        .putExtra("groupId", model.getGroupIndex())
+                , REQUESTCODE_DB_FIND);
+    }
+
+    /**
+     * 选择本地数据选项
+     *
+     * @param position 索引
+     * @param model    点击对象
+     */
+    public void selectByLocal(int position, BillGroupModel.BillModel model) {
+        ArrayList<SelectBean> beans = new ArrayList<>();
+        SelectBean bean;
+        for (BillGroupModel.LocalData localData : model.getLocalDatas()) {
+            bean = new SelectBean();
+            bean.setJson(localData.display);
+            bean.setShowName(localData.value);
+            bean.setName(localData.value);
+            bean.setIndex(position);
+            beans.add(bean);
+        }
+        Intent intent = new Intent(ct, SelectActivity.class);
+        intent.putExtra("type", 2);
+        intent.putParcelableArrayListExtra("data", beans);
+        intent.putExtra("title", model.getCaption());
+        startActivityForResult(intent, REQUESTCODE_C);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (data == null) return;
+        switch (requestCode) {
+            case REQUESTCODE_C_NET:
+                SelectBean mSelectBeanC = data.getParcelableExtra("data");
+                int position = data.getIntExtra("id", -1);
+                if (mSelectBeanC != null && position >= 0) {
+                    String display = StringUtil.isEmpty(mSelectBeanC.getName()) ? "" : mSelectBeanC.getName();
+                    String value = StringUtil.isEmpty(mSelectBeanC.getName()) ? "" : mSelectBeanC.getName();
+                    mBillAdapter.updateBillModelValues(position, value, display);
+                }
+                break;
+            case REQUESTCODE_C:
+                mSelectBeanC = data.getParcelableExtra("data");
+                if (mSelectBeanC != null) {
+                    position = mSelectBeanC.getIndex();
+                    String value = StringUtil.isEmpty(mSelectBeanC.getShowName()) ? "" : mSelectBeanC.getShowName();
+                    String display = StringUtil.isEmpty(mSelectBeanC.getJson()) ? "" : mSelectBeanC.getJson();
+                    mBillAdapter.updateBillModelValues(position, value, display);
+                }
+                break;
+            case REQUESTCODE_DB_FIND:
+                String json = data.getStringExtra("data");
+                int groupIndex = data.getIntExtra("groupId", 0);
+                handlerSelectDbFind(JSON.parseObject(json), groupIndex);
+                break;
+            case 0x22:
+                SelectBean d = data.getParcelableExtra("data");
+                if (d == null) return;
+                String name = StringUtil.isEmpty(d.getName()) ? "" : d.getName();
+                String jsonObject = StringUtil.isEmpty(d.getJson()) ? "" : d.getJson();
+                LogUtil.i("gong", "json=" + jsonObject);
+                mBillPresenter.getEmnameByReturn(name, jsonObject);
+                break;
+            case REQUESTCODE_ENCLOSURE:
+                if (resultCode == Activity.RESULT_OK) {
+                    String path;
+                    Uri uri = data.getData();
+                    if ("file".equalsIgnoreCase(uri.getScheme())) {//使用第三方应用打开
+                        path = uri.getPath();
+                    } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {//4.4以后
+                        path = FileUtils.getPath(this, uri);
+                    } else {//4.4以下下系统调用方法
+                        path = FileUtils.getRealPathFromURI(this, uri);
+                    }
+                    LogUtil.i("gong", "uri=" + uri.toString());
+                    File file = null;
+                    if (!TextUtils.isEmpty(path)) {
+                        file = new File(path);
+                    }
+                    if (file != null && file.exists() && file.isFile()) {
+                        String value = file.getName();
+                        String display = path;
+                        mBillAdapter.addBillModelData(selectPosition, value, display);
+                        selectPosition = -1;
+                    }
+
+                }
+            case REQUEST_CODE_CAPTURE_PHOTO:
+                if (resultCode == Activity.RESULT_OK) {
+                    if (mNewPhotoUri != null) {
+                        String value = mNewPhotoUri.getPath();
+                        String display = value;
+                        mBillAdapter.addBillModelData(selectPosition, value, display);
+                        selectPosition = -1;
+                    } else {
+                        ToastUtil.showToast(this, R.string.c_take_picture_failed);
+                    }
+                }
+                break;
+            case REQUESTCODE_ENCLOSURE_LOW:
+                List<String> filePaths = data.getStringArrayListExtra("files");
+                if (!ListUtils.isEmpty(filePaths)) {
+                    File file = null;
+                    List<BillGroupModel.LocalData> localDatas = new ArrayList<>();
+                    for (String filePath : filePaths) {
+                        if (!TextUtils.isEmpty(filePath)) {
+                            file = new File(filePath);
+                        }
+                        if (file != null && file.exists() && file.isFile()) {
+                            BillGroupModel.LocalData localData = new BillGroupModel.LocalData();
+                            localData.value = file.getName();
+                            localData.display = filePath;
+                            localDatas.add(localData);
+                        }
+                    }
+                    mBillAdapter.addBillModelData(selectPosition, localDatas);
+                    selectPosition = -1;
+                }
+                break;
+        }
+    }
+
+    protected void handlerSelectDbFind(JSONObject object, int groupId) {
+        try {
+            mBillPresenter.setmId(Integer.valueOf(object.getString("cu_id")));
+            LogUtil.d("Arison", "groupId:" + groupId + " object:" + object.toJSONString());
+            BillGroupModel mBillGroupModel = mBillAdapter.getBillGroupModel(groupId);
+            if (mBillGroupModel != null) {
+                if (!ListUtils.isEmpty(mBillGroupModel.getShowBillFields())) {
+                    for (BillGroupModel.BillModel e : mBillGroupModel.getShowBillFields()) {
+                        if (object.containsKey(e.getField())) {
+                            e.setValue(JSONUtil.getText(object, e.getField()));
+                        }
+                    }
+                }
+                if (!ListUtils.isEmpty(mBillGroupModel.getHideBillFields())) {
+                    for (BillGroupModel.BillModel e : mBillGroupModel.getHideBillFields()) {
+                        if (object.containsKey(e.getField())) {
+                            e.setValue(JSONUtil.getText(object, e.getField()));
+                        }
+                    }
+                }
+            }
+            mBillAdapter.notifyDataSetChanged();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
+//    关联客户
+    protected void updateItemsValue(String name,String phone) {
+        try {
+            List<BillGroupModel>  groupModels=  mBillAdapter.getBillGroupModels();
+            if (groupModels.size()>2){
+                for (int i=2;i<groupModels.size();i++){
+                    groupModels.remove(i);
+                }
+            }
+
+            BillGroupModel mBillGroupModel=groupModels.get(1);//第一个明细
+            LogUtil.d("arison","BillGroupModel:"+JSON.toJSONString(mBillGroupModel));
+            if (!ListUtils.isEmpty(mBillGroupModel.getShowBillFields())) {
+                for (BillGroupModel.BillModel e : mBillGroupModel.getShowBillFields()) {
+                    if ("ct_name".equals(e.getField())) {
+                        e.setValue(name);
+                    }
+                    if ("ct_mobile".equals(e.getField())) {
+                        e.setValue(phone);
+                    }
+                }
+    
+                for (BillGroupModel.BillModel e : mBillGroupModel.getHideBillFields()) {
+                    if ("ct_id".equals(e.getField())) {
+                        e.setValue("0");
+                    }
+                    //ct_cuid
+    //                if ("ct_mobile".equals(e.getField())) {
+    //                    e.setValue("13266699268");
+    //                }
+                }
+            }
+
+            mBillAdapter.notifyDataSetChanged();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 21 - 1
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactsDetialActivity.java

@@ -223,7 +223,27 @@ public class ContactsDetialActivity extends BaseActivity implements OnItemsButto
       findViewById(R.id.tv_timeout).setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
-              
+              if (!ListUtils.isEmpty(pData)){
+                  String phones = "";
+                  for (int i = 0; i < pData.size(); i++) {
+                      if (!StringUtil.isEmpty(pData.get(i).getValue())) {
+                          if (i == pData.size() - 1) {
+                              phones = phones + pData.get(i).getValue();
+                          } else {
+                              phones = phones + pData.get(i).getValue() + "/";
+                          }
+                      }else{
+                          ToastMessage("请输入手机号!");
+                          return;
+                      }
+                  }
+              }
+              startActivity(new Intent(mContext,BillInputBindActivity.class)
+                      .putExtra(com.core.app.Constants.Intents.CALLER, "Contact")
+                      .putExtra(com.core.app.Constants.Intents.TITLE, "客户联系人")
+                      .putExtra("phone",pData.get(0).getValue())
+                      .putExtra("name",getEtName().getText().toString())
+                      .putExtra(com.core.app.Constants.Intents.ID, 0));
           }
       });
         

+ 1 - 0
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactsListActivity.java

@@ -44,6 +44,7 @@ public class ContactsListActivity extends BaseActivity implements  ContactsLocal
      private ContactsListFragment fragmentMeList,fragmentCusList;
      private LocalContactsListFragment localContactsListFragment;
      private MenuVoiceSearchView mVoiceSearchView;
+    
      
      
 

+ 16 - 3
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/adapter/ContactLocalSortAdapter.java

@@ -5,13 +5,15 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.SectionIndexer;
 import android.widget.TextView;
 
 import com.common.data.StringUtil;
 import com.common.system.SystemUtil;
-import com.core.utils.NotifyUtils;
+import com.core.app.MyApplication;
+import com.core.utils.ToastUtil;
 import com.core.utils.sortlist.BaseSortModel;
 import com.core.utils.sortlist.PingYinUtil;
 import com.uas.appcontact.model.contacts.ContactsModel;
@@ -34,6 +36,15 @@ public class ContactLocalSortAdapter extends BaseAdapter implements SectionIndex
     private boolean isRefeshed;
     private Map<Integer, String> isLog;
 
+    private FrameLayout frameLayout;
+
+    public FrameLayout getFrameLayout() {
+        return frameLayout;
+    }
+
+    public void setFrameLayout(FrameLayout frameLayout) {
+        this.frameLayout = frameLayout;
+    }
 
     public ContactLocalSortAdapter(Context context, List<BaseSortModel<ContactsModel>> sortFriends) {
         mContext = context;
@@ -112,10 +123,12 @@ public class ContactLocalSortAdapter extends BaseAdapter implements SectionIndex
                     if (matcher.matches()) {
                         SystemUtil.phoneAction(mContext, model.getPhone());
                     } else {
-                        NotifyUtils.ToastMessage(mContext,mContext.getString(R.string.not_format_phone));
+                      //  NotifyUtils.ToastMessage(mContext,mContext.getString(R.string.not_format_phone));
+                        ToastUtil.showToast(MyApplication.getInstance(),mContext.getString(R.string.not_format_phone));
                     }
                 } else {
-                    NotifyUtils.ToastMessage(mContext,mContext.getString(R.string.not_phone));
+                   // NotifyUtils.ToastMessage(mContext,mContext.getString(R.string.not_phone));
+                    ToastUtil.showToast(MyApplication.getInstance(),mContext.getString(R.string.not_format_phone));
                 }
             }
         });

+ 21 - 8
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/adapter/ContactSortAdapter.java

@@ -1,18 +1,20 @@
 package com.uas.appworks.crm3_0.adapter;
 
 import android.app.Activity;
-import android.content.Context;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.SectionIndexer;
 import android.widget.TextView;
 
 import com.common.data.StringUtil;
 import com.common.system.SystemUtil;
-import com.core.utils.NotifyUtils;
+import com.core.app.MyApplication;
+import com.core.base.BaseActivity;
+import com.core.utils.ToastUtil;
 import com.core.utils.sortlist.BaseSortModel;
 import com.uas.appworks.R;
 import com.uas.appworks.crm3_0.model.ContactsBean;
@@ -29,13 +31,22 @@ import se.emilsjolander.stickylistheaders.StickyListHeadersAdapter;
 
 public class ContactSortAdapter extends BaseAdapter implements SectionIndexer, StickyListHeadersAdapter {
 
-    private Context mContext;
+    private BaseActivity mContext;
     private List<BaseSortModel<ContactsBean>> mSortFriends;
     private boolean isRefeshed;
     private Map<Integer, String> isLog;
+    
+    private FrameLayout frameLayout;
+
+    public FrameLayout getFrameLayout() {
+        return frameLayout;
+    }
 
+    public void setFrameLayout(FrameLayout frameLayout) {
+        this.frameLayout = frameLayout;
+    }
 
-    public ContactSortAdapter(Context context, List<BaseSortModel<ContactsBean>> sortFriends) {
+    public ContactSortAdapter(BaseActivity context, List<BaseSortModel<ContactsBean>> sortFriends) {
         mContext = context;
         mSortFriends = (sortFriends == null ? new ArrayList<BaseSortModel<ContactsBean>>() : sortFriends);
         isLog = new HashMap<>();
@@ -122,10 +133,12 @@ public class ContactSortAdapter extends BaseAdapter implements SectionIndexer, S
                             }
 
                         } else {
-                            NotifyUtils.ToastMessage(mContext,mContext.getString(com.uas.appworks.R.string.not_format_phone));
+                           // NotifyUtils.ToastMessage(mContext,mContext.getString(com.uas.appworks.R.string.not_format_phone));
+                            ToastUtil.showToast(MyApplication.getInstance(),mContext.getString(com.uas.appworks.R.string.not_format_phone));
                         }
                     } else {
-                        NotifyUtils.ToastMessage(mContext,mContext.getString(com.uas.appworks.R.string.not_phone));
+                        ToastUtil.showToast(MyApplication.getInstance(),mContext.getString(com.uas.appworks.R.string.not_phone));
+                       // NotifyUtils.ToastMessage(mContext,mContext.getString(com.uas.appworks.R.string.not_phone));
                     }
                 }
             });
@@ -141,10 +154,10 @@ public class ContactSortAdapter extends BaseAdapter implements SectionIndexer, S
                                 SystemUtil.phoneAction(mContext, phone);
                             }
                         } else {
-                            NotifyUtils.ToastMessage(mContext,mContext.getString(com.uas.appworks.R.string.not_format_phone));
+                            ToastUtil.showToast(MyApplication.getInstance(),MyApplication.getInstance().getString(R.string.not_format_phone));
                         }
                     } else {
-                        NotifyUtils.ToastMessage(mContext,mContext.getString(com.uas.appworks.R.string.not_phone));
+                        ToastUtil.showToast(MyApplication.getInstance(),MyApplication.getInstance().getString(R.string.not_phone));
                     }
                 }
             });

+ 4 - 2
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/ContactsListFragment.java

@@ -64,7 +64,7 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
     private int tabItem;
     List<ContactsBean> datas;
     ItemContactsMeAdapter adapter;
-
+    
 
     StickyListHeadersListView refreshListView;
     private BaseComparator comparator;
@@ -151,6 +151,7 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
         });
         
         mAdapter = new ContactSortAdapter(ct, allDatas);
+        mAdapter.setFrameLayout(getContentView());
         refreshListView.setAdapter(mAdapter);
         
         dialogTV = (TextView) findViewById(R.id.dialogTV);
@@ -192,6 +193,7 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
         switch (tabItem){
             case 1:
                 //我的联系人-不分页
+                progressDialog.show();
                 HttpClient httpClient = new HttpClient.Builder("https://mobile.ubtob.com:8443/linkman/")
                         .isDebug(true)
                         .build();
@@ -210,7 +212,7 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
                             
                             allDatas=getAllDatas(datas);
                             mAdapter.setData(allDatas);
-                            
+                            progressDialog.dismiss();
 //                            adapter=new ItemContactsMeAdapter(getActivity(),datas);
 //                            mListView.setAdapter(adapter);
 //                            LogUtil.d(TAG,JSON.toJSONString(datas));

+ 1 - 0
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/LocalContactsListFragment.java

@@ -82,6 +82,7 @@ public class LocalContactsListFragment extends ViewPagerLazyFragment implements
     private void initView() {
         refreshListView =  findViewById(R.id.mListView);
         mAdapter = new ContactLocalSortAdapter(ct, allDatas);
+        mAdapter.setFrameLayout(getContentView());
         refreshListView.setAdapter(mAdapter);
 
         dialogTV = findViewById(R.id.dialogTV);

+ 18 - 4
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/ViewPagerLazyFragment.java

@@ -6,13 +6,14 @@ import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
-import android.support.v7.app.AppCompatActivity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.FrameLayout;
 
 import com.common.LogUtil;
 import com.common.data.StringUtil;
+import com.core.base.BaseActivity;
 import com.core.utils.CommonUtil;
 import com.core.widget.CustomProgressDialog;
 import com.me.network.app.http.HttpClient;
@@ -21,6 +22,7 @@ import com.me.network.app.http.rx.ResultSubscriber;
 import com.modular.apputils.listener.OnSmartHttpListener;
 import com.modular.apputils.network.Parameter;
 import com.modular.apputils.network.Tags;
+import com.uas.appworks.R;
 
 /**
  * 时间:2017/10/30 17:18
@@ -29,7 +31,8 @@ import com.modular.apputils.network.Tags;
 public abstract class ViewPagerLazyFragment extends Fragment {
     private static final String STATE_SAVE_IS_HIDDEN = "STATE_SAVE_IS_HIDDEN";
     protected View rootView;
-    protected AppCompatActivity ct;
+    protected BaseActivity ct;
+    private FrameLayout contentFl;
 
     private boolean isVisible = false;//当前Fragment是否可见
     private boolean isInitView = false;//是否与View建立起映射关系
@@ -49,7 +52,7 @@ public abstract class ViewPagerLazyFragment extends Fragment {
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        ct = (AppCompatActivity) context;
+        ct = (BaseActivity) context;
     }
 
     public View getRootView() {
@@ -92,7 +95,13 @@ public abstract class ViewPagerLazyFragment extends Fragment {
                 parent.removeView(rootView);
             }
         } else {
-            rootView = inflater.inflate(inflater(), container, false);
+            rootView = inflater.inflate(R.layout.base_bar_layout, container, false);
+            contentFl = rootView.findViewById(R.id.contentFl);
+            int layoutId = inflater();
+            if (layoutId > 0) {
+                View contentView = inflater.inflate(layoutId, container, false);
+                contentFl.addView(contentView);
+            }
         }
         isInitView = true;
         progressDialog = CustomProgressDialog.createDialog(getContext());
@@ -120,6 +129,11 @@ public abstract class ViewPagerLazyFragment extends Fragment {
         }
     }
 
+    public FrameLayout getContentView() {
+        return contentFl;
+    }
+
+
     @Override
     public void setUserVisibleHint(boolean isVisibleToUser) {
         if (isVisibleToUser) {

+ 2 - 0
app_modular/appworks/src/main/java/com/uas/appworks/fragment/BusinessRecordsFragment.java

@@ -129,6 +129,8 @@ public class BusinessRecordsFragment extends BaseMVPFragment<SimplePresenter> im
                     businessFollowBean.setNextgeneration(JSONUtil.getText(listData, "nextgeneration"));
                     businessFollowBean.setType(JSONUtil.getText(listData, "type"));
                     businessFollowBean.setDotime(JSONUtil.getText(listData, "dotime"));
+                    businessFollowBean.setRemarkbf(JSONUtil.getText(listData, "remarkbf"));
+                    businessFollowBean.setRemarkdt(JSONUtil.getText(listData, "remarkdt"));
 
                     mBusinessFollowBeans.add(businessFollowBean);
                 }

+ 18 - 0
app_modular/appworks/src/main/java/com/uas/appworks/model/bean/BusinessFollowBean.java

@@ -22,6 +22,8 @@ public class BusinessFollowBean {
     private String remark;
     private String type;
     private String dotime;
+    private String remarkbf;
+    private String remarkdt;
 
     public String getGeneration() {
         return generation;
@@ -70,4 +72,20 @@ public class BusinessFollowBean {
     public void setDotime(String dotime) {
         this.dotime = dotime;
     }
+
+    public String getRemarkbf() {
+        return remarkbf;
+    }
+
+    public void setRemarkbf(String remarkbf) {
+        this.remarkbf = remarkbf;
+    }
+
+    public String getRemarkdt() {
+        return remarkdt;
+    }
+
+    public void setRemarkdt(String remarkdt) {
+        this.remarkdt = remarkdt;
+    }
 }

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

@@ -34,7 +34,7 @@
         android:layout_height="match_parent"
         android:gravity="center_vertical"
         android:layout_toLeftOf="@+id/iv_icon"
-        android:layout_marginRight="@dimen/dp_4"
+        android:layout_marginRight="@dimen/dp_10"
         android:text=""
         android:layout_centerInParent="true"/>
     <ImageView
@@ -43,6 +43,7 @@
         android:layout_height="match_parent"
         android:foregroundGravity="center_vertical"
         android:layout_alignParentRight="true"
+        android:layout_marginRight="15dp"
         android:layout_centerInParent="true"
         android:src="@drawable/phone"/>
 </RelativeLayout>