Explorar o código

Merge branch 'developer' of https://gitlab.com/Arisono/SkWeiChat-Baidu into feature_raomeng

RaoMeng %!s(int64=7) %!d(string=hai) anos
pai
achega
dbe00ab520
Modificáronse 26 ficheiros con 573 adicións e 60 borrados
  1. 9 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  2. 3 3
      WeiChat/version.properties
  3. 1 0
      app_core/common/src/main/java/com/core/app/Constants.java
  4. 3 0
      app_core/common/src/main/java/com/core/net/http/ViewUtil.java
  5. 37 0
      app_core/common/src/main/res/layout/fragment_me.xml
  6. 1 0
      app_modular/appme/src/main/AndroidManifest.xml
  7. 75 0
      app_modular/appme/src/main/java/com/uas/appme/other/activity/WorkCardActivity.java
  8. 25 0
      app_modular/appme/src/main/res/layout/activity_work_card.xml
  9. 13 9
      app_modular/apputils/src/main/java/com/modular/apputils/activity/BillInputActivity.java
  10. 23 2
      app_modular/apputils/src/main/java/com/modular/apputils/adapter/BillDetailsAdapter.java
  11. 9 1
      app_modular/apputils/src/main/java/com/modular/apputils/model/BillGroupModel.java
  12. 101 0
      app_modular/apputils/src/main/java/com/modular/apputils/model/BillJump.java
  13. 14 3
      app_modular/apputils/src/main/java/com/modular/apputils/presenter/BillDetailsPresenter.java
  14. 0 2
      app_modular/apputils/src/main/res/layout/activity_bill_list.xml
  15. 140 1
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactSearchActivity.java
  16. 8 5
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactsAddActivity.java
  17. 6 10
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactsListActivity.java
  18. 25 4
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerContactActivity.java
  19. 9 5
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/adapter/ContactsLocalAdapter.java
  20. 14 4
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/ContactsListFragment.java
  21. 12 0
      app_modular/appworks/src/main/res/drawable/shape_round_item_left.xml
  22. 11 4
      app_modular/appworks/src/main/res/layout/activity_contact_search.xml
  23. 26 0
      app_modular/appworks/src/main/res/layout/activity_contacts_add.xml
  24. 1 2
      app_modular/appworks/src/main/res/layout/fragment_customer_3_0.xml
  25. 7 4
      app_modular/appworks/src/main/res/layout/fragment_item_contacts_local.xml
  26. 0 1
      app_modular/appworks/src/main/res/layout/item_contacts_me.xml

+ 9 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -66,6 +66,7 @@ import com.me.network.app.http.rx.ResultSubscriber;
 import com.modular.apputils.listener.OnPlayListener;
 import com.modular.apputils.utils.playsdk.AliPlay;
 import com.scwang.smartrefresh.layout.util.DensityUtil;
+import com.uas.appme.other.activity.WorkCardActivity;
 import com.uas.appme.other.model.Master;
 import com.uas.appme.settings.activity.BaseInfoActivity;
 import com.uas.appme.settings.activity.CheckWagesActivity;
@@ -313,6 +314,11 @@ public class MeFragment extends EasyFragment implements View.OnClickListener, On
             }
         });
         findViewById(R.id.my_data_rl).setOnClickListener(this);
+        View workCardRl = findViewById(R.id.workCardRl);
+        if (BaseConfig.isDebug()) {
+            workCardRl.setVisibility(View.VISIBLE);
+            workCardRl.setOnClickListener(this);
+        }
         findViewById(R.id.my_friend_rl).setOnClickListener(this);
         findViewById(R.id.my_space_rl).setOnClickListener(this);
         findViewById(R.id.local_video_rl).setOnClickListener(this);
