Kaynağa Gözat

Merge branch 'feature' of https://gitlab.com/Arisono/SkWeiChat-Baidu into feature_fanglh

FANGLH 8 yıl önce
ebeveyn
işleme
ac6069b4d4

+ 2 - 0
app_core/common/src/main/java/com/core/base/BaseActivity.java

@@ -26,6 +26,7 @@ import com.common.preferences.PreferenceUtils;
 import com.core.app.ActionBackActivity;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
+import com.core.model.Approval;
 import com.core.net.volley.FastVolley;
 import com.core.utils.NotifyUtils;
 import com.core.widget.CustomProgressDialog;
@@ -312,4 +313,5 @@ public abstract class BaseActivity extends ActionBackActivity {
 			}
 		}
 	}
+
 }

+ 3 - 1
app_core/common/src/main/java/com/core/model/Approval.java

@@ -180,7 +180,7 @@ public class Approval {
     }
 
     /**
-     * @return 输入类型:0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.多选选择
+     * @return 输入类型:0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.dbfind
      */
     public int inputType() {
         if (isNumber())
@@ -189,6 +189,8 @@ public class Approval {
             return 2;
         } else if (isDftypeEQ("C", "YN", "B")) {
             return 3;
+        } else if (isDftypeEQ("dbfind")) {
+            return 4;
         }
         return 0;
     }

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

@@ -5,6 +5,7 @@ import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
 
+import com.alibaba.fastjson.JSON;
 import com.common.LogUtil;
 import com.common.config.BaseConfig;
 import com.common.data.JSONUtil;