@@ -496,6 +502,9 @@ public class MeFragment extends EasyFragment implements View.OnClickListener, On
     public void onClick(View v) {
         int id = v.getId();
         switch (id) {
+            case R.id.workCardRl:
+                startActivity(new Intent(ct, WorkCardActivity.class));
+                break;
             case R.id.rl_company_change://公司切换
                 if (!NetUtils.isNetWorkConnected(ct)) {
                     showToact(R.string.networks_out);

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Sun Sep 30 16:18:01 CST 2018
-debugName=804
+#Thu Oct 11 08:52:06 CST 2018
+debugName=850
 versionName=647
-debugCode=899
+debugCode=850
 versionCode=187

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

@@ -578,6 +578,7 @@ public class Constants {
         String FIELD_CONFIG = "fieldConfig";//搜索配置
         String CONFIG = "config";//配置
         String DETAILS_CLASS = "mDetailsClass";//进入详情界面
+        String BILL_JUMPS = "mBillJumps";//详情界面中对于个别字段的处理
         String INPUT_CLASS = "mInputClass";//进入编辑界面
         String LIST_CONDITION = "mListCondition";//列表Condition
         String DB_FIND_CONDITION = "dbfindCondition";//录入界面,dbfind字段添加的前提Condition

+ 3 - 0
app_core/common/src/main/java/com/core/net/http/ViewUtil.java

@@ -993,6 +993,9 @@ public class ViewUtil {
                     LogUtil.prinlnLongMsg("result", "http 发送请求-----------------------------------------");
                     LogUtil.prinlnLongMsg("result", "url:" + url);
                     LogUtil.prinlnLongMsg("result", "parms:" + params.toString());
+                    if (headers!=null) {
+                        LogUtil.prinlnLongMsg("result", "headers:" + headers.toString());
+                    }
                     if (result != null) {
                         Log.i("result", "result:" + result.getStatusCode());
                         // Log.i("result", "statusCode:" +result.getResponseText());

+ 37 - 0
app_core/common/src/main/res/layout/fragment_me.xml

@@ -626,7 +626,44 @@
                 android:background="@drawable/oa_next"
                 android:contentDescription="@string/app_name" />
         </RelativeLayout>
+        <RelativeLayout
+            android:id="@+id/workCardRl"
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            android:background="@drawable/selector_item_white_pass"
+            android:paddingLeft="@dimen/padding"
+            android:visibility="gone"
+            android:paddingTop="@dimen/padding">
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/line"
+                android:layout_alignParentBottom="true"
+                android:background="@color/item_line" />
+
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:drawableLeft="@drawable/icon_uu_setting"
+                android:drawablePadding="10dp"
+                android:gravity="center"
+                android:text="电子工牌"
+                android:textColor="#333333"
+                android:textSize="15sp" />
 
+            <ImageView
+                android:layout_width="@dimen/next_width"
+                android:layout_height="@dimen/next_height"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginRight="8dp"
+                android:background="@drawable/oa_next"
+                android:contentDescription="@string/app_name" />
+
+
+        </RelativeLayout>
     </LinearLayout>
 
 </ScrollView>

+ 1 - 0
app_modular/appme/src/main/AndroidManifest.xml

@@ -121,6 +121,7 @@
         <!-- <activity android:name=".settings.activity.PayTestActivity"></activity> -->
 
         <activity android:name=".settings.activity.SystemAdminActivity" />
+        <activity android:name=".other.activity.WorkCardActivity" />
         <activity android:name=".settings.activity.FontSizeActivity"
 
             android:launchMode="singleTask">

+ 75 - 0
app_modular/appme/src/main/java/com/uas/appme/other/activity/WorkCardActivity.java

@@ -0,0 +1,75 @@
+package com.uas.appme.other.activity;
+
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.widget.ImageView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baidu.aip.excep.utils.Base64Util;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.core.base.BaseActivity;
+import com.core.utils.CommonUtil;
+import com.modular.apputils.listener.OnSmartHttpListener;
+import com.modular.apputils.network.Parameter;
+import com.modular.apputils.network.Tags;
+import com.modular.apputils.utils.UUHttpHelper;
+import com.uas.appme.R;
+
+public class WorkCardActivity extends BaseActivity {
+    private ImageView logoIv;
+    private ImageView headIv;
+
+    private UUHttpHelper mUUHttpHelper;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_work_card);
+        initView();
+    }
+
+    private void initView() {
+        mUUHttpHelper = new UUHttpHelper(CommonUtil.getAppBaseUrl(ct));
+        logoIv = (ImageView) findViewById(R.id.logoIv);
+        headIv = (ImageView) findViewById(R.id.headIv);
+        loadData();
+    }
+
+    private void loadData() {
+        mUUHttpHelper.requestCompanyHttp(new Parameter.Builder()
+                .url("mobile/oa/getLabourCardInfor.action")
+                .addParams("emcode",CommonUtil.getEmcode())
+                , new OnSmartHttpListener() {
+                    @Override
+                    public void onSuccess(int what, String message, Tags tag) throws Exception {
+                        JSONObject object= JSON.parseObject(message);
+                        JSONArray mLabourCardInfors= JSONUtil.getJSONArray(object,"LabourCardInfor");
+                        if (!ListUtils.isEmpty(mLabourCardInfors)) {
+                            handlerData(mLabourCardInfors.getJSONObject(0));
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(int what, String message, Tags tag) throws Exception {
+
+                    }
+                });
+    }
+
+    private void handlerData( JSONObject mLabourCardInfor ){
+        String em_photourl=JSONUtil.getText(mLabourCardInfor,"EM_PHOTOURL");
+        String em_name=JSONUtil.getText(mLabourCardInfor,"EM_NAME");
+        String em_code=JSONUtil.getText(mLabourCardInfor,"EM_CODE");
+        String em_sex=JSONUtil.getText(mLabourCardInfor,"EM_SEX");
+        String em_mobile=JSONUtil.getText(mLabourCardInfor,"EM_MOBILE");
+        String em_position=JSONUtil.getText(mLabourCardInfor,"EM_POSITION");
+        String en_logo=JSONUtil.getText(mLabourCardInfor,"EN_LOGO");
+        Bitmap logoMap = Base64Util.base64ToBitmap(en_logo);
+        if (logoMap!=null){
+            logoIv.setImageBitmap(logoMap);
+        }
+    }
+}

+ 25 - 0
app_modular/appme/src/main/res/layout/activity_work_card.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+
+    <ImageView
+        android:id="@+id/logoIv"
+        android:layout_width="match_parent"
+        android:layout_height="50dp" />
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:text="深圳优软科技有限公司"
+        android:textSize="20sp" />
+
+    <ImageView
+        android:id="@+id/headIv"
+        android:layout_width="80dp"
+        android:layout_gravity="center"
+        android:layout_height="80dp" />
+</LinearLayout>

+ 13 - 9
app_modular/apputils/src/main/java/com/modular/apputils/activity/BillInputActivity.java

@@ -142,6 +142,18 @@ public class BillInputActivity extends OABaseActivity implements IBill, BillAdap
         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();
@@ -161,15 +173,7 @@ public class BillInputActivity extends OABaseActivity implements IBill, BillAdap
 
     }
 
-    @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);
-    }
+
 
     private void initView() {
         mRecyclerView = findViewById(R.id.mRecyclerView);

+ 23 - 2
app_modular/apputils/src/main/java/com/modular/apputils/adapter/BillDetailsAdapter.java

@@ -3,6 +3,7 @@ package com.modular.apputils.adapter;
 import android.Manifest;
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.Bitmap;
 import android.graphics.Paint;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
@@ -19,6 +20,7 @@ import com.common.LogUtil;
 import com.common.data.ListUtils;
 import com.common.system.SystemUtil;
 import com.core.app.AppConstant;
+import com.core.app.Constants;
 import com.core.base.BaseActivity;
 import com.core.utils.CommonUtil;
 import com.core.utils.ToastUtil;
@@ -27,12 +29,15 @@ import com.core.widget.view.MyGridView;
 import com.me.imageloader.ImageLoaderUtil;
 import com.modular.apputils.R;
 import com.modular.apputils.model.BillGroupModel;
+import com.modular.apputils.model.BillJump;
 import com.modular.apputils.network.FileDownloader;
 import com.modular.apputils.utils.OpenFilesUtils;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public class BillDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
     private Context ct;
@@ -167,7 +172,11 @@ public class BillDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
     private void bindViewHolder(ViewHolder mViewHolder, BillGroupModel.BillModel field, int position) {
         mViewHolder.captionTv.setText(field.getCaption());
         mViewHolder.valuesTv.setText(field.getValue());
-        if (field.getCaption().contains("手机") || field.getCaption().contains("电话")) {
+        BillJump mBillJump = field.getBillJump();
+        if (mBillJump != null) {
+            mViewHolder.valuesTv.setTag(R.id.tag_key, mBillJump);
+            mViewHolder.valuesTv.setOnClickListener(mOnClickListener);
+        } else if (field.getCaption().contains("手机") || field.getCaption().contains("电话")) {
 //            mViewHolder.valuesTv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
             mViewHolder.valuesTv.setTag(R.id.tag_key, 1);
             mViewHolder.valuesTv.setTag(field.getValue());
@@ -175,8 +184,8 @@ public class BillDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
         } else {
 //            mViewHolder.valuesTv.getPaint().setFlags(Paint.DEV_KERN_TEXT_FLAG);
             mViewHolder.valuesTv.setOnClickListener(null);
-
         }
+
         if (field.getGroupIndex() != 0 && position >= 1 && field.getGroupIndex() > mShowBillModels.get(position - 1).getGroupIndex()) {
             mViewHolder.titleTv.setVisibility(View.VISIBLE);
             String mGroupName = null;
@@ -203,6 +212,18 @@ public class BillDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
                         }
                         break;
                 }
+            } else if (view.getTag(R.id.tag_key) != null && view.getTag(R.id.tag_key) instanceof BillJump) {
+                BillJump mBillJump = (BillJump) view.getTag(R.id.tag_key);
+                Intent intent = new Intent(ct, mBillJump.getJumpClass())
+                        .putExtra(Constants.Intents.ID, mBillJump.getId())
+                        .putExtra(Constants.Intents.TITLE, mBillJump.getTitle());
+                HashMap<String, String> mParam = mBillJump.getParam();
+                if (mParam != null) {
+                    for (Map.Entry<String, String> mEntry : mParam.entrySet()) {
+                        intent.putExtra(mEntry.getKey(), mEntry.getValue());
+                    }
+                }
+                ct.startActivity(intent);
             } else if (R.id.content == view.getId() &&
                     view.getTag(R.id.tag_key) != null && view.getTag(R.id.tag_key) instanceof String
                     && view.getTag(R.id.tag_key2) != null && view.getTag(R.id.tag_key2) instanceof String) {

+ 9 - 1
app_modular/apputils/src/main/java/com/modular/apputils/model/BillGroupModel.java

@@ -181,7 +181,7 @@ public class BillGroupModel {
         private String findFunctionName;//默认值
         private String allowBlank;//是否允许为空(注:当作为标题的时候T:表示可以删除 F:表示不可删除)
         private List<LocalData> localDatas;//获取到的本地选择数据
-
+        private BillJump mBillJump;//判断是否需要要跳转字段
         public BillModel() {
         }
 
@@ -201,8 +201,16 @@ public class BillGroupModel {
             this.defValue = e.defValue;//
             this.allowBlank = e.allowBlank;
             this.findFunctionName = e.findFunctionName;
+            this.mBillJump = e.mBillJump;
+        }
+
+        public BillJump getBillJump() {
+            return mBillJump;
         }
 
+        public void setBillJump(BillJump mBillJump) {
+            this.mBillJump = mBillJump;
+        }
 
         public int getGroupIndex() {
             return groupIndex;

+ 101 - 0
app_modular/apputils/src/main/java/com/modular/apputils/model/BillJump.java

@@ -0,0 +1,101 @@
+package com.modular.apputils.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.HashMap;
+
+//跳转对象
+public class BillJump implements Parcelable {
+    private int id;
+    private Class mJumpClass;//跳转的界面对象
+    private String mTitle;//跳转的标题
+    private String mField;//点击的字段
+    private String mCaption;//点击的字段标题
+    private HashMap<String,String> mParam;
+
+
+    protected BillJump(Parcel in) {
+        id = in.readInt();
+        mTitle = in.readString();
+        mField = in.readString();
+        mCaption = in.readString();
+        mParam = (HashMap<String, String>) in.readSerializable();
+        mJumpClass = (Class) in.readSerializable();
+    }
+
+    public static final Creator<BillJump> CREATOR = new Creator<BillJump>() {
+        @Override
+        public BillJump createFromParcel(Parcel in) {
+            return new BillJump(in);
+        }
+
+        @Override
+        public BillJump[] newArray(int size) {
+            return new BillJump[size];
+        }
+    };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel parcel, int i) {
+        parcel.writeInt(id);
+        parcel.writeString(mTitle);
+        parcel.writeString(mField);
+        parcel.writeString(mCaption);
+        parcel.writeSerializable(mParam);
+        parcel.writeSerializable(mJumpClass);
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public Class getJumpClass() {
+        return mJumpClass;
+    }
+
+    public void setJumpClass(Class mJumpClass) {
+        this.mJumpClass = mJumpClass;
+    }
+
+    public String getTitle() {
+        return mTitle;
+    }
+
+    public void setTitle(String mTitle) {
+        this.mTitle = mTitle;
+    }
+
+    public String getField() {
+        return mField==null?"":mField;
+    }
+
+    public void setField(String mField) {
+        this.mField = mField;
+    }
+
+    public String getCaption() {
+        return mCaption==null?"":mCaption;
+    }
+
+    public void setCaption(String mCaption) {
+        this.mCaption = mCaption;
+    }
+
+    public HashMap<String, String> getParam() {
+        return mParam;
+    }
+
+    public void setParam(HashMap<String, String> mParam) {
+        this.mParam = mParam;
+    }
+}

+ 14 - 3
app_modular/apputils/src/main/java/com/modular/apputils/presenter/BillDetailsPresenter.java

@@ -21,6 +21,7 @@ import com.core.utils.CommonUtil;
 import com.modular.apputils.activity.BillInputActivity;
 import com.modular.apputils.listener.OnSmartHttpListener;
 import com.modular.apputils.model.BillGroupModel;
+import com.modular.apputils.model.BillJump;
 import com.modular.apputils.network.Parameter;
 import com.modular.apputils.network.Tags;
 import com.modular.apputils.presenter.imp.IBillDetails;
@@ -40,6 +41,7 @@ public class BillDetailsPresenter extends BaseNetPresenter {
     protected String mCaller;//当前单据的Caller
     protected int mId;//当前单据拥有的id,新增默认为0
     protected Class mInputClass;
+    protected List<BillJump> mBillJumps;
 
 
     public BillDetailsPresenter(Context ct, IBillDetails mIBillDetails) {
@@ -61,6 +63,7 @@ public class BillDetailsPresenter extends BaseNetPresenter {
             if (mInputSerializable != null && mInputSerializable instanceof Class) {
                 mInputClass = (Class) mInputSerializable;
             }
+            mBillJumps = intent.getParcelableArrayListExtra(Constants.Intents.BILL_JUMPS);
             if (mTitle != null) {
                 mIBillDetails.setTitle(mTitle);
             }
@@ -146,10 +149,10 @@ public class BillDetailsPresenter extends BaseNetPresenter {
             for (int i = 0; i < array.size(); i++) {
                 JSONObject o = array.getJSONObject(i);
                 if (o == null) continue;
-                BillGroupModel.LocalData mLocalData = new BillGroupModel.LocalData ();
+                BillGroupModel.LocalData mLocalData = new BillGroupModel.LocalData();
                 int id = JSONUtil.getInt(o, "fp_id");
-                mLocalData.value=JSONUtil.getText(o, "fp_name");
-                mLocalData.display=getImageUrl(id);
+                mLocalData.value = JSONUtil.getText(o, "fp_name");
+                mLocalData.display = getImageUrl(id);
                 mLocalDatas.add(mLocalData);
             }
         }
@@ -230,6 +233,14 @@ public class BillDetailsPresenter extends BaseNetPresenter {
             mBillModel.setField(field);
             mBillModel.setAllowBlank(allowBlank);
             mBillModel.setValue(JSONUtil.getText(object, field));
+            if (!ListUtils.isEmpty(mBillJumps)) {
+                for (BillJump mBillJump : mBillJumps) {
+                    if (mBillJump.getCaption().equals(caption) || mBillJump.getField().equals(field)) {
+                        mBillModel.setBillJump(mBillJump);
+                        break;
+                    }
+                }
+            }
             if (!ListUtils.isEmpty(combostore)) {
                 List<BillGroupModel.LocalData> localDatas = new ArrayList<>();
                 for (int j = 0; j < combostore.size(); j++) {

+ 0 - 2
app_modular/apputils/src/main/res/layout/activity_bill_list.xml

@@ -20,10 +20,8 @@
         android:id="@+id/mViewPager"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_marginTop="@dimen/padding"
         android:layout_weight="1"
         android:background="@color/white"
-        android:paddingBottom="40dp"
         app:layout_constraintTop_toBottomOf="@id/mTabLayout" />
 
 

+ 140 - 1
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactSearchActivity.java

@@ -1,15 +1,149 @@
 package com.uas.appworks.crm3_0.activity;
 
+import android.content.Intent;
 import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.common.LogUtil;
+import com.common.data.StringUtil;
+import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
+import com.core.utils.CommonUtil;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.apputils.widget.MenuVoiceSearchView;
+import com.uas.appcontact.model.contacts.Contacts;
+import com.uas.appcontact.model.contacts.ContactsModel;
+import com.uas.appcontact.utils.ContactsUtils;
 import com.uas.appworks.R;
+import com.uas.appworks.crm3_0.adapter.ContactsLocalAdapter;
+import com.uas.appworks.crm3_0.fragment.ContactsListFragment;
+import com.uas.appworks.crm3_0.model.ContactsBean;
 
-public class ContactSearchActivity extends BaseActivity {
+import java.util.ArrayList;
+import java.util.List;
 
+public class ContactSearchActivity extends BaseActivity implements ContactsLocalAdapter.ResultItemsInface {
+
+    private ListView lv_contact;
+    private ListView lv_local;
+    private MenuVoiceSearchView mVoiceSearchView;
+    private ContactsLocalAdapter adapter;
+    ContactsListFragment.ItemContactsMeAdapter iAdapter;
+    private List<ContactsModel> models = new ArrayList<>();
+    List<ContactsBean> datas=new ArrayList<>();
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        
+        iAdapter=new ContactsListFragment().new ItemContactsMeAdapter(ct,datas);
+        adapter=new ContactsLocalAdapter(mContext,models);
+        
+        lv_contact=findViewById(R.id.lv_contact);
+        lv_local=findViewById(R.id.lv_local);
+        
+        
+        lv_contact.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
+                final ContactsListFragment.ItemContactsMeAdapter.ViewHolder viewHolder= (ContactsListFragment.ItemContactsMeAdapter.ViewHolder) view.getTag();
+                startActivity(new Intent(mContext, ContactsAddActivity.class)
+                        .putExtra("model",viewHolder.bean));
+             
+            }
+        });
+        
+        
+        
+        mVoiceSearchView = findViewById(R.id.mVoiceSearchView);
+        findViewById(R.id.backImg).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                onBackPressed();
+            }
+        });
+        findViewById(R.id.addImg).setVisibility(View.GONE);
+      
+
+
+        mVoiceSearchView.getSearch_edit().addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+                
+            }
+
+            @Override
+            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable editable) {
+                if (!StringUtil.isEmpty(editable.toString())){
+                    //我的联系人
+                    HttpClient httpClient = new HttpClient.Builder("https://mobile.ubtob.com:8443/linkman/")
+                            .isDebug(true)
+                            .build();
+                    httpClient.Api().send(new HttpClient.Builder("mobile/contactList")
+                            .add("key",editable.toString())
+                            .add("imid", MyApplication.getInstance().getLoginUserId())
+                            .method(Method.GET)
+                            .build(),new ResultSubscriber<Object>(new ResultListener<Object>() {
+
+                        @Override
+                        public void onResponse(Object o) {
+                            try {
+                                datas.clear();
+//                                datas= JSON.parseObject(JSON.parseObject(o.toString()).getJSONArray("data").toJSONString()
+//                                        ,new TypeReference<List<ContactsBean>>(){});
+                                datas.addAll(JSON.parseObject(JSON.parseObject(o.toString()).getJSONArray("data").toJSONString()
+                                        ,new TypeReference<List<ContactsBean>>(){}));
+                                lv_contact.setAdapter(iAdapter);
+                                iAdapter.notifyDataSetChanged();
+                                LogUtil.d(TAG,JSON.toJSONString(datas));
+                            }catch (Exception e){
+
+                            }
+                        }
+                    }));
+                    
+                    //本地通讯录
+                    //主要权限问题
+                    models.clear();
+                    List<Contacts> contacts = ContactsUtils.getContacts1();
+                    LogUtil.d(TAG, JSON.toJSONString(contacts));
+                    if (contacts != null) {
+                        for (Contacts entity : contacts) {
+                            ContactsModel model = new ContactsModel();
+                            model.setImid("0");
+                            model.setName(StringUtil.isEmpty(entity.getName()) ? entity.getNickname() : entity.getName());
+                            model.setType(3);
+                            model.setEmail("");
+                            model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
+                            model.setPhone(entity.getPhone());
+                            model.setWhichsys(CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master"));
+                            model.setCompany("");
+                            if (model.getName().contains(editable.toString())||model.getPhone().equals(editable.toString())){
+                                models.add(model);
+                            }
+                        }
+                    }
+                    LogUtil.d(TAG,"models:"+ JSON.toJSONString( models));
+                    lv_local.setAdapter(adapter);
+                    adapter.notifyDataSetChanged();
+                    
+                    
+                }
+            }
+        });
     }
 
     @Override
@@ -21,4 +155,9 @@ public class ContactSearchActivity extends BaseActivity {
     public int getLayoutRes() {
         return R.layout.activity_contact_search;
     }
+
+    @Override
+    public void onResultForItems(View view, ContactsModel model, int position) {
+        
+    }
 }

+ 8 - 5
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactsAddActivity.java

@@ -36,6 +36,7 @@ import com.common.ui.ImageUtil;
 import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
 import com.core.utils.ToastUtil;
+import com.core.utils.helper.AvatarHelper;
 import com.core.widget.view.ListViewInScroller;
 import com.core.widget.view.SwitchView;
 import com.me.network.app.http.HttpClient;
@@ -210,7 +211,7 @@ public class ContactsAddActivity extends BaseActivity implements OnItemsButtonAd
         tvUpload.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                CardIOActivity.activityStart(ContactsAddActivity.this, 0xFF00C5DC, 70);
+                CardIOActivity.activityStart(ContactsAddActivity.this, 0xFF00C5DC, 100);
             }
         });
 
@@ -241,7 +242,8 @@ public class ContactsAddActivity extends BaseActivity implements OnItemsButtonAd
 //            getEtNotes().setKeyListener(null);
            // getEtNotes().setFocusable(false);
             getEtName().setText(model.getName());
-            
+
+            AvatarHelper.getInstance().display("https://mobile.ubtob.com:8443/linkman/"+model.getImageUrl(),iv_header,true);
             if ("1".equals(model.getSex())){
                 getEtSex().setText("女");
             }else{
@@ -553,7 +555,7 @@ public class ContactsAddActivity extends BaseActivity implements OnItemsButtonAd
             String jsonData = "{" +
                     "\"linkmanId\":" + model.getLinkmanId() + "," +
                     "\"imid\":" + MyApplication.getInstance().mLoginUser.getUserId() + "," +
-                    "\"companyName\":\"" + "深圳市优软科技有限公司" + "\"," +
+                    "\"companyName\":\"" + getEtCompany().getText().toString() + "\"," +
                     "\"name\":\"" + getEtName().getText().toString() + "\"" +
                     ",\"sex\":" + sexTag + "," +
                     "\"age\":" + getEtAge().getText().toString() + "," +
@@ -590,7 +592,7 @@ public class ContactsAddActivity extends BaseActivity implements OnItemsButtonAd
             }));
         }else{
             String jsonData = "{\"imid\":" + MyApplication.getInstance().mLoginUser.getUserId() + "," +
-                    "\"companyName\":\"" + "深圳市优软科技有限公司" + "\"," +
+                    "\"companyName\":\"" +getEtCompany().getText().toString()+ "\"," +
                     "\"name\":\"" + getEtName().getText().toString() + "\"" +
                     ",\"sex\":" + sexTag + "," +
                     "\"age\":" + getEtAge().getText().toString() + "," +
@@ -889,7 +891,8 @@ public class ContactsAddActivity extends BaseActivity implements OnItemsButtonAd
         }
     }
 
-
+    private EditText getEtCompany(){return (EditText)findViewById(R.id.et_company);} 
+    
     private EditText getEtName() {
         return (EditText) findViewById(R.id.et_name);
     }

+ 6 - 10
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/ContactsListActivity.java

@@ -41,7 +41,7 @@ public class ContactsListActivity extends BaseActivity implements  ContactsLocal
      private String[] tabTitle ;
      private TabLayout mTabLayout;
      private ViewPager mViewPager;
-     private ContactsListFragment fragmentMeList,fragmentCusList,fragmentLocal;
+     private ContactsListFragment fragmentMeList,fragmentCusList;
      private LocalContactsListFragment localContactsListFragment;
      private MenuVoiceSearchView mVoiceSearchView;
      
@@ -50,7 +50,7 @@ public class ContactsListActivity extends BaseActivity implements  ContactsLocal
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        tabTitle = new String[]{"我的联系人", "客户联系人", "通讯录"};
+        tabTitle = new String[]{"我的联系人", "通讯录"};
         initView();
     }
 
@@ -61,7 +61,7 @@ public class ContactsListActivity extends BaseActivity implements  ContactsLocal
          mTabLayout.setTabMode(TabLayout.MODE_FIXED);//设置tab模式,当前为系统默认模式
          mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[0]));//添加tab选项卡
          mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[1]));