@@ -53,6 +54,8 @@ public class OAHttpHelper extends Handler {
     @Override
     public void handleMessage(Message msg) {
         try {
+            LogUtil.i("handleMessage");
+            LogUtil.i("msg="+ JSON.toJSONString(msg));
             OnHttpResultListener listener = (OnHttpResultListener) msg.getData().getSerializable("listener");
             if (listener == null) return;
             Bundle bundle = msg.getData();

+ 30 - 40
app_modular/appcontact/src/main/java/com/uas/appcontact/manager/ContactsManager.java

@@ -7,6 +7,7 @@ import android.os.Looper;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
@@ -14,6 +15,7 @@ import com.common.thread.ThreadUtil;
 import com.core.api.wxapi.ApiConfig;
 import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
+import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.dao.DBManager;
 import com.core.model.EmployeesEntity;
@@ -23,6 +25,11 @@ import com.core.net.http.http.OAHttpHelper;
 import com.core.net.http.http.OnHttpResultListener;
 import com.core.net.http.http.Request;
 import com.core.utils.CommonUtil;
+import com.core.utils.ToastUtil;
+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 java.io.Serializable;
 import java.text.ParseException;
@@ -39,7 +46,7 @@ import java.util.Map;
  * 1.下载企业架构保存数据库统一路径
  * Created by Bitliker on 2017/8/30.
  */
-public class ContactsManager implements OnHttpResultListener {
+public class ContactsManager {
     private final int LOAD_COMPANY_WHAT = 1;
     private static ContactsManager instance;
 
@@ -58,7 +65,7 @@ public class ContactsManager implements OnHttpResultListener {
     }
 
     //获取通讯录数据。当数据库不存在时候,获取网络数据
-    public void loadContact(final OnEmployListener listener){
+    public void loadContact(final OnEmployListener listener) {
         ThreadUtil.getInstance().addLoopTask(new Runnable() {
             @Override
             public void run() {
@@ -86,48 +93,31 @@ public class ContactsManager implements OnHttpResultListener {
     /*获取网络企业架构数据*/
     public void loadContactByNet(final OnEmployListener listener) {
         String master = CommonUtil.getMaster();
-        Map<String, Object> param = new HashMap<>();
-        param.put("master", master);
-        param.put("lastdate", "");
-        Bundle bundle = new Bundle();
-        boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
-        bundle.putBoolean("isB2b", isB2b);
-        if (listener != null)
-            bundle.putSerializable("OnEmployListener", listener);
-        String url = isB2b ? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getUsersInfo : "mobile/getAllHrorgEmps.action";
-        Request request = new Request.Bulider()
-                .setWhat(LOAD_COMPANY_WHAT)
-                .setUrl(url)
-                .setParam(param)
-                .setBundle(bundle)
-                .setMode(Request.Mode.GET)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-    }
-
-
-    @Override
-    public void result(int what, boolean isJSON, String message, Bundle bundle) {
-        if (!isJSON) return;
-        switch (what) {
-            case LOAD_COMPANY_WHAT:
-                boolean isB2b = false;
-                OnEmployListener listener = null;
-                if (bundle != null) {
-                    isB2b = bundle.getBoolean("isB2b", false);
-                    listener = (OnEmployListener) bundle.getSerializable("OnEmployListener");
+        final boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
+        String url = isB2b ? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getUsersInfo
+                : CommonUtil.getAppBaseUrl(MyApplication.getInstance()) + "mobile/getAllHrorgEmps.action";
+        HttpClient httpClient = new HttpClient.Builder().isDebug(true).build();
+        LogUtil.i("发送请求");
+        httpClient.Api().send(new HttpClient.Builder()
+                .url(url)
+                .add("master", master)
+                .add("lastdate", "")
+                .method(Method.GET)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                try {
+                    LogUtil.i("请求结果=");
+                    LogUtil.i("请求结果=" + o.toString());
+                    handEmployees(isB2b, JSON.parseObject(o.toString()), listener);
+                } catch (Exception e) {
+                    listener.callback(null);
                 }
-                handEmployees(isB2b, JSON.parseObject(message), listener);
-                break;
-        }
-    }
-
-    @Override
-    public void error(int what, String message, Bundle bundle) {
+            }
+        }));
 
     }
 
-
     private void handEmployees(final boolean isB2b, final JSONObject object, final OnEmployListener listener) {
         ThreadUtil.getInstance().addTask(new Runnable() {
             @Override

+ 11 - 8
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactsFragment.java

@@ -330,14 +330,17 @@ public class ContactsFragment extends EasyFragment
     @Override
     public void callback(List<EmployeesEntity> employees) {
         try {
-            final List<BaseSortModel<Friend>> friends = getFriendsByErpDB(employees);
-            ThreadUtil.getInstance().addTask(new Runnable() {
-                @Override
-                public void run() {
-                    handlerData(friends);
-                }
-            });
-
+            if (ListUtils.isEmpty(employees)){
+                dimssLoading();
+            }else{
+                final List<BaseSortModel<Friend>> friends = getFriendsByErpDB(employees);
+                ThreadUtil.getInstance().addTask(new Runnable() {
+                    @Override
+                    public void run() {
+                        handlerData(friends);
+                    }
+                });
+            }
         } catch (Exception e) {
             dimssLoading();
         }

+ 29 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java

@@ -49,10 +49,13 @@ import com.modular.appmessages.adapter.ApprovalAdapter;
 import com.modular.appmessages.adapter.CrashLinearLayoutManager;
 import com.modular.appmessages.presenter.ApprovaPresenter;
 import com.modular.appmessages.presenter.imp.IApproval;
+import com.modular.apputils.activity.SelectNetAcitivty;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -146,6 +149,24 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
             }
         } else if (0x25 == requestCode && 0x25 == resultCode) {
             mPresenter.initLoad();
+        } else if (90 == requestCode && 90 == resultCode) {
+            String json = data.getStringExtra("data");
+            if (!StringUtil.isEmpty(json)) {
+                Map<String, String> dbFindData = new HashMap<>();
+                if (mAdapter != null) {
+                    List<Approval> models = mAdapter.getApprovals();
+                    for (Approval e : models) {
+                        if (e.isMustInput() && (e.getType() == Approval.MAIN || e.getType() == Approval.DETAIL)) {
+                            for (Map.Entry<String, String> map : dbFindData.entrySet()) {
+                                if (map.getKey().equals(e.getValuesKey())) {
+                                    e.setValues(map.getValue());
+                                }
+                            }
+                        }
+                    }
+                    mAdapter.notifyDataSetChanged();
+                }
+            }
         }
         super.onActivityResult(requestCode, resultCode, data);
     }
@@ -196,6 +217,14 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         mPresenter = new ApprovaPresenter(this, getIntent());
     }
 
+    public void toDbFind(Approval approval) {
+        startActivityForResult(new Intent(ct, SelectNetAcitivty.class)
+                        .putExtra("fieldKey", approval.getValuesKey())
+                        .putExtra("caller", mPresenter.getCaller())
+                , 90);
+
+    }
+
     private void getEmnameByReturn(String text) {
         if (StringUtil.isEmpty(text)) return;
         Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))");

+ 598 - 591
app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/ApprovalAdapter.java

@@ -33,6 +33,8 @@ import com.core.utils.time.wheel.DatePicker;
 import com.core.widget.CustomProgressDialog;
 import com.core.widget.listener.EditChangeListener;
 import com.modular.appmessages.R;
+import com.modular.appmessages.activity.ApprovalActivity;
+import com.modular.apputils.activity.SelectNetAcitivty;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -43,597 +45,602 @@ import java.util.List;
  */
 
 public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
-	private OABaseActivity ct;
-	private List<Approval> approvals;
-	private List<Approval> historyNodes;
-	private boolean isApprovaling;
-
-	public ApprovalAdapter(OABaseActivity ct, List<Approval> approvals, List<Approval> historyNodes, boolean isApprovaling) {
-		this.isApprovaling = isApprovaling;
-		this.ct = ct;
-		this.approvals = approvals;
-		this.historyNodes = historyNodes;
-	}
-
-	public List<Approval> getApprovals() {
-		return approvals;
-	}
-
-	public void setApprovals(List<Approval> approvals) {
-		this.approvals = approvals;
-	}
-
-	@Override
-	public int getItemViewType(int position) {
-		return position;
-	}
-
-	@Override
-	public int getItemCount() {
-		return ListUtils.getSize(approvals);
-	}
-
-
-	@Override
-	public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-		switch (this.approvals.get(viewType).getType()) {
-			case Approval.TITLE:
-				return new TitleViewHolder(parent);
-			case Approval.MAIN://列表
-			case Approval.DETAIL:
-			case Approval.SETUPTASK:
-				return new BaseRVViewHodler(parent);
-			case Approval.ENCLOSURE://单行列表
-			case Approval.TAG:
-				return new TagViewHolder(parent);
-			case Approval.POINTS:
-				return new PointsViewHolder(parent);
-			case Approval.NODES:
-				return new NodeViewHolder(parent);
-			case Approval.NODES_TAG:
-				return new NodeTagViewHolder(parent);
-			default:
-				return new BaseRVViewHodler(parent);
-		}
-	}
-
-	@Override
-	public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
-		try {
-			if (holder instanceof TitleViewHolder) {
-				bindTitleView((TitleViewHolder) holder, position);
-			} else if (holder instanceof BaseRVViewHodler) {
-				bindBaseRVView((BaseRVViewHodler) holder, position);
-			} else if (holder instanceof TagViewHolder) {
-				bindTAGView((TagViewHolder) holder, position);
-			} else if (holder instanceof PointsViewHolder) {
-				bindPointsView((PointsViewHolder) holder, position);
-			} else if (holder instanceof NodeViewHolder) {
-				bindNodeView((NodeViewHolder) holder, position);
-			} else if (holder instanceof NodeTagViewHolder) {
-				bindNodeTagView((NodeTagViewHolder) holder, position);
-			}
-		} catch (Exception e) {
-
-		}
-	}
-
-	private void bindNodeTagView(final NodeTagViewHolder holder, final int position) {
-		View.OnClickListener listener = new View.OnClickListener() {
-			@Override
-			public void onClick(View v) {
-				boolean isNode = v.getId() == R.id.nodeTv;
-				if ((isNode && holder.nodeTag.getVisibility() == View.GONE) || (!isNode && holder.historyTag.getVisibility() == View.GONE)) {
-					List<Approval> newApprovals = new ArrayList<Approval>();
-					List<Approval> approvals1 = approvals.subList(0, position + 1);
-					List<Approval> approvals2 = approvals.subList(position + 1, approvals.size());
-					newApprovals.addAll(approvals1);
-					newApprovals.addAll(historyNodes);
-					historyNodes = approvals2;
-					if (newApprovals.get(position).getType() == Approval.NODES_TAG) {
-						newApprovals.get(position).setNeerInput(!isNode);
-					}
-					approvals = newApprovals;
-					notifyItemRangeChanged(position, approvals.size() - 1);
-				}
-			}
-		};
-		holder.historyTV.setOnClickListener(listener);
-		holder.nodeTv.setOnClickListener(listener);
-		if (approvals.get(position).isNeerInput()) {
-			holder.nodeTv.setTextColor(ct.getResources().getColor(R.color.text_main));
-			holder.historyTV.setTextColor(ct.getResources().getColor(R.color.titleBlue));
-			holder.nodeTag.setVisibility(View.GONE);
-			holder.historyTag.setVisibility(View.VISIBLE);
-		} else {
-			holder.nodeTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
-			holder.historyTV.setTextColor(ct.getResources().getColor(R.color.text_main));
-			holder.nodeTag.setVisibility(View.VISIBLE);
-			holder.historyTag.setVisibility(View.GONE);
-		}
-	}
-
-	private void bindNodeView(NodeViewHolder holder, int position) {
-		Approval approval = approvals.get(position);
-		if (position > 0 && approvals.get(position - 1).getType() == Approval.NODES_TAG || approvals.get(position - 1).getType() == Approval.NODES) {
-			holder.padding.setVisibility(View.GONE);
-		} else {
-			holder.padding.setVisibility(View.VISIBLE);
-		}
-		int textColor = R.color.hintColor;
-		int reId = R.drawable.weishenpi;
-		if (!StringUtil.isEmpty(approval.getIdKey())) {
-			holder.valuesTv.setText(approval.getIdKey());
-			if (approval.getIdKey().startsWith("待审批")) {
-				textColor = R.color.approvaling;
-				reId = R.drawable.daishenpi;
-			} else if (approval.getIdKey().startsWith("未通过") || approval.getIdKey().startsWith("结束") || approval.getIdKey().startsWith("不同意")) {
-				textColor = R.color.crimson;
-				reId = R.drawable.node_delete;
-			} else if (approval.getIdKey().startsWith("已审批") || approval.getIdKey().startsWith("变更") || approval.getIdKey().startsWith("同意")) {
-				reId = R.drawable.node_finished3;
-			}
-		} else {
-			holder.valuesTv.setText("");
-		}
-		holder.valuesTv.setTextColor(ct.getResources().getColor(textColor));
-		holder.keyTv.setText(approval.getCaption());
-		holder.statusIV.setImageResource(reId);
-		AvatarHelper.getInstance().display(String.valueOf(approval.getId()), holder.handIv, true, false);
-		if (reId == R.drawable.daishenpi && isApprovaling) {
-			holder.changeUser.setVisibility(View.VISIBLE);
-			holder.timeTv.setText("");
-			holder.changeUser.setOnClickListener(new View.OnClickListener() {
-				@Override
-				public void onClick(View v) {
-					if (onChangeClickListener != null)
-						onChangeClickListener.click();
-				}
-			});
+    private ApprovalActivity ct;
+    private List<Approval> approvals;
+    private List<Approval> historyNodes;
+    private boolean isApprovaling;
+
+    public ApprovalAdapter(ApprovalActivity ct, List<Approval> approvals, List<Approval> historyNodes, boolean isApprovaling) {
+        this.isApprovaling = isApprovaling;
+        this.ct = ct;
+        this.approvals = approvals;
+        this.historyNodes = historyNodes;
+    }
+
+    public List<Approval> getApprovals() {
+        return approvals;
+    }
+
+    public void setApprovals(List<Approval> approvals) {
+        this.approvals = approvals;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return position;
+    }
+
+    @Override
+    public int getItemCount() {
+        return ListUtils.getSize(approvals);
+    }
+
+
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        switch (this.approvals.get(viewType).getType()) {
+            case Approval.TITLE:
+                return new TitleViewHolder(parent);
+            case Approval.MAIN://列表
+            case Approval.DETAIL:
+            case Approval.SETUPTASK:
+                return new BaseRVViewHodler(parent);
+            case Approval.ENCLOSURE://单行列表
+            case Approval.TAG:
+                return new TagViewHolder(parent);
+            case Approval.POINTS:
+                return new PointsViewHolder(parent);
+            case Approval.NODES:
+                return new NodeViewHolder(parent);
+            case Approval.NODES_TAG:
+                return new NodeTagViewHolder(parent);
+            default:
+                return new BaseRVViewHodler(parent);
+        }
+    }
+
+    @Override
+    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+        try {
+            if (holder instanceof TitleViewHolder) {
+                bindTitleView((TitleViewHolder) holder, position);
+            } else if (holder instanceof BaseRVViewHodler) {
+                bindBaseRVView((BaseRVViewHodler) holder, position);
+            } else if (holder instanceof TagViewHolder) {
+                bindTAGView((TagViewHolder) holder, position);
+            } else if (holder instanceof PointsViewHolder) {
+                bindPointsView((PointsViewHolder) holder, position);
+            } else if (holder instanceof NodeViewHolder) {
+                bindNodeView((NodeViewHolder) holder, position);
+            } else if (holder instanceof NodeTagViewHolder) {
+                bindNodeTagView((NodeTagViewHolder) holder, position);
+            }
+        } catch (Exception e) {
+
+        }
+    }
+
+    private void bindNodeTagView(final NodeTagViewHolder holder, final int position) {
+        View.OnClickListener listener = new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                boolean isNode = v.getId() == R.id.nodeTv;
+                if ((isNode && holder.nodeTag.getVisibility() == View.GONE) || (!isNode && holder.historyTag.getVisibility() == View.GONE)) {
+                    List<Approval> newApprovals = new ArrayList<Approval>();
+                    List<Approval> approvals1 = approvals.subList(0, position + 1);
+                    List<Approval> approvals2 = approvals.subList(position + 1, approvals.size());
+                    newApprovals.addAll(approvals1);
+                    newApprovals.addAll(historyNodes);
+                    historyNodes = approvals2;
+                    if (newApprovals.get(position).getType() == Approval.NODES_TAG) {
+                        newApprovals.get(position).setNeerInput(!isNode);
+                    }
+                    approvals = newApprovals;
+                    notifyItemRangeChanged(position, approvals.size() - 1);
+                }
+            }
+        };
+        holder.historyTV.setOnClickListener(listener);
+        holder.nodeTv.setOnClickListener(listener);
+        if (approvals.get(position).isNeerInput()) {
+            holder.nodeTv.setTextColor(ct.getResources().getColor(R.color.text_main));
+            holder.historyTV.setTextColor(ct.getResources().getColor(R.color.titleBlue));
+            holder.nodeTag.setVisibility(View.GONE);
+            holder.historyTag.setVisibility(View.VISIBLE);
+        } else {
+            holder.nodeTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
+            holder.historyTV.setTextColor(ct.getResources().getColor(R.color.text_main));
+            holder.nodeTag.setVisibility(View.VISIBLE);
+            holder.historyTag.setVisibility(View.GONE);
+        }
+    }
+
+    private void bindNodeView(NodeViewHolder holder, int position) {
+        Approval approval = approvals.get(position);
+        if (position > 0 && approvals.get(position - 1).getType() == Approval.NODES_TAG || approvals.get(position - 1).getType() == Approval.NODES) {
+            holder.padding.setVisibility(View.GONE);
+        } else {
+            holder.padding.setVisibility(View.VISIBLE);
+        }
+        int textColor = R.color.hintColor;
+        int reId = R.drawable.weishenpi;
+        if (!StringUtil.isEmpty(approval.getIdKey())) {
+            holder.valuesTv.setText(approval.getIdKey());
+            if (approval.getIdKey().startsWith("待审批")) {
+                textColor = R.color.approvaling;
+                reId = R.drawable.daishenpi;
+            } else if (approval.getIdKey().startsWith("未通过") || approval.getIdKey().startsWith("结束") || approval.getIdKey().startsWith("不同意")) {
+                textColor = R.color.crimson;
+                reId = R.drawable.node_delete;
+            } else if (approval.getIdKey().startsWith("已审批") || approval.getIdKey().startsWith("变更") || approval.getIdKey().startsWith("同意")) {
+                reId = R.drawable.node_finished3;
+            }
+        } else {
+            holder.valuesTv.setText("");
+        }
+        holder.valuesTv.setTextColor(ct.getResources().getColor(textColor));
+        holder.keyTv.setText(approval.getCaption());
+        holder.statusIV.setImageResource(reId);
+        AvatarHelper.getInstance().display(String.valueOf(approval.getId()), holder.handIv, true, false);
+        if (reId == R.drawable.daishenpi && isApprovaling) {
+            holder.changeUser.setVisibility(View.VISIBLE);
+            holder.timeTv.setText("");
+            holder.changeUser.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (onChangeClickListener != null)
+                        onChangeClickListener.click();
+                }
+            });
 //            holder.timeTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
-		} else {
-			holder.changeUser.setVisibility(View.GONE);
-			holder.timeTv.setOnClickListener(null);
+        } else {
+            holder.changeUser.setVisibility(View.GONE);
+            holder.timeTv.setOnClickListener(null);
 //            holder.timeTv.setTextColor(ct.getResources().getColor(R.color.text_normal));
-			holder.timeTv.setText(approval.getValues());
-		}
-
-	}
-
-	private void bindPointsView(final PointsViewHolder holder, final int position) {
-		final Approval approval = approvals.get(position);
-		if (approvals.size() > position + 1) {
-			holder.line.setVisibility(View.VISIBLE);
-		} else {
-			holder.line.setVisibility(View.GONE);
-		}
-		holder.captionTV.setText(approval.getCaption());
-		if (approval.isNeerInput()) {
-			if (approval.isSelect()) {
-				if (approval.isMustInput()) {
-					holder.valueTv.setHint(R.string.common_select);
-				} else {
-					holder.valueTv.setHint(R.string.common_select_not_must);
-				}
-				setViewShowAble(false, holder.valueEt);
-				setViewShowAble(true, holder.valueTv);
-				holder.valueTv.setText(approval.getValues());
-				holder.valueTv.setOnClickListener(new View.OnClickListener() {
-					@Override
-					public void onClick(View v) {
-						if (approval.inputType() == 2) {
-							showTimeSelect(holder.valueTv, position);
-						} else {
-							selectItem(approval, position);
-						}
-					}
-				});
-			} else {
-				if (approval.isMustInput()) {
-					holder.valueEt.setHint(R.string.common_input);
-				} else {
-					holder.valueEt.setHint(R.string.common_input1);
-				}
-				if (approval.isDftypeEQ("N")) {
-					holder.valueEt.setInputType(InputType.TYPE_CLASS_NUMBER);
-				} else {
-					holder.valueEt.setInputType(InputType.TYPE_CLASS_TEXT);
-				}
-				setViewShowAble(true, holder.valueEt);
-				setViewShowAble(false, holder.valueTv);
-				holder.valueEt.setText(approval.getValues());
-				holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
-			}
-		} else {
-			setViewShowAble(false, holder.valueEt);
-			setViewShowAble(true, holder.valueTv);
-			holder.valueTv.setCompoundDrawables(null, null, null, null);
-			holder.valueTv.setText(approval.getValues());
-		}
-
-	}
-
-	private void bindTAGView(TagViewHolder holder, final int position) {
-		String name = approvals.get(position).getCaption();
-		if (approvals.get(position).getType() == Approval.ENCLOSURE) {//附件列表
-			holder.line.setVisibility(View.GONE);
-			holder.padding.setVisibility(View.GONE);
-			holder.nameTv.setText(Html.fromHtml("&nbsp&nbsp&nbsp&nbsp&nbsp " + "<u>" + name + "</u>"));
-			holder.nameTv.setOnClickListener(new View.OnClickListener() {
-				@Override
-				public void onClick(View v) {
-					gotoReadEnclosure(approvals.get(position));
-				}
-			});
-		} else {
-			if (ListUtils.getSize(approvals) > position + 1 && position > 0) {
-				if (approvals.get(position + 1).getType() == approvals.get(position - 1).getType()) {
-					holder.line.setVisibility(View.VISIBLE);
-					holder.padding.setVisibility(View.GONE);
-				} else {
-					holder.line.setVisibility(View.GONE);
-					holder.padding.setVisibility(View.VISIBLE);
-					if (name.trim().equals("附件")) {
-						holder.nameTv.setTextColor(ct.getResources().getColor(R.color.text_normal));
-					} else {
-						holder.nameTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
-					}
-				}
-			}
-			if (!StringUtil.isEmpty(name)) {
-				holder.nameTv.setVisibility(View.VISIBLE);
-				holder.nameTv.setText(name);
-			} else {
-				holder.nameTv.setVisibility(View.GONE);
-			}
-		}
-	}
-
-	private void gotoReadEnclosure(Approval approval) {
-		String url = approval.getIdKey();
-		final CustomProgressDialog progressDialog = CustomProgressDialog.createDialog(ct);
-		progressDialog.setTitile("正在下载");
-		progressDialog.setMessage("正在下载,请勿关闭程序");
-		LogUtil.i("gotoReadEnclosure");
-		if (!StringUtil.isEmpty(approval.getCaption())) {
-			if (isImage(approval.getCaption())) {
-				Intent intent = new Intent("com.modular.tool.SingleImagePreviewActivity");
-				intent.putExtra(AppConstant.EXTRA_IMAGE_URI, url);
-				ct.startActivity(intent);
-			} else {
-				OpenFilesUtils.downLoadFile(url, approval.getCaption(), new OpenFilesUtils.OnFileLoadListener() {
-					@Override
-					public void onLoadIng(int progress, int allProgress) {
-						if (progressDialog != null)
-							progressDialog.show();
-						LogUtil.i("TODO 下载进行中回调");
-					}
-
-					@Override
-					public void onSuccess(final File file) {
-						if (progressDialog != null)
-							progressDialog.dismiss();
-						try {
-							ct.requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, new Runnable() {
-								@Override
-								public void run() {
-									OpenFilesUtils.openCommonFils(ct, file);
-								}
-							}, new Runnable() {
-								@Override
-								public void run() {
-									ct.showToast(R.string.not_system_permission);
-								}
-							});
-						} catch (Exception e) {
-							
-						}
-					}
-					@Override
-					public void onFailure(String exception) {
-						LogUtil.i("exception=" + exception);
-						ToastUtil.showToast(ct, exception);
-					}
-				});
-			}
-		}
-	}
-
-	private void bindBaseRVView(final BaseRVViewHodler holder, final int position) {
-		final Approval approval = approvals.get(position);
-		holder.captionTV.setText(approval.getCaption());
-		holder.oldValueTv.setVisibility(View.GONE);
-		if (!StringUtil.isEmpty(approval.getValues())) {
-			if (holder.valueTv.getVisibility() == View.VISIBLE) {
-				holder.valueTv.setText(approval.getValues());
-			} else if (holder.valueEt.getVisibility() == View.VISIBLE) {
-				holder.valueEt.setText(approval.getValues());
-			}
-		}
-		if (approval.isNeerInput()) {
-			setViewShowAble(true, holder.valueEt);
-			setViewShowAble(false, holder.valueTv, holder.valueWeb);
-			holder.valueEt.setText(approval.getValues());
-			if (approval.isMustInput()) {
-				holder.valueEt.setHint(R.string.common_input);
-			} else {
-				holder.valueEt.setHint(R.string.common_input1);
-			}
-			//0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.多选选择
-			switch (approval.inputType()) {
-				case 2:
-				case 3:
-				case 4:
-					if (approval.isMustInput()) {
-						holder.valueEt.setHint(R.string.common_select);
-					} else {
-						holder.valueEt.setHint(R.string.common_select_not_must);
-					}
-					holder.valueEt.setFocusable(true);
-					holder.valueEt.setFocusableInTouchMode(false);
-					holder.valueEt.setOnClickListener(new View.OnClickListener() {
-						@Override
-						public void onClick(View v) {
-							if (approval.inputType() == 2) {
-								showTimeSelect(holder.valueEt, position);
-							} else {
-								selectItem(approval, position);
-							}
-						}
-					});
-					break;
-				case 1:
-					holder.valueEt.setInputType(InputType.TYPE_CLASS_NUMBER);
-					holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
-					break;
-				default:
-					holder.valueEt.setInputType(InputType.TYPE_CLASS_TEXT);
-					holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
-			}
-		} else {
-			if (isWeb(approval.getValues())) {
-				setViewShowAble(true, holder.valueWeb);
-				setViewShowAble(false, holder.valueEt, holder.valueTv);
-				LogUtil.i(approval.getValues());
-				holder.valueWeb.loadDataWithBaseURL(null, approval.getValues(), "text/html", "utf-8", null);
-			} else {
-				setViewShowAble(true, holder.valueTv);
-				setViewShowAble(false, holder.valueEt, holder.valueWeb);
-				if (!StringUtil.isEmpty(approval.getOldValues())) {//存在变更
-					holder.oldValueTv.setVisibility(View.VISIBLE);
-					holder.oldValueTv.setText(approval.getOldValues());
-					holder.valueTv.setText(getOldValues(approval.getOldValues(), approval.getValues()));
-				} else {
-					if (approval.isNumber()) {
-						holder.valueTv.setText(approval.getNumber());
-					} else {
-						holder.valueTv.setText(Html.fromHtml(approval.getValues()));
-					}
-				}
-			}
-		}
-	}
-
-	private CharSequence getOldValues(String oldValues, String values) {
-		return Html.fromHtml("<font color='#f10813'>" + values + "</font>");
-	}
-
-	private boolean isWeb(String values) {
-		return values != null && values.length() > 100 && values.contains("<br>");
-	}
-
-	private void showTimeSelect(final TextView showView, final int position) {
-		DatePicker picker = new DatePicker(ct, DatePicker.YEAR_MONTH_DAY);
-		picker.setRange(2015, 2019, true);
-		picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
-		picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
-			@Override
-			public void onDatePicked(String year, String month, String day) {
-				String time = year + "-" + month + "-" + day;
-				LogUtil.i("time=" + time);
-				showView.setText(time);
-				approvals.get(position).setValues(time);
-			}
-		});
-		picker.show();
-	}
-
-	private void selectItem(Approval approval, final int position) {
-		if (!ListUtils.isEmpty(approval.getDatas())) {
-			String[] items = new String[approval.getDatas().size()];
-			for (int i = 0; i < approval.getDatas().size(); i++) {
-				items[i] = approval.getDatas().get(i).display;
-			}
-			new MaterialDialog.Builder(ct)
-					.title(approval.getCaption())
-					.items(items)
-					.itemsCallbackSingleChoice(0, new MaterialDialog.ListCallbackSingleChoice() {
-						@Override
-						public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
-							if (!TextUtils.isEmpty(text)) {
-								approvals.get(position).setValues(text.toString());
-								notifyItemChanged(position);
-							}
-							return true;
-						}
-					}).positiveText(MyApplication.getInstance().getString(R.string.common_sure)).show();
-
-		}
-	}
-
-	private void bindTitleView(TitleViewHolder holder, int position) {
-		Approval approval = approvals.get(position);
-		holder.titleTv.setText(approval.getCaption());
-		AvatarHelper.getInstance().display(approval.getIdKey(), holder.handIv, true, false);
-		if (approval.getId() > 0) {
-			holder.statusIv.setVisibility(View.VISIBLE);
-			if (approval.getId() > 0)
-				holder.statusIv.setImageResource(approval.getId());
-		} else {
-			holder.statusIv.setVisibility(View.GONE);
-		}
-	}
-
-	private class TitleViewHolder extends RecyclerView.ViewHolder {
-		TextView titleTv;
-		ImageView handIv, statusIv;
-
-		public TitleViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_title, parent, false));
-		}
-
-		public TitleViewHolder(View itemView) {
-			super(itemView);
-			titleTv = (TextView) itemView.findViewById(R.id.titleTv);
-			handIv = (ImageView) itemView.findViewById(R.id.handIv);
-			statusIv = (ImageView) itemView.findViewById(R.id.statusIv);
-		}
-	}
-
-	private class TagViewHolder extends RecyclerView.ViewHolder {
-		TextView nameTv;
-		View padding, line;
-
-		public TagViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_tag, parent, false));
-		}
-
-		public TagViewHolder(View itemView) {
-			super(itemView);
-			nameTv = (TextView) itemView.findViewById(R.id.tagTv);
-			padding = itemView.findViewById(R.id.padding);
-			line = itemView.findViewById(R.id.line);
-		}
-	}
-
-	private class NodeViewHolder extends RecyclerView.ViewHolder {
-		ImageView handIv, statusIV, changeUser;
-		TextView timeTv, keyTv, valuesTv;
-		View padding;
-
-		public NodeViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_node, parent, false));
-		}
-
-		public NodeViewHolder(View itemView) {
-			super(itemView);
-			timeTv = (TextView) itemView.findViewById(R.id.timeTv);
-			keyTv = (TextView) itemView.findViewById(R.id.keyTv);
-			valuesTv = (TextView) itemView.findViewById(R.id.valuesTv);
-			handIv = (ImageView) itemView.findViewById(R.id.handIv);
-			statusIV = (ImageView) itemView.findViewById(R.id.statusIV);
-			changeUser = (ImageView) itemView.findViewById(R.id.changeUser);
-			padding = itemView.findViewById(R.id.padding);
-			changeUser.setVisibility(View.GONE);
-		}
-	}
-
-	private class NodeTagViewHolder extends RecyclerView.ViewHolder {
-		TextView nodeTv, historyTV;
-		View nodeTag, historyTag;
-
-		public NodeTagViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_node_tag, parent, false));
-		}
-
-		public NodeTagViewHolder(View itemView) {
-			super(itemView);
-			nodeTv = (TextView) itemView.findViewById(R.id.nodeTv);
-			historyTV = (TextView) itemView.findViewById(R.id.historyTV);
-			nodeTag = itemView.findViewById(R.id.nodeTag);
-			historyTag = itemView.findViewById(R.id.historyTag);
-			historyTag.setVisibility(View.GONE);
-		}
-	}
-
-	private class PointsViewHolder extends BaseViewHolder {
-		View line;
-
-		public PointsViewHolder(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_points, parent, false));
-		}
-
-		public PointsViewHolder(View itemView) {
-			super(itemView);
-			line = itemView.findViewById(R.id.line);
-
-		}
-	}
-
-	private class BaseViewHolder extends RecyclerView.ViewHolder {
-		TextView captionTV, valueTv;
-		EditText valueEt;
-		FrameLayout valuesFl;
-
-		public BaseViewHolder(View itemView) {
-			super(itemView);
-			captionTV = (TextView) itemView.findViewById(R.id.captionTV);
-			valueTv = (TextView) itemView.findViewById(R.id.valueTv);
-			valueEt = (EditText) itemView.findViewById(R.id.valueEt);
-			valuesFl = (FrameLayout) itemView.findViewById(R.id.valuesFl);
-
-		}
-	}
-
-	private class BaseRVViewHodler extends BaseViewHolder {
-		WebView valueWeb;
-		TextView oldValueTv;
-
-		public BaseRVViewHodler(ViewGroup parent) {
-			this(LayoutInflater.from(ct).inflate(R.layout.item_approval_rv, parent, false));
-		}
-
-		public BaseRVViewHodler(View itemView) {
-			super(itemView);
-			valueWeb = (WebView) itemView.findViewById(R.id.valueWeb);
-			oldValueTv = (TextView) itemView.findViewById(R.id.oldValueTv);
-			oldValueTv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //删除线
-			oldValueTv.getPaint().setAntiAlias(true);// 抗锯齿
-		}
-	}
-
-	private void setViewShowAble(boolean showAble, View... views) {
-		if (views != null && views.length > 0) {
-			for (View v : views) {
-				v.setVisibility(showAble ? View.VISIBLE : View.GONE);
-			}
-		}
-	}
-
-	private class TextChangListener extends EditChangeListener {
-		BaseViewHolder hodler;
-		private int position;
-
-		public TextChangListener(BaseViewHolder hodler, int position) {
-			this.hodler = hodler;
-			this.position = position;
-		}
-
-		@Override
-		public void afterTextChanged(Editable s) {
-			if (this.position >= 0) {
-				if (this.hodler.valueEt != null && this.hodler.valueEt.getVisibility() == View.VISIBLE) {
-					String valueEt = this.hodler.valueEt.getText().toString();
-					approvals.get(this.position).setValues(valueEt == null ? "" : valueEt);
-				}
-			}
-		}
-	}
-
-	private OnChangeClickListener onChangeClickListener;
-
-	public void setOnChangeClickListener(OnChangeClickListener onChangeClickListener) {
-		this.onChangeClickListener = onChangeClickListener;
-	}
-
-	public interface OnChangeClickListener {
-		void click();
-	}
-
-
-	private boolean isImage(String name) {
-		return name.toUpperCase().endsWith("jpeg".toUpperCase())
-				|| name.toUpperCase().endsWith("jpg".toUpperCase())
-				|| name.toUpperCase().endsWith("png".toUpperCase());
-	}
+            holder.timeTv.setText(approval.getValues());
+        }
+
+    }
+
+    private void bindPointsView(final PointsViewHolder holder, final int position) {
+        final Approval approval = approvals.get(position);
+        if (approvals.size() > position + 1) {
+            holder.line.setVisibility(View.VISIBLE);
+        } else {
+            holder.line.setVisibility(View.GONE);
+        }
+        holder.captionTV.setText(approval.getCaption());
+        if (approval.isNeerInput()) {
+            if (approval.isSelect()) {
+                if (approval.isMustInput()) {
+                    holder.valueTv.setHint(R.string.common_select);
+                } else {
+                    holder.valueTv.setHint(R.string.common_select_not_must);
+                }
+                setViewShowAble(false, holder.valueEt);
+                setViewShowAble(true, holder.valueTv);
+                holder.valueTv.setText(approval.getValues());
+                holder.valueTv.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        if (approval.inputType() == 2) {
+                            showTimeSelect(holder.valueTv, position);
+                        } else {
+                            selectItem(approval, position);
+                        }
+                    }
+                });
+            } else {
+                if (approval.isMustInput()) {
+                    holder.valueEt.setHint(R.string.common_input);
+                } else {
+                    holder.valueEt.setHint(R.string.common_input1);
+                }
+                if (approval.isDftypeEQ("N")) {
+                    holder.valueEt.setInputType(InputType.TYPE_CLASS_NUMBER);
+                } else {
+                    holder.valueEt.setInputType(InputType.TYPE_CLASS_TEXT);
+                }
+                setViewShowAble(true, holder.valueEt);
+                setViewShowAble(false, holder.valueTv);
+                holder.valueEt.setText(approval.getValues());
+                holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
+            }
+        } else {
+            setViewShowAble(false, holder.valueEt);
+            setViewShowAble(true, holder.valueTv);
+            holder.valueTv.setCompoundDrawables(null, null, null, null);
+            holder.valueTv.setText(approval.getValues());
+        }
+
+    }
+
+    private void bindTAGView(TagViewHolder holder, final int position) {
+        String name = approvals.get(position).getCaption();
+        if (approvals.get(position).getType() == Approval.ENCLOSURE) {//附件列表
+            holder.line.setVisibility(View.GONE);
+            holder.padding.setVisibility(View.GONE);
+            holder.nameTv.setText(Html.fromHtml("&nbsp&nbsp&nbsp&nbsp&nbsp " + "<u>" + name + "</u>"));
+            holder.nameTv.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    gotoReadEnclosure(approvals.get(position));
+                }
+            });
+        } else {
+            if (ListUtils.getSize(approvals) > position + 1 && position > 0) {
+                if (approvals.get(position + 1).getType() == approvals.get(position - 1).getType()) {
+                    holder.line.setVisibility(View.VISIBLE);
+                    holder.padding.setVisibility(View.GONE);
+                } else {
+                    holder.line.setVisibility(View.GONE);
+                    holder.padding.setVisibility(View.VISIBLE);
+                    if (name.trim().equals("附件")) {
+                        holder.nameTv.setTextColor(ct.getResources().getColor(R.color.text_normal));
+                    } else {
+                        holder.nameTv.setTextColor(ct.getResources().getColor(R.color.titleBlue));
+                    }
+                }
+            }
+            if (!StringUtil.isEmpty(name)) {
+                holder.nameTv.setVisibility(View.VISIBLE);
+                holder.nameTv.setText(name);
+            } else {
+                holder.nameTv.setVisibility(View.GONE);
+            }
+        }
+    }
+
+    private void gotoReadEnclosure(Approval approval) {
+        String url = approval.getIdKey();
+        final CustomProgressDialog progressDialog = CustomProgressDialog.createDialog(ct);
+        progressDialog.setTitile("正在下载");
+        progressDialog.setMessage("正在下载,请勿关闭程序");
+        LogUtil.i("gotoReadEnclosure");
+        if (!StringUtil.isEmpty(approval.getCaption())) {
+            if (isImage(approval.getCaption())) {
+                Intent intent = new Intent("com.modular.tool.SingleImagePreviewActivity");
+                intent.putExtra(AppConstant.EXTRA_IMAGE_URI, url);
+                ct.startActivity(intent);
+            } else {
+                OpenFilesUtils.downLoadFile(url, approval.getCaption(), new OpenFilesUtils.OnFileLoadListener() {
+                    @Override
+                    public void onLoadIng(int progress, int allProgress) {
+                        if (progressDialog != null)
+                            progressDialog.show();
+                        LogUtil.i("TODO 下载进行中回调");
+                    }
+
+                    @Override
+                    public void onSuccess(final File file) {
+                        if (progressDialog != null)
+                            progressDialog.dismiss();
+                        try {
+                            ct.requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, new Runnable() {
+                                @Override
+                                public void run() {
+                                    OpenFilesUtils.openCommonFils(ct, file);
+                                }
+                            }, new Runnable() {
+                                @Override
+                                public void run() {
+                                    ct.showToast(R.string.not_system_permission);
+                                }
+                            });
+                        } catch (Exception e) {
+
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(String exception) {
+                        LogUtil.i("exception=" + exception);
+                        ToastUtil.showToast(ct, exception);
+                    }
+                });
+            }
+        }
+    }
+
+    private void bindBaseRVView(final BaseRVViewHodler holder, final int position) {
+        final Approval approval = approvals.get(position);
+        holder.captionTV.setText(approval.getCaption());
+        holder.oldValueTv.setVisibility(View.GONE);
+        if (!StringUtil.isEmpty(approval.getValues())) {
+            if (holder.valueTv.getVisibility() == View.VISIBLE) {
+                holder.valueTv.setText(approval.getValues());
+            } else if (holder.valueEt.getVisibility() == View.VISIBLE) {
+                holder.valueEt.setText(approval.getValues());
+            }
+        }
+        if (approval.isNeerInput()) {
+            setViewShowAble(true, holder.valueEt);
+            setViewShowAble(false, holder.valueTv, holder.valueWeb);
+            holder.valueEt.setText(approval.getValues());
+            if (approval.isMustInput()) {
+                holder.valueEt.setHint(R.string.common_input);
+            } else {
+                holder.valueEt.setHint(R.string.common_input1);
+            }
+            //0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.多选选择
+            switch (approval.inputType()) {
+                case 2:
+                case 3:
+                case 4:
+                    if (approval.isMustInput()) {
+                        holder.valueEt.setHint(R.string.common_select);
+                    } else {
+                        holder.valueEt.setHint(R.string.common_select_not_must);
+                    }
+                    holder.valueEt.setFocusable(true);
+                    holder.valueEt.setFocusableInTouchMode(false);
+                    holder.valueEt.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View v) {
+                            int type = approval.inputType();
+                            if (type == 2) {
+                                showTimeSelect(holder.valueEt, position);
+                            } else if (type == 4) {
+                                ct.toDbFind(approval);
+                            } else {
+                                selectItem(approval, position);
+                            }
+                        }
+                    });
+                    break;
+                case 1:
+                    holder.valueEt.setInputType(InputType.TYPE_CLASS_NUMBER);
+                    holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
+                    break;
+                default:
+                    holder.valueEt.setInputType(InputType.TYPE_CLASS_TEXT);
+                    holder.valueEt.addTextChangedListener(new TextChangListener(holder, position));
+            }
+        } else {
+            if (isWeb(approval.getValues())) {
+                setViewShowAble(true, holder.valueWeb);
+                setViewShowAble(false, holder.valueEt, holder.valueTv);
+                LogUtil.i(approval.getValues());
+                holder.valueWeb.loadDataWithBaseURL(null, approval.getValues(), "text/html", "utf-8", null);
+            } else {
+                setViewShowAble(true, holder.valueTv);
+                setViewShowAble(false, holder.valueEt, holder.valueWeb);
+                if (!StringUtil.isEmpty(approval.getOldValues())) {//存在变更
+                    holder.oldValueTv.setVisibility(View.VISIBLE);
+                    holder.oldValueTv.setText(approval.getOldValues());
+                    holder.valueTv.setText(getOldValues(approval.getOldValues(), approval.getValues()));
+                } else {
+                    if (approval.isNumber()) {
+                        holder.valueTv.setText(approval.getNumber());
+                    } else {
+                        holder.valueTv.setText(Html.fromHtml(approval.getValues()));
+                    }
+                }
+            }
+        }
+    }
+
+
+    private CharSequence getOldValues(String oldValues, String values) {
+        return Html.fromHtml("<font color='#f10813'>" + values + "</font>");
+    }
+
+    private boolean isWeb(String values) {
+        return values != null && values.length() > 100 && values.contains("<br>");
+    }
+
+    private void showTimeSelect(final TextView showView, final int position) {
+        DatePicker picker = new DatePicker(ct, DatePicker.YEAR_MONTH_DAY);
+        picker.setRange(2015, 2019, true);
+        picker.setSelectedItem(CalendarUtil.getYear(), CalendarUtil.getMonth(), CalendarUtil.getDay());
+        picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
+            @Override
+            public void onDatePicked(String year, String month, String day) {
+                String time = year + "-" + month + "-" + day;
+                LogUtil.i("time=" + time);
+                showView.setText(time);
+                approvals.get(position).setValues(time);
+            }
+        });
+        picker.show();
+    }
+
+    private void selectItem(Approval approval, final int position) {
+        if (!ListUtils.isEmpty(approval.getDatas())) {
+            String[] items = new String[approval.getDatas().size()];
+            for (int i = 0; i < approval.getDatas().size(); i++) {
+                items[i] = approval.getDatas().get(i).display;
+            }
+            new MaterialDialog.Builder(ct)
+                    .title(approval.getCaption())
+                    .items(items)
+                    .itemsCallbackSingleChoice(0, new MaterialDialog.ListCallbackSingleChoice() {
+                        @Override
+                        public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
+                            if (!TextUtils.isEmpty(text)) {
+                                approvals.get(position).setValues(text.toString());
+                                notifyItemChanged(position);
+                            }
+                            return true;
+                        }
+                    }).positiveText(MyApplication.getInstance().getString(R.string.common_sure)).show();
+
+        }
+    }
+
+    private void bindTitleView(TitleViewHolder holder, int position) {
+        Approval approval = approvals.get(position);
+        holder.titleTv.setText(approval.getCaption());
+        AvatarHelper.getInstance().display(approval.getIdKey(), holder.handIv, true, false);
+        if (approval.getId() > 0) {
+            holder.statusIv.setVisibility(View.VISIBLE);
+            if (approval.getId() > 0)
+                holder.statusIv.setImageResource(approval.getId());
+        } else {
+            holder.statusIv.setVisibility(View.GONE);
+        }
+    }
+
+    private class TitleViewHolder extends RecyclerView.ViewHolder {
+        TextView titleTv;
+        ImageView handIv, statusIv;
+
+        public TitleViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_title, parent, false));
+        }
+
+        public TitleViewHolder(View itemView) {
+            super(itemView);
+            titleTv = (TextView) itemView.findViewById(R.id.titleTv);
+            handIv = (ImageView) itemView.findViewById(R.id.handIv);
+            statusIv = (ImageView) itemView.findViewById(R.id.statusIv);
+        }
+    }
+
+    private class TagViewHolder extends RecyclerView.ViewHolder {
+        TextView nameTv;
+        View padding, line;
+
+        public TagViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_tag, parent, false));
+        }
+
+        public TagViewHolder(View itemView) {
+            super(itemView);
+            nameTv = (TextView) itemView.findViewById(R.id.tagTv);
+            padding = itemView.findViewById(R.id.padding);
+            line = itemView.findViewById(R.id.line);
+        }
+    }
+
+    private class NodeViewHolder extends RecyclerView.ViewHolder {
+        ImageView handIv, statusIV, changeUser;
+        TextView timeTv, keyTv, valuesTv;
+        View padding;
+
+        public NodeViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_node, parent, false));
+        }
+
+        public NodeViewHolder(View itemView) {
+            super(itemView);
+            timeTv = (TextView) itemView.findViewById(R.id.timeTv);
+            keyTv = (TextView) itemView.findViewById(R.id.keyTv);
+            valuesTv = (TextView) itemView.findViewById(R.id.valuesTv);
+            handIv = (ImageView) itemView.findViewById(R.id.handIv);
+            statusIV = (ImageView) itemView.findViewById(R.id.statusIV);
+            changeUser = (ImageView) itemView.findViewById(R.id.changeUser);
+            padding = itemView.findViewById(R.id.padding);
+            changeUser.setVisibility(View.GONE);
+        }
+    }
+
+    private class NodeTagViewHolder extends RecyclerView.ViewHolder {
+        TextView nodeTv, historyTV;
+        View nodeTag, historyTag;
+
+        public NodeTagViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_node_tag, parent, false));
+        }
+
+        public NodeTagViewHolder(View itemView) {
+            super(itemView);
+            nodeTv = (TextView) itemView.findViewById(R.id.nodeTv);
+            historyTV = (TextView) itemView.findViewById(R.id.historyTV);
+            nodeTag = itemView.findViewById(R.id.nodeTag);
+            historyTag = itemView.findViewById(R.id.historyTag);
+            historyTag.setVisibility(View.GONE);
+        }
+    }
+
+    private class PointsViewHolder extends BaseViewHolder {
+        View line;
+
+        public PointsViewHolder(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_points, parent, false));
+        }
+
+        public PointsViewHolder(View itemView) {
+            super(itemView);
+            line = itemView.findViewById(R.id.line);
+
+        }
+    }
+
+    private class BaseViewHolder extends RecyclerView.ViewHolder {
+        TextView captionTV, valueTv;
+        EditText valueEt;
+        FrameLayout valuesFl;
+
+        public BaseViewHolder(View itemView) {
+            super(itemView);
+            captionTV = (TextView) itemView.findViewById(R.id.captionTV);
+            valueTv = (TextView) itemView.findViewById(R.id.valueTv);
+            valueEt = (EditText) itemView.findViewById(R.id.valueEt);
+            valuesFl = (FrameLayout) itemView.findViewById(R.id.valuesFl);
+
+        }
+    }
+
+    private class BaseRVViewHodler extends BaseViewHolder {
+        WebView valueWeb;
+        TextView oldValueTv;
+
+        public BaseRVViewHodler(ViewGroup parent) {
+            this(LayoutInflater.from(ct).inflate(R.layout.item_approval_rv, parent, false));
+        }
+
+        public BaseRVViewHodler(View itemView) {
+            super(itemView);
+            valueWeb = (WebView) itemView.findViewById(R.id.valueWeb);
+            oldValueTv = (TextView) itemView.findViewById(R.id.oldValueTv);
+            oldValueTv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //删除线
+            oldValueTv.getPaint().setAntiAlias(true);// 抗锯齿
+        }
+    }
+
+    private void setViewShowAble(boolean showAble, View... views) {
+        if (views != null && views.length > 0) {
+            for (View v : views) {
+                v.setVisibility(showAble ? View.VISIBLE : View.GONE);
+            }
+        }
+    }
+
+    private class TextChangListener extends EditChangeListener {
+        BaseViewHolder hodler;
+        private int position;
+
+        public TextChangListener(BaseViewHolder hodler, int position) {
+            this.hodler = hodler;
+            this.position = position;
+        }
+
+        @Override
+        public void afterTextChanged(Editable s) {
+            if (this.position >= 0) {
+                if (this.hodler.valueEt != null && this.hodler.valueEt.getVisibility() == View.VISIBLE) {
+                    String valueEt = this.hodler.valueEt.getText().toString();
+                    approvals.get(this.position).setValues(valueEt == null ? "" : valueEt);
+                }
+            }
+        }
+    }
+
+    private OnChangeClickListener onChangeClickListener;
+
+    public void setOnChangeClickListener(OnChangeClickListener onChangeClickListener) {
+        this.onChangeClickListener = onChangeClickListener;
+    }
+
+    public interface OnChangeClickListener {
+        void click();
+    }
+
+
+    private boolean isImage(String name) {
+        return name.toUpperCase().endsWith("jpeg".toUpperCase())
+                || name.toUpperCase().endsWith("jpg".toUpperCase())
+                || name.toUpperCase().endsWith("png".toUpperCase());
+    }
 }