-         mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[2]));
+//         mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[2]));
          findViewById(R.id.backImg).setOnClickListener(mOnClickListener);
          findViewById(R.id.addImg).setOnClickListener(mOnClickListener);
          ViewPageAdapter mAdapter = new ViewPageAdapter(getSupportFragmentManager());
@@ -71,6 +71,7 @@ public class ContactsListActivity extends BaseActivity implements  ContactsLocal
          mViewPager.setCurrentItem(getIntent().getIntExtra("tabItem",0));
        
          mVoiceSearchView.getSearch_edit().setKeyListener(null);
+         mVoiceSearchView.getSearch_edit().setFocusable(false);
          mVoiceSearchView.getSearch_edit().setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
@@ -114,16 +115,10 @@ public class ContactsListActivity extends BaseActivity implements  ContactsLocal
                      fragment=fragmentMeList;
                      break;
                  case 1:
-                     if (fragmentCusList==null){
-                         fragmentCusList=ContactsListFragment.newInstance(tabItem);
-                     }
-                     fragment=fragmentCusList;
-                     break;
-                 case 2:
                      if ( localContactsListFragment==null){
                          localContactsListFragment=LocalContactsListFragment.newInstance(tabItem);
                      }
-                   return localContactsListFragment;
+                     return localContactsListFragment;
                   //   break;
              }
              return fragment;
@@ -177,6 +172,7 @@ public class ContactsListActivity extends BaseActivity implements  ContactsLocal
 
                         case 0:
                            startActivity(new Intent(ContactsListActivity.this,ContactsAddActivity.class));
+                           break;
                         case 1:
                             startActivity(new Intent(mContext,
                                     ContactDynamicAddActivity.class)

+ 25 - 4
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerContactActivity.java

@@ -2,6 +2,7 @@ package com.uas.appworks.crm3_0.activity;
 
 
 import android.content.Intent;
+import android.view.Menu;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
@@ -13,6 +14,7 @@ import com.modular.apputils.activity.BillInputActivity;
 import com.modular.apputils.adapter.BillAdapter;
 import com.modular.apputils.model.BillGroupModel;
 import com.modular.apputils.presenter.BillPresenter;
+import com.uas.appworks.R;
 import com.uas.appworks.adapter.CustomerContactAdapter;
 import com.uas.appworks.presenter.CustomerContactBillPresenter;
 import com.uas.appworks.presenter.imp.IContact;
@@ -25,6 +27,7 @@ import java.util.List;
  * 客户联系人详情|录入界面
  */
 public class CustomerContactActivity extends BillInputActivity {
+    private boolean isMe;
 
     @Override
     public BillPresenter newBillPresenter() {
@@ -36,7 +39,7 @@ public class CustomerContactActivity extends BillInputActivity {
 
             @Override
             public void deleteDetailOk(int deleteIndex) {
-                ((CustomerContactAdapter)mBillAdapter).superDeleteGroup(deleteIndex);
+                ((CustomerContactAdapter) mBillAdapter).superDeleteGroup(deleteIndex);
             }
         });
     }
@@ -45,18 +48,36 @@ public class CustomerContactActivity extends BillInputActivity {
     public BillAdapter newBillAdapter(List<BillGroupModel> groupModels) {
         return new CustomerContactAdapter(ct, groupModels, this, new CustomerContactAdapter.CustomerContactAdapterListener() {
             @Override
-            public void deleteGroup(int groupIndex,int ctId) {
-                getPresenter().deleteDetail(groupIndex,ctId);
+            public void deleteGroup(int groupIndex, int ctId) {
+                getPresenter().deleteDetail(groupIndex, ctId);
             }
         });
     }
 
     @Override
     public void commitSuccess(int keyValue, String code) {
-        ToastUtil.showToast(ct,"保存成功!!");
+        ToastUtil.showToast(ct, "保存成功!!");
         finish();
     }
 
+    @Override
+    public void init() {
+        super.init();
+        Intent intent = getIntent();
+        if (intent != null) {
+            isMe = intent.getBooleanExtra(Constants.Intents.MY_DOIT, false);
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        if (isMe) {
+            return super.onCreateOptionsMenu(menu);
+        } else {
+            return false;
+        }
+    }
+
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {

+ 9 - 5
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/adapter/ContactsLocalAdapter.java

@@ -16,7 +16,7 @@ import com.common.data.StringUtil;
 import com.common.system.SystemUtil;
 import com.core.app.MyApplication;
 import com.core.utils.NotifyUtils;
-import com.core.utils.helper.AvatarHelper;
+import com.core.utils.sortlist.PingYinUtil;
 import com.uas.appcontact.model.contacts.ContactsModel;
 import com.uas.appworks.R;
 
@@ -68,7 +68,7 @@ public class ContactsLocalAdapter extends BaseAdapter {
             holder.name_tv = (TextView) convertView.findViewById(R.id.name_tv);
             holder.sub_tv = (TextView) convertView.findViewById(R.id.sub_tv);
             holder.status_tv = (ImageView) convertView.findViewById(R.id.status_tv);
-            holder.head_img = (ImageView) convertView.findViewById(R.id.head_img);
+            holder.head_img =  convertView.findViewById(R.id.head_img);
             holder.tag_view = convertView.findViewById(R.id.tag_view);
             convertView.setTag(holder);
         }else{
@@ -80,7 +80,11 @@ public class ContactsLocalAdapter extends BaseAdapter {
         holder.targetId=  model.getImid();
         holder.model=model;
         ///设定为每次刷新都会去删除缓存重新获取数据
-        AvatarHelper.getInstance().display(model.getImid() + "", holder.head_img, true, false);
+        //AvatarHelper.getInstance().display(model.getImid() + "", holder.head_img, true, false);
+        
+        String pName= PingYinUtil.getPingYin(model.getName());
+        holder.head_img.setText(pName.substring(0,1));
+        
         holder.name_tv.setText(model.getName());
         holder.sub_tv.setText(model.getPhone());
         holder.status_tv.setOnClickListener(new View.OnClickListener() {
@@ -108,11 +112,11 @@ public class ContactsLocalAdapter extends BaseAdapter {
     }
 
     public class ViewHolder {
-        public     TextView
+        public  TextView
                 name_tv,
                 sub_tv;
         public ImageView status_tv;
-        public ImageView head_img;
+        public TextView head_img;
         public View tag_view;
         public String targetId;
         public ContactsModel model;

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

@@ -1,5 +1,6 @@
 package com.uas.appworks.crm3_0.fragment;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
@@ -334,7 +335,12 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
                      Pattern regex = Pattern.compile(check);
                      Matcher matcher = regex.matcher(phone);
                      if (matcher.matches()) {
-                         SystemUtil.phoneAction(getActivity(), phone);
+                         if (context instanceof Activity){
+                             SystemUtil.phoneAction(context, phone);
+                         }else{
+                             SystemUtil.phoneAction(getActivity(), phone);
+                         }
+                        
                      } else {
                          NotifyUtils.ToastMessage(getActivity(),getString(R.string.not_format_phone));
                      }
@@ -351,7 +357,11 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
                      Pattern regex = Pattern.compile(check);
                      Matcher matcher = regex.matcher(phone);
                      if (matcher.matches()) {
-                         SystemUtil.phoneAction(getActivity(), phone);
+                         if (context instanceof Activity){
+                             SystemUtil.phoneAction(context, phone);
+                         }else{
+                             SystemUtil.phoneAction(getActivity(), phone);
+                         }
                      } else {
                          NotifyUtils.ToastMessage(getActivity(),getString(R.string.not_format_phone));
                      }
@@ -362,13 +372,13 @@ public class ContactsListFragment extends ViewPagerLazyFragment implements OnSma
          });
         }
 
-        protected class ViewHolder {
+        public class ViewHolder {
             private TextView tvName;
             private TextView tvPosition;
             private TextView tvCompanyName;
             private TextView tvPhone;
             private ImageView ivIcon;
-            private ContactsBean bean;
+            public ContactsBean bean;
 
             public ViewHolder(View view) {
                 tvName = (TextView) view.findViewById(R.id.tv_name);

+ 12 - 0
app_modular/appworks/src/main/res/drawable/shape_round_item_left.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+    <corners
+        android:topLeftRadius="100dp"
+        android:topRightRadius="100dp"
+        android:bottomRightRadius="100dp"
+        android:bottomLeftRadius="100dp">
+    </corners>
+    <solid
+        android:color="#00A4EF">
+    </solid>
+</shape>

+ 11 - 4
app_modular/appworks/src/main/res/layout/activity_contact_search.xml

@@ -11,29 +11,36 @@
         android:layout_height="?attr/actionBarSize"
         layout="@layout/action_device_cycle_count"/>
     <TextView
+        android:layout_marginTop="@dimen/dp_10"
         android:id="@+id/tv_contact_header"
         android:layout_below="@+id/cycleCountToolBar"
         android:layout_width="match_parent"
         android:layout_height="30dp" 
+        android:textSize="@dimen/sp_16"
+        android:background="@color/white"
         android:gravity="center_vertical"
         android:paddingLeft="10dp"
         android:text="我的联系人"/>
-    
+    <View style="@style/app_line_horizontal_05p"></View>
     <ListView
         android:id="@+id/lv_contact"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+        android:layout_height="wrap_content"
+        android:dividerHeight="0.5dp"
+        android:divider="@color/item_line">
     </ListView>
 
     <TextView
+        android:layout_marginTop="@dimen/dp_10"
         android:id="@+id/tv_local_header"
         android:layout_below="@+id/lv_contact"
         android:layout_width="match_parent"
         android:layout_height="30dp"
+        android:textSize="@dimen/sp_16"
+        android:background="@color/white"
         android:gravity="center_vertical"
         android:paddingLeft="10dp"
-        android:text="我的联系人"/>
-    
+        android:text="通讯录"/>
     <ListView
         android:id="@+id/lv_local"
         android:layout_width="match_parent"

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

@@ -163,7 +163,33 @@
                       android:gravity="right|center_vertical"
                       android:hint="@string/common_input2" />
               </RelativeLayout>
+              <RelativeLayout
+                  android:layout_marginTop="1dp"
+                  android:background="@color/white"
+                  android:layout_height="40dp"
+                  style="@style/form_relative_customer">
+
+                  <TextView
+                      android:id="@+id/tv_company"
+                      android:layout_width="wrap_content"
+                      android:layout_height="wrap_content"
+                      android:layout_centerVertical="true"
+                      android:layout_marginLeft="10dp"
+                      android:text="公司" />
 
+                  <EditText
+                      android:id="@+id/et_company"
+                      style="@style/form_relative_right_text"
+                      android:layout_marginLeft="10dp"
+                      android:textSize="14sp"
+                      android:layout_marginTop="3dp"
+                      android:layout_marginBottom="3dp"
+                      android:layout_toRightOf="@+id/tv_company"
+                      android:background="@null"
+                      android:gravity="right|center_vertical"
+                      android:hint="@string/common_input2" />
+              </RelativeLayout>
+              
               <RelativeLayout
                   android:layout_marginTop="1dp"
                   android:background="@color/white"

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

@@ -18,9 +18,8 @@
         android:id="@+id/mViewPager"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_marginTop="@dimen/padding"
         android:background="@color/white"
-        android:paddingBottom="40dp"
+        android:paddingBottom="42dp"
         app:layout_constraintTop_toBottomOf="@id/mTabLayout" />
 
 

+ 7 - 4
app_modular/appworks/src/main/res/layout/fragment_item_contacts_local.xml

@@ -17,14 +17,17 @@
         android:padding="10dp">
         
 
-        <ImageView
+        <TextView
             android:id="@+id/head_img"
             android:layout_width="40dp"
             android:layout_height="40dp"
             android:layout_marginRight="8dp"
-            android:layout_toRightOf="@+id/cb"
-            android:padding="5dp"
-            android:src="@drawable/default_ptr_flip" />
+            android:background="@drawable/shape_round_item_left"
+            android:text="C"
+            android:gravity="center"
+            android:textSize="27sp"
+            android:textColor="@color/white"
+            android:layout_toRightOf="@+id/cb" />
 
         <TextView
             android:id="@+id/name_tv"

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

@@ -4,7 +4,6 @@
     android:layout_height="70dp"
     android:background="@color/white"
     android:padding="10dp">
-
    <TextView
     android:id="@+id/tv_name"
     android:text="张三"