+ 4 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java

@@ -160,6 +160,10 @@ public class ApprovaPresenter implements OnHttpResultListener {
         return master == null ? CommonUtil.getMaster() : master;
     }
 
+    public String getCaller() {
+        return record == null ? "" : record.caller;
+    }
+
     public void initLoad() {
         initLoad(record.nodeId);
     }

+ 181 - 0
app_modular/apputils/src/main/java/com/modular/apputils/activity/SelectNetAcitivty.java

@@ -0,0 +1,181 @@
+package com.modular.apputils.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.Editable;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.core.app.MyApplication;
+import com.core.base.OABaseActivity;
+import com.core.utils.CommonUtil;
+import com.core.widget.VoiceSearchView;
+import com.core.widget.listener.EditChangeListener;
+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.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by Bitlike on 2017/11/27.
+ */
+
+public class SelectNetAcitivty extends OABaseActivity implements View.OnClickListener {
+    private HttpClient httpClient = new HttpClient.Builder(CommonUtil.getAppBaseUrl(MyApplication.getInstance())).isDebug(true).build();
+    private String lastKey;
+
+    private String fieldKey;
+    private String caller;
+    private RecyclerView recyclerView;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.acitivty_net_select);
+        initView();
+    }
+
+    private void initView() {
+        VoiceSearchView voiceSearchView = (VoiceSearchView) findViewById(R.id.voiceSearchView);
+        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
+        recyclerView.setItemAnimator(new DefaultItemAnimator());
+        recyclerView.setLayoutManager(new LinearLayoutManager(ct));
+        voiceSearchView.addTextChangedListener(new EditChangeListener() {
+            @Override
+            public void afterTextChanged(Editable editable) {
+                lastKey = editable.toString();
+                loadSearch(lastKey);
+            }
+        });
+
+        Intent intent = getIntent();
+        if (intent != null) {
+            fieldKey = intent.getStringExtra("fieldKey");
+            caller = intent.getStringExtra("caller");
+        }
+        loadSearch(lastKey = "");
+    }
+
+    private void loadSearch(final String keyWork) {
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("/common/getSearchData.action")
+                .add("table", "")
+                .add("field", "")
+                .add("type", "form")
+                .add("searchTpl", true)
+                .add("condition", keyWork)
+                .add("configSearchCondition", "1=1")
+                .add("name", fieldKey)
+                .add("caller", caller)
+                .method(Method.GET)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                if (!lastKey.equals(keyWork)) return;
+                try {
+                    handleData(o.toString());
+                } catch (Exception e) {
+
+                }
+            }
+        }));
+    }
+
+
+    private ListAdapter mAdapter = null;
+
+    private void handleData(String messgae) throws Exception {
+        JSONArray array = JSON.parseArray(messgae);
+        JSONObject o = null;
+        Bean b = null;
+        List<Bean> models = new ArrayList<>();
+        for (int i = 0; i < array.size(); i++) {
+            o = array.getJSONObject(i);
+            b.name = JSONUtil.getText(o, fieldKey);
+            b.json = o.toJSONString();
+            models.add(b);
+        }
+
+        if (mAdapter == null) {
+            mAdapter = new ListAdapter(models);
+            recyclerView.setAdapter(mAdapter);
+        } else {
+            mAdapter.setModels(models);
+        }
+
+    }
+
+    @Override
+    public void onClick(View view) {
+        Object tag = view.getTag();
+        if (tag != null && tag instanceof Bean) {
+            Bean bean = (Bean) tag;
+            LogUtil.i("bean=" + bean.name);
+            LogUtil.i("bean=" + bean.json);
+            setResult(90, new Intent().putExtra("data", bean.json));
+            finish();
+        }
+    }
+
+
+    class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHoler> {
+        private List<Bean> models;
+
+        public ListAdapter(List<Bean> models) {
+            this.models = models;
+        }
+
+        public void setModels(List<Bean> models) {
+            this.models = models;
+            notifyDataSetChanged();
+        }
+
+        @Override
+        public ViewHoler onCreateViewHolder(ViewGroup parent, int viewType) {
+            return new ViewHoler(LayoutInflater.from(ct).inflate(com.core.app.R.layout.select_list_item, parent, false));
+        }
+
+        @Override
+        public void onBindViewHolder(ViewHoler holder, int position) {
+            Bean bean = models.get(position);
+            holder.name_tv.setText(bean.name);
+            holder.itemView.setTag(bean);
+            holder.itemView.setOnClickListener(SelectNetAcitivty.this);
+        }
+
+        @Override
+        public int getItemCount() {
+            return ListUtils.getSize(this.models);
+        }
+
+        class ViewHoler extends RecyclerView.ViewHolder {
+            TextView name_tv;
+
+            public ViewHoler(View itemView) {
+                super(itemView);
+                name_tv = (TextView) itemView.findViewById(R.id.name_tv);
+            }
+        }
+    }
+
+
+    private class Bean {
+        String name;
+        String json;
+    }
+}

+ 17 - 0
app_modular/apputils/src/main/res/layout/acitivty_net_select.xml

@@ -0,0 +1,17 @@
+<?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">
+
+    <com.core.widget.VoiceSearchView
+        android:id="@+id/voiceSearchView"
+        android:layout_width="match_parent"
+        android:layout_height="48dp" />
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/recyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</LinearLayout>

+ 16 - 0
app_modular/apputils/src/main/res/layout/item_select_list.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/selector_me_menu_item_bg"
+    android:padding="8dp">
+    <TextView
+        android:id="@+id/name_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:padding="10dp"
+        android:text="fsdkdlasfkladm"
+        android:textColor="@color/text_main"
+        android:textSize="@dimen/text_main" />
+</RelativeLayout>