Browse Source

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

raomeng 8 years ago
parent
commit
b699bcc59b
28 changed files with 402 additions and 123 deletions
  1. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SelectBean.java
  2. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewLoadActivity.java
  3. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/CustomerAddActivity.java
  4. 13 9
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/ProcessMsgActivity.java
  5. 56 23
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ApprovalActivity.java
  6. 29 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/ApprovalAdapter.java
  7. 29 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/Approval.java
  8. 4 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/ApprovalRecord.java
  9. 165 46
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/ApprovaPresenter.java
  10. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IApproval.java
  11. 11 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CrashLinearLayoutManager.java
  12. BIN
      WeiChat/src/main/res/drawable-hdpi/btn_yuyin_nor.png
  13. BIN
      WeiChat/src/main/res/drawable-hdpi/change_user.png
  14. BIN
      WeiChat/src/main/res/drawable-xhdpi/btn_yuyin_nor.png
  15. BIN
      WeiChat/src/main/res/drawable-xhdpi/change_user.png
  16. 0 0
      WeiChat/src/main/res/drawable-xhdpi/qiehuan2.png
  17. BIN
      WeiChat/src/main/res/drawable-xxhdpi/btn_yuyin_nor.png
  18. BIN
      WeiChat/src/main/res/drawable-xxhdpi/change_user.png
  19. 24 0
      WeiChat/src/main/res/drawable/edit_hint_right_angle.xml
  20. 11 8
      WeiChat/src/main/res/layout/approval_operation.xml
  21. 4 2
      WeiChat/src/main/res/layout/item_approval_node.xml
  22. 8 2
      WeiChat/src/main/res/layout/item_approval_node_tag.xml
  23. 1 0
      WeiChat/src/main/res/layout/item_approval_points.xml
  24. 26 11
      WeiChat/src/main/res/layout/item_approval_rv.xml
  25. 1 1
      WeiChat/src/main/res/layout/item_approval_tag.xml
  26. 11 10
      WeiChat/src/main/res/layout/item_list_pop.xml
  27. 1 0
      WeiChat/src/main/res/values/colors.xml
  28. 1 0
      WeiChat/src/main/res/values/strings.xml

+ 3 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SelectBean.java

@@ -3,6 +3,8 @@ package com.xzjmyk.pm.activity.bean.oa;
 import android.os.Parcel;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.Parcelable;
 
 
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+
 /**
 /**
  * Created by pengminggong on 2016/9/29.
  * Created by pengminggong on 2016/9/29.
  */
  */
@@ -25,7 +27,7 @@ public class SelectBean implements Parcelable {
     }
     }
 
 
     public String getName() {
     public String getName() {
-        return name;
+        return StringUtils.isEmpty(name)?"":name;
     }
     }
 
 
     public void setName(String name) {
     public void setName(String name) {

+ 3 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewLoadActivity.java

@@ -137,7 +137,9 @@ public class WebViewLoadActivity extends BaseActivity {
 
 
         webView.getRefreshableView().setWebViewClient(new WebViewClient() {
         webView.getRefreshableView().setWebViewClient(new WebViewClient() {
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
-                WebViewLoadActivity.this.url=url;
+                if (!StringUtils.isEmpty(url) && url.contains("nodeId=")) {
+                    WebViewLoadActivity.this.url = url;
+                }
                 view.loadUrl(url);
                 view.loadUrl(url);
                 return true;
                 return true;
             }
             }

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

@@ -327,7 +327,6 @@ public class CustomerAddActivity extends BaseActivity implements View.OnClickLis
                     && tv_cu_taxrate.testValidity() && tv_cu_nichestep.testValidity()
                     && tv_cu_taxrate.testValidity() && tv_cu_nichestep.testValidity()
                     ) {
                     ) {
                 //
                 //
-
                 formStore = "{\n" +
                 formStore = "{\n" +
                         " \"cu_nichecode\":" + bc_code + ",\n" +
                         " \"cu_nichecode\":" + bc_code + ",\n" +
                         " \"cu_id\":" + mCuId + ",\n" +
                         " \"cu_id\":" + mCuId + ",\n" +

+ 13 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/ProcessMsgActivity.java

@@ -641,9 +641,9 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                         model.date.setText("");
                         model.date.setText("");
                     }
                     }
                     if (!StringUtils.isEmpty(jn_dealresult)) {
                     if (!StringUtils.isEmpty(jn_dealresult)) {
-                        model.status.setText(jn_dealresult);
                         int statusTextId = R.color.done_approval;
                         int statusTextId = R.color.done_approval;
                         if (jn_dealresult.startsWith("不同意") || jn_dealresult.startsWith("结束流程") || jn_dealresult.startsWith("未通过")) {
                         if (jn_dealresult.startsWith("不同意") || jn_dealresult.startsWith("结束流程") || jn_dealresult.startsWith("未通过")) {
+                            jn_dealresult = "未通过";
                             statusTextId = R.color.red;
                             statusTextId = R.color.red;
                         } else if (jn_dealresult.startsWith("变更处理人")) {
                         } else if (jn_dealresult.startsWith("变更处理人")) {
                             statusTextId = R.color.done_approval;
                             statusTextId = R.color.done_approval;
@@ -653,8 +653,10 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                                 model.status.setText("已变更处理人");
                                 model.status.setText("已变更处理人");
                             }
                             }
                         } else {
                         } else {
-                            statusTextId=  R.color.titleBlue;
+                            jn_dealresult = "已审批";
+                            statusTextId = R.color.titleBlue;
                         }
                         }
+                        model.status.setText(jn_dealresult);
                         model.status.setTextColor(getResources().getColor(statusTextId));
                         model.status.setTextColor(getResources().getColor(statusTextId));
                     } else {
                     } else {
                         model.status.setText("");
                         model.status.setText("");
@@ -689,14 +691,16 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                             if (status.equals("待审批")) {
                             if (status.equals("待审批")) {
                                 model.status.setTextColor(getResources().getColor(R.color.approvaling));
                                 model.status.setTextColor(getResources().getColor(R.color.approvaling));
                                 nodename = nodename == null ? "" : nodename;
                                 nodename = nodename == null ? "" : nodename;
-                                status = "等待" + nodename + "(" + codename + ")" + getString(R.string.approvel);
+                                status = "等待" + nodename
+                                        //+ "(" + codename + ")"
+                                        + getString(R.string.approvel);
                             } else if (status.equals("未通过")) {
                             } else if (status.equals("未通过")) {
                                 model.status.setTextColor(getResources().getColor(R.color.red));
                                 model.status.setTextColor(getResources().getColor(R.color.red));
 //                                status = getString(R.string.Did_not_pass) + nodename + "(" + codename + ")" + getString(R.string.approvel);
 //                                status = getString(R.string.Did_not_pass) + nodename + "(" + codename + ")" + getString(R.string.approvel);
-                                status = "已拒绝";
+//                                status = "已拒绝";
                             } else if (status.equals("已审批")) {
                             } else if (status.equals("已审批")) {
                                 model.status.setTextColor(getResources().getColor(R.color.titleBlue));
                                 model.status.setTextColor(getResources().getColor(R.color.titleBlue));
-                                status = "已同意";
+//                                status = "已同意";
                             }
                             }
                         } else {
                         } else {
                             status = " ";
                             status = " ";
@@ -716,13 +720,13 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
 
 
                         model.JP_NODEID = JP_NODEID;
                         model.JP_NODEID = JP_NODEID;
                         //设置显示审批人头像
                         //设置显示审批人头像
-                        model.imid.setVisibility(View.GONE);
-                        model.meimid.setVisibility(View.VISIBLE);
+                        model.imid.setVisibility(View.VISIBLE);
+                        model.meimid.setVisibility(View.GONE);
                         if (me_emid != -1) {
                         if (me_emid != -1) {
-                            AvatarHelper.getInstance().display(me_emid + "", model.meimid, true, false);//显示圆角图片
+                            AvatarHelper.getInstance().display(me_emid + "", model.imid, true, false);//显示圆角图片
                         } else {
                         } else {
                             String imageUri = "drawable://" + R.drawable.common_header_boy;
                             String imageUri = "drawable://" + R.drawable.common_header_boy;
-                            AvatarHelper.getInstance().display(imageUri, model.meimid, true);
+                            AvatarHelper.getInstance().display(imageUri, model.imid, true);
                         }
                         }
                     }
                     }
                     break;
                     break;

+ 56 - 23
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ApprovalActivity.java

@@ -69,6 +69,7 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
 
 
     private ApprovaPresenter mPresenter;
     private ApprovaPresenter mPresenter;
     private ApprovalAdapter mAdapter;
     private ApprovalAdapter mAdapter;
+    private boolean isApprove;
 
 
     @Override
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
     public boolean onOptionsItemSelected(MenuItem item) {
@@ -109,24 +110,28 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
 
 
     @Override
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (requestCode == 0x20) {
-            if (data==null){
-                mPresenter.updateAssignee(null, OACheckUtil.getText(opinionET));
-            }else{
-                SelectEmUser user = data.getParcelableExtra("data");
-                if (user != null && !StringUtils.isEmpty(user.getEmCode())) {
-                    mPresenter.updateAssignee(user.getEmCode(), OACheckUtil.getText(opinionET));
-                }
+        if (data != null && requestCode == 0x20) {
+            SelectEmUser user = data.getParcelableExtra("data");
+            if (user != null && !StringUtils.isEmpty(user.getEmCode())) {
+                mPresenter.updateAssignee(user.getEmCode(), OACheckUtil.getText(opinionET));
+            }
+        } else if (0x22 == requestCode || 0x21 == requestCode) {
+            String name = null;
+            if (data != null) {
+                SelectBean d = data.getParcelableExtra("data");
+                name = d.getName();
             }
             }
-
-        } else if (data != null && (0x22 == requestCode || 0x21 == requestCode)) {
-            SelectBean d = data.getParcelableExtra("data");
-            if (d == null) return;
-            String name = StringUtils.isEmpty(d.getName()) ? "" : d.getName();
             if (0x21 == requestCode) {
             if (0x21 == requestCode) {
-                getEmnameByReturn(name);
-            } else {
-                if (name.equals("回退发起人")) {
+                if (!StringUtils.isEmpty(name)) {
+                    getEmnameByReturn(name);
+                } else {
+                    mPresenter.loadNextProcess();
+                }
+            } else if (0x22 == requestCode) {
+                if (StringUtils.isEmpty(name)) {
+                    name = "回退给制单人";
+                }
+                if (name.equals("回退给制单人")) {
                     name = "RECORDER";
                     name = "RECORDER";
                 }
                 }
                 mPresenter.disAgree(OACheckUtil.getText(opinionET), name);
                 mPresenter.disAgree(OACheckUtil.getText(opinionET), name);
@@ -169,6 +174,9 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
             getSupportActionBar().setTitle(title);
             getSupportActionBar().setTitle(title);
             if (getString(R.string.title_approval).equals(title)) {
             if (getString(R.string.title_approval).equals(title)) {
                 opinionRL.setVisibility(View.VISIBLE);
                 opinionRL.setVisibility(View.VISIBLE);
+                if (isApprove) {
+                    findViewById(R.id.disagreeTV).setVisibility(View.GONE);
+                }
             } else {
             } else {
                 opinionRL.setVisibility(View.GONE);
                 opinionRL.setVisibility(View.GONE);
             }
             }
@@ -269,9 +277,11 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
             String emcode = CommonUtil.getEmcode();
             String emcode = CommonUtil.getEmcode();
             if (nodeDealMan.contains(emcode)) {
             if (nodeDealMan.contains(emcode)) {
                 findViewById(R.id.changedealmanTV).setVisibility(View.GONE);
                 findViewById(R.id.changedealmanTV).setVisibility(View.GONE);
-                findViewById(R.id.disagreeTV).setVisibility(View.VISIBLE);
                 findViewById(R.id.agreeTV).setVisibility(View.VISIBLE);
                 findViewById(R.id.agreeTV).setVisibility(View.VISIBLE);
                 findViewById(R.id.takeOverTV).setVisibility(View.GONE);
                 findViewById(R.id.takeOverTV).setVisibility(View.GONE);
+                if (!isApprove) {
+                    findViewById(R.id.disagreeTV).setVisibility(View.VISIBLE);
+                }
             } else {
             } else {
                 opinionRL.setVisibility(View.GONE);
                 opinionRL.setVisibility(View.GONE);
             }
             }
@@ -296,7 +306,12 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         findViewById(R.id.takeOverTV).setVisibility(View.GONE);
         findViewById(R.id.takeOverTV).setVisibility(View.GONE);
         opinionRL.setVisibility(View.GONE);
         opinionRL.setVisibility(View.GONE);
         opinionET.setText("");
         opinionET.setText("");
-        mAdapter = null;
+        isApprove = false;
+        findViewById(R.id.disagreeTV).setVisibility(View.VISIBLE);
+        if (mAdapter != null) {
+            mAdapter.setApprovals(null);
+            mAdapter.notifyDataSetChanged();
+        }
     }
     }
 
 
     @Override
     @Override
@@ -310,16 +325,34 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
                         finish();
                         finish();
                         dialog.dismiss();
                         dialog.dismiss();
                     }
                     }
-                }).show();
+                })
+                .positiveText(R.string.load_tonext_approval)
+                .callback(new MaterialDialog.ButtonCallback() {
+                    @Override
+                    public void onPositive(MaterialDialog dialog) {
+                        mPresenter.loadNextProcess();
+                    }
+                })
+                .show();
     }
     }
 
 
     @Override
     @Override
     public void showOpinion() {
     public void showOpinion() {
         if (mPresenter.isApprovaling()) {
         if (mPresenter.isApprovaling()) {
             opinionRL.setVisibility(View.VISIBLE);
             opinionRL.setVisibility(View.VISIBLE);
+            if (isApprove) {
+                findViewById(R.id.disagreeTV).setVisibility(View.GONE);
+            }
         }
         }
     }
     }
 
 
+
+    @Override
+    public void isApprove(boolean isApprove) {
+        this.isApprove = isApprove;
+        findViewById(R.id.disagreeTV).setVisibility(View.GONE);
+    }
+
     public void hineOpinion() {
     public void hineOpinion() {
         if (mPresenter.isApprovaling()) {
         if (mPresenter.isApprovaling()) {
             opinionRL.setVisibility(View.GONE);
             opinionRL.setVisibility(View.GONE);
@@ -349,7 +382,7 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         }
         }
         if (requestCode == 0x22) {
         if (requestCode == 0x22) {
             bean = new SelectBean();
             bean = new SelectBean();
-            bean.setName("回退发起人");
+            bean.setName("回退给制单人");
             beans.add(0, bean);
             beans.add(0, bean);
         }
         }
         Intent intent = new Intent(ct, SelectActivity.class);
         Intent intent = new Intent(ct, SelectActivity.class);
@@ -370,13 +403,13 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         View view = LayoutInflater.from(ct).inflate(R.layout.item_list_pop, null);
         View view = LayoutInflater.from(ct).inflate(R.layout.item_list_pop, null);
         window.setContentView(view);
         window.setContentView(view);
         ListView contentLV = (ListView) view.findViewById(R.id.contentLV);
         ListView contentLV = (ListView) view.findViewById(R.id.contentLV);
-        final String[] messages = {"非常好", "(赞)", "再接再厉", "加油"};
+        final String[] messages = {"赞", "OK", "加油", "好的", "请及时完成"};
         contentLV.setAdapter(new PopListAdapter(messages));
         contentLV.setAdapter(new PopListAdapter(messages));
         window.setTouchable(true);
         window.setTouchable(true);
         window.setBackgroundDrawable(ct.getResources().getDrawable(R.drawable.pop_round_bg));
         window.setBackgroundDrawable(ct.getResources().getDrawable(R.drawable.pop_round_bg));
         window.getContentView().measure(0, 0);
         window.getContentView().measure(0, 0);
-        window.setHeight(DisplayUtil.dip2px(this, 190));
-        window.setWidth(DisplayUtil.dip2px(this, 85));
+        window.setHeight(DisplayUtil.dip2px(this, 230));
+        window.setWidth(DisplayUtil.dip2px(this, 100));
 //        window.setAnimationStyle(R.style.MenuAnimationFade);
 //        window.setAnimationStyle(R.style.MenuAnimationFade);
         window.setOutsideTouchable(false);
         window.setOutsideTouchable(false);
         window.setFocusable(true);
         window.setFocusable(true);

+ 29 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/ApprovalAdapter.java

@@ -1,6 +1,7 @@
 package com.xzjmyk.pm.activity.ui.erp.adapter.oa;
 package com.xzjmyk.pm.activity.ui.erp.adapter.oa;
 
 
 import android.content.Intent;
 import android.content.Intent;
+import android.graphics.Paint;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.RecyclerView;
 import android.text.Editable;
 import android.text.Editable;
 import android.text.Html;
 import android.text.Html;
@@ -138,9 +139,13 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
         holder.historyTV.setOnClickListener(listener);
         holder.historyTV.setOnClickListener(listener);
         holder.nodeTv.setOnClickListener(listener);
         holder.nodeTv.setOnClickListener(listener);
         if (approvals.get(position).isNeerInput()) {
         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.nodeTag.setVisibility(View.GONE);
             holder.historyTag.setVisibility(View.VISIBLE);
             holder.historyTag.setVisibility(View.VISIBLE);
         } else {
         } 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.nodeTag.setVisibility(View.VISIBLE);
             holder.historyTag.setVisibility(View.GONE);
             holder.historyTag.setVisibility(View.GONE);
         }
         }
@@ -273,7 +278,12 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
                     }
                     }
                 }
                 }
             }
             }
-            holder.nameTv.setText(name);
+            if (!StringUtils.isEmpty(name)) {
+                holder.nameTv.setVisibility(View.VISIBLE);
+                holder.nameTv.setText(name);
+            } else {
+                holder.nameTv.setVisibility(View.GONE);
+            }
         }
         }
     }
     }
 
 
@@ -316,6 +326,7 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
     private void bindBaseRVView(final BaseRVViewHodler holder, final int position) {
     private void bindBaseRVView(final BaseRVViewHodler holder, final int position) {
         final Approval approval = approvals.get(position);
         final Approval approval = approvals.get(position);
         holder.captionTV.setText(approval.getCaption());
         holder.captionTV.setText(approval.getCaption());
+        holder.oldValueTv.setVisibility(View.GONE);
         if (!StringUtils.isEmpty(approval.getValues())) {
         if (!StringUtils.isEmpty(approval.getValues())) {
             if (holder.valueTv.getVisibility() == View.VISIBLE) {
             if (holder.valueTv.getVisibility() == View.VISIBLE) {
                 holder.valueTv.setText(approval.getValues());
                 holder.valueTv.setText(approval.getValues());
@@ -371,15 +382,25 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
             } else {
             } else {
                 setViewShowAble(true, holder.valueTv);
                 setViewShowAble(true, holder.valueTv);
                 setViewShowAble(false, holder.valueEt, holder.valueWeb);
                 setViewShowAble(false, holder.valueEt, holder.valueWeb);
-                if (approval.isNumber()) {
-                    holder.valueTv.setText(approval.getNumber());
+                if (!StringUtils.isEmpty(approval.getOldValues())) {//存在变更
+                    holder.oldValueTv.setVisibility(View.VISIBLE);
+                    holder.oldValueTv.setText(approval.getOldValues());
+                    holder.valueTv.setText(getOldValues(approval.getOldValues(), approval.getValues()));
                 } else {
                 } else {
-                    holder.valueTv.setText(Html.fromHtml(approval.getValues()));
+                    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) {
     private boolean isWeb(String values) {
         return values != null && values.length() > 100 && values.contains("<br>");
         return values != null && values.length() > 100 && values.contains("<br>");
     }
     }
@@ -539,6 +560,7 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
 
 
     private class BaseRVViewHodler extends BaseViewHolder {
     private class BaseRVViewHodler extends BaseViewHolder {
         WebView valueWeb;
         WebView valueWeb;
+        TextView oldValueTv;
 
 
         public BaseRVViewHodler(ViewGroup parent) {
         public BaseRVViewHodler(ViewGroup parent) {
             this(LayoutInflater.from(ct).inflate(R.layout.item_approval_rv, parent, false));
             this(LayoutInflater.from(ct).inflate(R.layout.item_approval_rv, parent, false));
@@ -547,6 +569,9 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
         public BaseRVViewHodler(View itemView) {
         public BaseRVViewHodler(View itemView) {
             super(itemView);
             super(itemView);
             valueWeb = (WebView) itemView.findViewById(R.id.valueWeb);
             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);// 抗锯齿
         }
         }
     }
     }
 
 

+ 29 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/Approval.java

@@ -39,6 +39,7 @@ public class Approval {
     private String dfType;//返回的字段类型
     private String dfType;//返回的字段类型
     private String caption = "";//字幕,表示备注
     private String caption = "";//字幕,表示备注
     private String values = "";//字幕对应的值显示
     private String values = "";//字幕对应的值显示
+    private String oldValues = "";//变更前的值
     private String valuesKey = "";//字幕对应的值显示的key值
     private String valuesKey = "";//字幕对应的值显示的key值
     private List<Data> datas = new ArrayList<>();
     private List<Data> datas = new ArrayList<>();
 
 
@@ -46,6 +47,17 @@ public class Approval {
         this.type = type;
         this.type = type;
     }
     }
 
 
+    public String getOldValues() {
+        return oldValues;
+    }
+
+    public void setOldValues(String oldValues) {
+        if (StringUtils.isEmpty(oldValues)) {
+            oldValues = "内容为空";
+        }
+        this.oldValues = oldValues;
+    }
+
     public boolean isNeerInput() {
     public boolean isNeerInput() {
         return neerInput;
         return neerInput;
     }
     }
@@ -190,18 +202,30 @@ public class Approval {
     }
     }
 
 
     public void data2Values() {
     public void data2Values() {
-        if (dfType.equals("D") && values.endsWith("00:00:00")) {
-            long time = TimeUtils.f_str_2_long(values);
-            if (time > 0) {
-                values = TimeUtils.s_long_2_str(time);
+        if (dfType.equals("D")) {
+            if (values.endsWith("00:00:00")) {
+                long time = TimeUtils.f_str_2_long(values);
+                if (time > 0) {
+                    values = TimeUtils.s_long_2_str(time);
+                }
+            }
+            if (!StringUtils.isEmpty(oldValues) && oldValues.endsWith("00:00:00")) {
+                long time = TimeUtils.f_str_2_long(oldValues);
+                if (time > 0) {
+                    oldValues = TimeUtils.s_long_2_str(time);
+                }
             }
             }
         } else if ("C".equals(dfType) || "YN".equals(dfType)) {
         } else if ("C".equals(dfType) || "YN".equals(dfType)) {
             if (values.equals("-1")) values = "是";
             if (values.equals("-1")) values = "是";
             else if (values.equals("0")) values = "否";
             else if (values.equals("0")) values = "否";
+            if (oldValues.equals("-1")) oldValues = "是";
+            else if (oldValues.equals("0")) oldValues = "否";
 
 
         } else if ("B".equals(dfType)) {
         } else if ("B".equals(dfType)) {
             if (values.equals("1")) values = "是";
             if (values.equals("1")) values = "是";
             else values = "否";
             else values = "否";
+            if (oldValues.equals("1")) oldValues = "是";
+            else oldValues = "否";
         }
         }
     }
     }
 
 
@@ -247,6 +271,7 @@ public class Approval {
         map.put("type", type);
         map.put("type", type);
         map.put("dfType", dfType);
         map.put("dfType", dfType);
         map.put("caption", caption);
         map.put("caption", caption);
+        map.put("oldValues", oldValues);
         map.put("values", values);
         map.put("values", values);
         map.put("valuesKey", valuesKey);
         map.put("valuesKey", valuesKey);
         LogUtil.i(StringUtils.mapToJson(map));
         LogUtil.i(StringUtils.mapToJson(map));

+ 4 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/ApprovalRecord.java

@@ -22,7 +22,11 @@ public class ApprovalRecord {
     public String showNeedMessage = "";//保存必填字段时候,,没有填写时候提示信息
     public String showNeedMessage = "";//保存必填字段时候,,没有填写时候提示信息
     public String processInstanceId = "";
     public String processInstanceId = "";
     public String caller = "";
     public String caller = "";
+    public String callerName = "";
 
 
+    public String getCallerName() {
+        return callerName.replace("流程", "");
+    }
 
 
     @Override
     @Override
     public String toString() {
     public String toString() {

+ 165 - 46
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/ApprovaPresenter.java

@@ -68,11 +68,21 @@ public class ApprovaPresenter implements OnHttpResultListener {
     public String chchePoints = "";//审批要点缓存
     public String chchePoints = "";//审批要点缓存
     private String title;
     private String title;
     private String master;
     private String master;
-    private List<Approval> approvals;
+
+//    private List<Approval> approvals;
 
 
     private List<Approval> hineApprovals;//隐藏字段
     private List<Approval> hineApprovals;//隐藏字段
     private List<Approval> showApprovals;//显示字段
     private List<Approval> showApprovals;//显示字段
-    private List<Approval> historyNodes;
+
+    private List<Approval> historyNodes;//历史审批
+
+    //TODO
+    private Approval titleApproval;
+    private List<Approval> mainDetailList;//主从表
+    private List<Approval> setuptasList;//历史审批要点
+    private List<Approval> enclosureList;//附件
+    private List<Approval> nodeList;//审批节点
+    private List<Approval> pointsList;//要点
 
 
     private boolean submit, loading, endActivity;
     private boolean submit, loading, endActivity;
 
 
@@ -143,7 +153,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         List<String> list = new ArrayList<>();
         List<String> list = new ArrayList<>();
         if (record.isForknode && !ListUtils.isEmpty(historyNodes)) {
         if (record.isForknode && !ListUtils.isEmpty(historyNodes)) {
             for (Approval a : historyNodes) {
             for (Approval a : historyNodes) {
-                if (a.getIdKey().startsWith("同意") && a.isNeerInput()) {
+                if (a.isMustInput() && a.isNeerInput()) {
                     list.add(a.getValuesKey());
                     list.add(a.getValuesKey());
                 }
                 }
             }
             }
@@ -159,10 +169,14 @@ public class ApprovaPresenter implements OnHttpResultListener {
         initLoad(record.nodeId);
         initLoad(record.nodeId);
     }
     }
 
 
-
     private void initLoad(int nodeId) {
     private void initLoad(int nodeId) {
         record = new ApprovalRecord();
         record = new ApprovalRecord();
-        approvals = new ArrayList<>();
+        titleApproval = new Approval(Approval.TITLE);
+        mainDetailList = new ArrayList<>();//主从表
+        setuptasList = new ArrayList<>();//历史审批要点
+        enclosureList = new ArrayList<>();//附件
+        nodeList = new ArrayList<>();//审批节点
+        pointsList = new ArrayList<>();//要点
         hineApprovals = new ArrayList<>();
         hineApprovals = new ArrayList<>();
         showApprovals = new ArrayList<>();
         showApprovals = new ArrayList<>();
         historyNodes = null;
         historyNodes = null;
@@ -270,6 +284,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
 
 
     /*同意 submiting end loadProcessUpdate*/
     /*同意 submiting end loadProcessUpdate*/
     private void agree(String nodeLog) {
     private void agree(String nodeLog) {
+        LogUtil.i("agree");
         iApproval.showLoading();
         iApproval.showLoading();
         String points = OACheckUtil.getString(chchePoints);
         String points = OACheckUtil.getString(chchePoints);
         points.replaceAll("@", "").replaceAll("\\@", "").replaceAll("\\\\@", "");
         points.replaceAll("@", "").replaceAll("\\@", "").replaceAll("\\\\@", "");
@@ -295,6 +310,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
 
 
     //结束流程
     //结束流程
     private void loadEndProcess() {
     private void loadEndProcess() {
+        LogUtil.i("loadEndProcess");
         //结束流程接口部分
         //结束流程接口部分
 //        String url = "common/endProcessInstance.action";
 //        String url = "common/endProcessInstance.action";
 //        Map<String, Object> param = new HashMap<>();
 //        Map<String, Object> param = new HashMap<>();
@@ -302,7 +318,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
 //        param.put("holdtime", 435);
 //        param.put("holdtime", 435);
 //        param.put("nodeId", record.nodeId);
 //        param.put("nodeId", record.nodeId);
 //        param.put("master", master);
 //        param.put("master", master);
-        if (!canSubmit()) return;
         iApproval.showLoading();
         iApproval.showLoading();
         String url = "common/review.action";
         String url = "common/review.action";
         Map<String, Object> param = new HashMap<>();
         Map<String, Object> param = new HashMap<>();
@@ -539,12 +554,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
     public void error(int what, String message, Bundle bundle) {
     public void error(int what, String message, Bundle bundle) {
         if (endActivity) return;
         if (endActivity) return;
         iApproval.dimssLoading();
         iApproval.dimssLoading();
+        LogUtil.i("message=" + message);
         switch (what) {
         switch (what) {
             case LOAD_AGREE:
             case LOAD_AGREE:
                 if (message.contains("程序错误")) {
                 if (message.contains("程序错误")) {
                     loadEndProcess();
                     loadEndProcess();
-//                    disAgree("流程异常,结束流程", null);
-                }
+                } break;
             case LOAD_TAKE_OVER:  /*提交部分*/
             case LOAD_TAKE_OVER:  /*提交部分*/
             case LOAD_PROCESS_UPDATE:
             case LOAD_PROCESS_UPDATE:
             case LOAD_NEXT_STEPOFP_INSTANCE:
             case LOAD_NEXT_STEPOFP_INSTANCE:
@@ -689,7 +704,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 iApproval.nodeDealMan(nodeDealMan);
                 iApproval.nodeDealMan(nodeDealMan);
                 String nodeName = getJson2Text(currentnode, "jp_nodeName");
                 String nodeName = getJson2Text(currentnode, "jp_nodeName");
                 int keyValue = getJsonIntager(currentnode, "jp_keyValue");
                 int keyValue = getJsonIntager(currentnode, "jp_keyValue");
-                record.title = getJson2Text(currentnode, "jp_name");
+                record.title = record.callerName = getJson2Text(currentnode, "jp_name");
                 record.status = OACheckUtil.getJson2Text(currentnode, "jp_status");
                 record.status = OACheckUtil.getJson2Text(currentnode, "jp_status");
                 String caller = OACheckUtil.getJson2Text(currentnode, "jp_caller");
                 String caller = OACheckUtil.getJson2Text(currentnode, "jp_caller");
                 if (keyValue != 0) {
                 if (keyValue != 0) {
@@ -727,11 +742,14 @@ public class ApprovaPresenter implements OnHttpResultListener {
             //计算主表
             //计算主表
             JSONArray formdatas = OACheckUtil.getJsonArray(object, "formdata");
             JSONArray formdatas = OACheckUtil.getJsonArray(object, "formdata");
             JSONArray formconfigs = OACheckUtil.getJsonArray(object, "formconfigs");
             JSONArray formconfigs = OACheckUtil.getJsonArray(object, "formconfigs");
+            List<Approval> mainDetailList = new ArrayList<>();
             if (!ListUtils.isEmpty(formconfigs)) {
             if (!ListUtils.isEmpty(formconfigs)) {
                 final JSONObject formdata = ListUtils.isEmpty(formdatas) ? null : formdatas.getJSONObject(0);
                 final JSONObject formdata = ListUtils.isEmpty(formdatas) ? null : formdatas.getJSONObject(0);
+                final JSONObject changeData = ListUtils.getSize(formdatas) <= 1 ? null : formdatas.getJSONObject(1);
                 if (!ListUtils.isEmpty(formconfigs)) {
                 if (!ListUtils.isEmpty(formconfigs)) {
-                    final List<Approval> mainApproval = formandGriddata(formdata, formconfigs, record.caller, true, true);
-                    setData2ListThread(Approval.MAIN, mainApproval);
+                    final List<Approval> mainApproval = formandGriddata(OACheckUtil.getJSONObject(changeData, "change-new"), formdata, formconfigs, record.caller, true, true);
+                    mainDetailList.addAll(mainApproval);
+                    // TODO   setData2ListThread(Approval.MAIN, mainApproval);
                 }
                 }
             }
             }
             //计算从表
             //计算从表
@@ -740,16 +758,16 @@ public class ApprovaPresenter implements OnHttpResultListener {
             final List<Approval> detailedList = new ArrayList<>();
             final List<Approval> detailedList = new ArrayList<>();
             if (!ListUtils.isEmpty(gridconfigs)) {
             if (!ListUtils.isEmpty(gridconfigs)) {
                 if (ListUtils.isEmpty(griddatas)) {
                 if (ListUtils.isEmpty(griddatas)) {
-                    formandGriddata(null, gridconfigs, record.caller, false, true);
+                    formandGriddata(null, null, gridconfigs, record.caller, false, true);
                 } else {
                 } else {
                     for (int i = 0; i < griddatas.size(); i++) {
                     for (int i = 0; i < griddatas.size(); i++) {
                         //获取到单个明细表单
                         //获取到单个明细表单
-                        final List<Approval> detailedApproval = formandGriddata(griddatas.getJSONObject(i),
+                        final List<Approval> detailedApproval = formandGriddata(null, griddatas.getJSONObject(i),
                                 gridconfigs, record.caller,
                                 gridconfigs, record.caller,
                                 false, i == 0);
                                 false, i == 0);
                         if (!ListUtils.isEmpty(detailedApproval)) {
                         if (!ListUtils.isEmpty(detailedApproval)) {
                             Approval approval = new Approval(Approval.TAG);
                             Approval approval = new Approval(Approval.TAG);
-                            approval.setCaption(getString(R.string.serial_number) + (i + 1));
+                            approval.setCaption(i == 0 ? record.getCallerName() + " 明细" : "");
                             detailedApproval.add(0, approval);
                             detailedApproval.add(0, approval);
                             detailedList.addAll(detailedApproval);
                             detailedList.addAll(detailedApproval);
                         }
                         }
@@ -773,10 +791,10 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     if (!ListUtils.isEmpty(otherGriddata) && !ListUtils.isEmpty(otherGridconfigs)) {
                     if (!ListUtils.isEmpty(otherGriddata) && !ListUtils.isEmpty(otherGridconfigs)) {
                         for (int j = 0; j < otherGriddata.size(); j++) {
                         for (int j = 0; j < otherGriddata.size(); j++) {
                             //获取到单个明细表单
                             //获取到单个明细表单
-                            final List<Approval> detailedApproval = formandGriddata(otherGriddata.getJSONObject(j), otherGridconfigs, caller, false, false);
+                            final List<Approval> detailedApproval = formandGriddata(null, otherGriddata.getJSONObject(j), otherGridconfigs, caller, false, false);
                             if (!ListUtils.isEmpty(detailedApproval)) {
                             if (!ListUtils.isEmpty(detailedApproval)) {
                                 Approval approval = new Approval(Approval.TAG);
                                 Approval approval = new Approval(Approval.TAG);
-                                approval.setCaption(name + " " + getString(R.string.serial_number) + (j + 1));
+                                approval.setCaption(j == 0 ? name + " 明细" : "");
                                 detailedApproval.add(0, approval);
                                 detailedApproval.add(0, approval);
                                 detailedList.addAll(detailedApproval);
                                 detailedList.addAll(detailedApproval);
                             }
                             }
@@ -784,7 +802,10 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     }
                     }
                 }
                 }
             }
             }
-            setData2ListThread(DETAIL, detailedList);
+            mainDetailList.addAll(detailedList);
+            ApprovaPresenter.this.mainDetailList = mainDetailList;
+            //TODO
+            setData2ListThread();
             OAHttpHelper.getInstance().post(new Runnable() {
             OAHttpHelper.getInstance().post(new Runnable() {
                 @Override
                 @Override
                 public void run() {
                 public void run() {
@@ -801,7 +822,8 @@ public class ApprovaPresenter implements OnHttpResultListener {
     }
     }
 
 
     //TODO 1.隐藏字段明细表重复 2.不该显示字段被显示
     //TODO 1.隐藏字段明细表重复 2.不该显示字段被显示
-    private List<Approval> formandGriddata(final JSONObject data,
+    private List<Approval> formandGriddata(final JSONObject changeData,
+                                           final JSONObject data,
                                            final JSONArray configs,
                                            final JSONArray configs,
                                            String caller,
                                            String caller,
                                            boolean isMain,
                                            boolean isMain,
@@ -824,12 +846,20 @@ public class ApprovaPresenter implements OnHttpResultListener {
             approval.setValuesKey(valueKey);
             approval.setValuesKey(valueKey);
             int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
             int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
             int appwidth = OACheckUtil.getJsonIntager(config, "FD_APPWIDTH", "DG_APPWIDTH");
             int appwidth = OACheckUtil.getJsonIntager(config, "FD_APPWIDTH", "DG_APPWIDTH");
+            boolean showAble = data != null && data.containsKey(valueKey);
+            String values = OACheckUtil.getJson2Text(data, valueKey);
+            String newValues = OACheckUtil.getJson2Text(changeData, valueKey);
+            if (showAble && !StringUtils.isEmpty(newValues) && !newValues.equals(values)) {
+                approval.setOldValues(values);
+            } else {
+                newValues = values;
+            }
             if (isMain && approval.isDftypeEQ("MF")) {
             if (isMain && approval.isDftypeEQ("MF")) {
-                final String fb_attach = valueKey;
+                final String fb_attach = newValues;
                 OAHttpHelper.getInstance().post(new Runnable() {
                 OAHttpHelper.getInstance().post(new Runnable() {
                     @Override
                     @Override
                     public void run() {
                     public void run() {
-                        loadFilePaths(OACheckUtil.getJson2Text(data, fb_attach));
+                        loadFilePaths(fb_attach);
                     }
                     }
                 });
                 });
                 continue;
                 continue;
@@ -845,10 +875,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     || (!isMain && OACheckUtil.getJsonIntager(config, "DG_WIDTH") == 0)) {
                     || (!isMain && OACheckUtil.getJsonIntager(config, "DG_WIDTH") == 0)) {
                 continue;
                 continue;
             }
             }
-            boolean showAble = data != null && data.containsKey(valueKey);
             if (!OACheckUtil.isEmpty(caption)) {
             if (!OACheckUtil.isEmpty(caption)) {
                 if (showAble) {
                 if (showAble) {
-                    approval.setValues(OACheckUtil.getJson2Text(data, valueKey)); //获取第一个字段的值
+                    approval.setValues(newValues); //获取第一个字段的值
                     if (addHint) {
                     if (addHint) {
                         showApprovals.add(approval);
                         showApprovals.add(approval);
                     }
                     }
@@ -904,10 +933,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
             approval.setCaller(caller);
             approval.setCaller(caller);
             approvals.add(approval);
             approvals.add(approval);
         }
         }
-        for (
-                Approval approval : approvals)
-
-        {
+        for (Approval approval : approvals) {
             approval.setId(id);
             approval.setId(id);
             approval.setIdKey(idTag);
             approval.setIdKey(idTag);
         }
         }
@@ -930,7 +956,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 nodeApprovals.add(getNodeApproval(node));
                 nodeApprovals.add(getNodeApproval(node));
             }
             }
             if (!ListUtils.isEmpty(setuptasks)) {
             if (!ListUtils.isEmpty(setuptasks)) {
-                setData2ListThread(DETAIL, setuptasks);
+                ApprovaPresenter.this.setuptasList = setuptasks;
+                //TODO   setData2ListThread(DETAIL, setuptasks);
+                setData2ListThread();
             }
             }
         }
         }
         return nodeApprovals;
         return nodeApprovals;
@@ -958,6 +986,8 @@ public class ApprovaPresenter implements OnHttpResultListener {
         String description = OACheckUtil.getJson2Text(object, "jn_nodeDescription");//审批意见
         String description = OACheckUtil.getJson2Text(object, "jn_nodeDescription");//审批意见
         Approval approval = new Approval(Approval.NODES);
         Approval approval = new Approval(Approval.NODES);
         approval.setNeerInput("T".equals(attach));
         approval.setNeerInput("T".equals(attach));
+        approval.setMustInput(result.equals("同意"));
+        result = setNodeStatus(result);
         approval.setCaption(manName);
         approval.setCaption(manName);
         approval.setDfType(emCode);
         approval.setDfType(emCode);
         if (!StringUtils.isEmpty(dealTime)) {
         if (!StringUtils.isEmpty(dealTime)) {
@@ -1007,15 +1037,24 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     showNode = false;
                     showNode = false;
                     approvals = historyNodes;
                     approvals = historyNodes;
                 }
                 }
-                if (!ListUtils.isEmpty(processs)) {
+                if (showNode && !ListUtils.isEmpty(processs)) {
                     mergeNode(processs, approvals, false);
                     mergeNode(processs, approvals, false);
                 }
                 }
-                if (!ListUtils.isEmpty(nodes)) {
+                if (showNode && !ListUtils.isEmpty(nodes)) {
                     mergeNode(nodes, approvals, true);
                     mergeNode(nodes, approvals, true);
                 }
                 }
                 boolean hanNotApproval = false;
                 boolean hanNotApproval = false;
+                /**
+                 * 已审批
+                 * 未通过
+                 * 已结束
+                 * 待审批
+                 */
                 for (Approval a : approvals) {
                 for (Approval a : approvals) {
-                    if (!a.getIdKey().startsWith("已审批")) {
+                    if (!a.getIdKey().startsWith("已审批")
+                            && !a.getIdKey().startsWith("未通过")
+                            && !a.getIdKey().startsWith("不同意")
+                            && !a.getIdKey().startsWith("已结束")) {
                         hanNotApproval = true;
                         hanNotApproval = true;
                         if (a.getIdKey().startsWith("待审批"))
                         if (a.getIdKey().startsWith("待审批"))
                             a.setValues("");
                             a.setValues("");
@@ -1035,13 +1074,21 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     }
                     }
                 }
                 }
                 int reId = -1;
                 int reId = -1;
+
+                if (showNode) {
+                    if ("未通过".equals(record.status) || "已结束".equals(record.status) || "已审批".equals(record.status)) {
+                        showNode = false;
+                        approvals = historyNodes;
+                    }
+//                    else if (!hanNotApproval && !ListUtils.isEmpty(historyNodes))){
+//                        showNode = false;
+//                        approvals = historyNodes;
+//                    }
+                }
+
                 if ("未通过".equals(record.status) || "已结束".equals(record.status)) {
                 if ("未通过".equals(record.status) || "已结束".equals(record.status)) {
                     reId = R.drawable.unapproved;
                     reId = R.drawable.unapproved;
                 } else if (!hanNotApproval && !isApprovaling()) {//没有未审批的数据
                 } else if (!hanNotApproval && !isApprovaling()) {//没有未审批的数据
-                    showNode = false;
-                    if (!ListUtils.isEmpty(historyNodes)) {
-                        approvals = historyNodes;
-                    }
                     reId = R.drawable.approved;
                     reId = R.drawable.approved;
                 }
                 }
                 handerTitle(reId);
                 handerTitle(reId);
@@ -1049,7 +1096,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     Approval nodeTag = new Approval(Approval.NODES_TAG);
                     Approval nodeTag = new Approval(Approval.NODES_TAG);
                     approvals.add(0, nodeTag);
                     approvals.add(0, nodeTag);
                 }
                 }
-                setData2ListThread(Approval.NODES, approvals);
+                ApprovaPresenter.this.nodeList = approvals;
+                //TODO  setData2ListThread(Approval.NODES, approvals);
+                setData2ListThread();
                 loading = false;
                 loading = false;
             }
             }
         });
         });
@@ -1063,17 +1112,18 @@ public class ApprovaPresenter implements OnHttpResultListener {
             approval.setIdKey(record.imid);
             approval.setIdKey(record.imid);
         if (reId > 0)
         if (reId > 0)
             approval.setId(reId);
             approval.setId(reId);
-        final List<Approval> titleApproval = new ArrayList<>();
-        titleApproval.add(approval);
+        titleApproval = approval;
+//        final List<Approval> titleApproval = new ArrayList<>();
+//        titleApproval.add(approval);
         if (Looper.getMainLooper() == Looper.myLooper()) {
         if (Looper.getMainLooper() == Looper.myLooper()) {
             ThreadUtil.getInstance().addTask(new Runnable() {
             ThreadUtil.getInstance().addTask(new Runnable() {
                 @Override
                 @Override
                 public void run() {
                 public void run() {
-                    setData2ListThread(Approval.TITLE, titleApproval);
+                    setData2ListThread();
                 }
                 }
             });
             });
         } else {
         } else {
-            setData2ListThread(Approval.TITLE, titleApproval);
+            setData2ListThread();
         }
         }
     }
     }
 
 
@@ -1098,27 +1148,64 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     Approval tag = new Approval(Approval.TAG);
                     Approval tag = new Approval(Approval.TAG);
                     tag.setCaption("附件");
                     tag.setCaption("附件");
                     enclosureList.add(0, tag);
                     enclosureList.add(0, tag);
-                    setData2ListThread(Approval.ENCLOSURE, enclosureList);
+                    ApprovaPresenter.this.enclosureList = enclosureList;
+                    //TODO setData2ListThread(Approval.ENCLOSURE, enclosureList);
+                    setData2ListThread();
                 }
                 }
             }
             }
         });
         });
     }
     }
 
 
+    private boolean equalsOne(String text, String... str) {
+        if (StringUtils.isEmpty(text) || str == null || str.length <= 0) return false;
+        for (String s : str) {
+            if (text.equals(s)) return true;
+        }
+        return false;
+    }
+
+    /**
+     * 已审批
+     * 未通过
+     * 已结束
+     * 待审批
+     */
+    private String setNodeStatus(String status) {
+        LogUtil.d("status=" + status);
+        if (equalsOne(status, "同意")) {
+            status = "已审批";
+        } else if (equalsOne(status, "不同意", "不通过")) {
+            status = "未通过";
+        } else if (equalsOne(status, "结束流程")) {
+            status = "已结束";
+        }
+        LogUtil.d("status=" + status);
+        LogUtil.d("________________");
+        return status;
+    }
+
     private void mergeNode(JSONArray array, List<Approval> approvals, boolean isLog) {
     private void mergeNode(JSONArray array, List<Approval> approvals, boolean isLog) {
         for (int i = 0; i < array.size(); i++) {
         for (int i = 0; i < array.size(); i++) {
             JSONObject o = array.getJSONObject(i);
             JSONObject o = array.getJSONObject(i);
             String name = OACheckUtil.getJson2Text(o, "jp_nodeName", "jn_name");//节点名称
             String name = OACheckUtil.getJson2Text(o, "jp_nodeName", "jn_name");//节点名称
             long launchTime = OACheckUtil.getJsonTime(o, "jp_launchTime", "jn_dealTime");//时间
             long launchTime = OACheckUtil.getJsonTime(o, "jp_launchTime", "jn_dealTime");//时间
-            String status = OACheckUtil.getJson2Text(o, "jp_status");//状态
+            String status = OACheckUtil.getJson2Text(o, "jp_status", "jn_dealResult");//状态
             String nodeDealCode = OACheckUtil.getJson2Text(o, "jp_nodeDealMan", "jn_dealManId");//处理人编号
             String nodeDealCode = OACheckUtil.getJson2Text(o, "jp_nodeDealMan", "jn_dealManId");//处理人编号
             String nodeDealName = OACheckUtil.getJson2Text(o, "jp_nodeDealManName", "jn_dealManName");//执行人
             String nodeDealName = OACheckUtil.getJson2Text(o, "jp_nodeDealManName", "jn_dealManName");//执行人
             String nodeDescription = OACheckUtil.getJson2Text(o, "jn_nodeDescription");//执行操作
             String nodeDescription = OACheckUtil.getJson2Text(o, "jn_nodeDescription");//执行操作
-            for (Approval a : approvals) {
+            boolean hanEnd = false;
+            setNodeStatus(status);
+            for (int j = approvals.size() - 1; j >= 0; j--) {
+                Approval a = approvals.get(j);
+                if (hanEnd) continue;
+                if (a.getValuesKey().equals(record.nodeName)) {
+                    hanEnd = true;
+                }
                 if (name.equals(a.getValuesKey())) {//为当前结点
                 if (name.equals(a.getValuesKey())) {//为当前结点
                     if (!isLog) {
                     if (!isLog) {
                         a.setDfType(nodeDealCode);
                         a.setDfType(nodeDealCode);
                         a.setCaption(nodeDealName);
                         a.setCaption(nodeDealName);
-                        a.setIdKey(status);
+                        a.setIdKey(hanEnd ? "待审批" : status);
                         if (launchTime > 0) {
                         if (launchTime > 0) {
                             a.setValues(TimeUtils.long2str(launchTime, "MM-dd HH:mm"));
                             a.setValues(TimeUtils.long2str(launchTime, "MM-dd HH:mm"));
                         }
                         }
@@ -1127,7 +1214,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
                             if (launchTime > 0) {
                             if (launchTime > 0) {
                                 a.setValues(TimeUtils.long2str(launchTime, "MM-dd HH:mm"));
                                 a.setValues(TimeUtils.long2str(launchTime, "MM-dd HH:mm"));
                             }
                             }
-                            if (!StringUtils.isEmpty(nodeDescription)) {
+                            if (status.equals("不同意")) {
+                                a.setIdKey(hanEnd ? "待审批" : "未通过");
+                            } else if (status.equals("同意")) {
+                                a.setIdKey(hanEnd ? "待审批" : "已审批");
+                            }
+                            if (!hanEnd && !StringUtils.isEmpty(nodeDescription)) {
                                 a.setIdKey(a.getIdKey() + "(" + nodeDescription + ")");
                                 a.setIdKey(a.getIdKey() + "(" + nodeDescription + ")");
                             }
                             }
                         }
                         }
@@ -1152,7 +1244,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
             String emCode = OACheckUtil.getJson2Text(object, "JP_NODEDEALMAN");//节点处理人编号
             String emCode = OACheckUtil.getJson2Text(object, "JP_NODEDEALMAN");//节点处理人编号
             String manName = OACheckUtil.getJson2Text(object, "JP_NODEDEALMANNAME");
             String manName = OACheckUtil.getJson2Text(object, "JP_NODEDEALMANNAME");
             Approval approval = new Approval(Approval.NODES);
             Approval approval = new Approval(Approval.NODES);
-            approval.setCaption(manName);
+            approval.setCaption(StringUtils.isEmpty(manName) ? nodeName : manName);
             approval.setDfType(emCode);
             approval.setDfType(emCode);
             approval.setValuesKey(nodeName);
             approval.setValuesKey(nodeName);
             approvals.add(approval);
             approvals.add(approval);
@@ -1192,6 +1284,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         ThreadUtil.getInstance().addTask(new Runnable() {
         ThreadUtil.getInstance().addTask(new Runnable() {
             @Override
             @Override
             public void run() {
             public void run() {
+                final int isApprove = OACheckUtil.getJsonIntager(object, "isApprove");
                 JSONArray arrayCS = OACheckUtil.getJsonArray(object, "cs");
                 JSONArray arrayCS = OACheckUtil.getJsonArray(object, "cs");
                 if (!ListUtils.isEmpty(arrayCS)) {
                 if (!ListUtils.isEmpty(arrayCS)) {
                     String data = OACheckUtil.getJson2Text(object, "data");
                     String data = OACheckUtil.getJson2Text(object, "data");
@@ -1211,12 +1304,17 @@ public class ApprovaPresenter implements OnHttpResultListener {
                         Approval points = new Approval(Approval.TAG);
                         Approval points = new Approval(Approval.TAG);
                         points.setCaption(OACheckUtil.getString(R.string.approval_points));
                         points.setCaption(OACheckUtil.getString(R.string.approval_points));
                         pointsList.add(0, points);
                         pointsList.add(0, points);
-                        setData2ListThread(Approval.POINTS, pointsList);
+                        ApprovaPresenter.this.pointsList = pointsList;
+                        //TODO  setData2ListThread(Approval.POINTS, pointsList);
+                        setData2ListThread();
                     }
                     }
                 }
                 }
                 OAHttpHelper.getInstance().post(new Runnable() {
                 OAHttpHelper.getInstance().post(new Runnable() {
                     @Override
                     @Override
                     public void run() {
                     public void run() {
+                        if (isApprove == 1) {
+                            iApproval.isApprove(true);
+                        }
                         loadAllHistoryNodes();
                         loadAllHistoryNodes();
                     }
                     }
                 });
                 });
@@ -1412,6 +1510,26 @@ public class ApprovaPresenter implements OnHttpResultListener {
         return formstore;
         return formstore;
     }
     }
 
 
+
+    private synchronized void setData2ListThread() {
+        final List<Approval> approvals = new ArrayList<>();
+        approvals.add(titleApproval);
+        approvals.addAll(mainDetailList);
+        approvals.addAll(setuptasList);
+        approvals.addAll(enclosureList);
+        approvals.addAll(pointsList);
+        approvals.addAll(nodeList);
+        OAHttpHelper.getInstance().post(new Runnable() {
+            @Override
+            public void run() {
+                if (!loading && ApprovaPresenter.this.titleApproval != null && !StringUtils.isEmpty(titleApproval.getCaption()) && isApprovaling()) {
+                    iApproval.showOpinion();
+                }
+                iApproval.showModels(approvals, historyNodes);
+            }
+        });
+    }
+/*
     private synchronized void setData2ListThread(final int type, List<Approval> newApprovals) {
     private synchronized void setData2ListThread(final int type, List<Approval> newApprovals) {
         final List<Approval> merges = new ArrayList<>();
         final List<Approval> merges = new ArrayList<>();
         if (!ListUtils.isEmpty(approvals)) {
         if (!ListUtils.isEmpty(approvals)) {
@@ -1451,4 +1569,5 @@ public class ApprovaPresenter implements OnHttpResultListener {
             }
             }
         });
         });
     }
     }
+    */
 }
 }

+ 1 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IApproval.java

@@ -22,4 +22,5 @@ public interface IApproval extends HttpImp {
 
 
     void showOpinion();
     void showOpinion();
 
 
+    void isApprove(boolean isApprove);
 }
 }

+ 11 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CrashLinearLayoutManager.java

@@ -19,7 +19,18 @@ public class CrashLinearLayoutManager extends LinearLayoutManager {
             super.onLayoutChildren(recycler, state);
             super.onLayoutChildren(recycler, state);
         } catch (IndexOutOfBoundsException e) {
         } catch (IndexOutOfBoundsException e) {
             e.printStackTrace();
             e.printStackTrace();
+        } catch (Exception e) {
         }
         }
     }
     }
 
 
+    @Override
+    public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) {
+        try {
+            return super.scrollVerticallyBy(dy, recycler, state);
+        } catch (IndexOutOfBoundsException e) {
+            return 0;
+        } catch (Exception e) {
+            return 0;
+        }
+    }
 }
 }

BIN
WeiChat/src/main/res/drawable-hdpi/btn_yuyin_nor.png


BIN
WeiChat/src/main/res/drawable-hdpi/change_user.png


BIN
WeiChat/src/main/res/drawable-xhdpi/btn_yuyin_nor.png


BIN
WeiChat/src/main/res/drawable-xhdpi/change_user.png


+ 0 - 0
WeiChat/src/main/res/drawable-hdpi/qiehuan2.png → WeiChat/src/main/res/drawable-xhdpi/qiehuan2.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/btn_yuyin_nor.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/change_user.png


+ 24 - 0
WeiChat/src/main/res/drawable/edit_hint_right_angle.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_focused="true">
+        <shape>
+            <solid android:color="@color/base_bg"/>
+            <stroke android:width="0.6dp" android:color="@color/item_line"/>
+            <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp"/>
+        </shape>
+    </item>
+    <item android:state_pressed="true">
+        <shape>
+            <solid android:color="@color/base_bg"/>
+            <stroke android:width="0.6dp" android:color="@color/item_line"/>
+            <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp"/>
+        </shape>
+    </item>
+    <item>
+        <shape>
+            <solid android:color="@color/base_bg"/>
+            <stroke android:width="0.6dp" android:color="@color/item_line"/>
+            <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp"/>
+        </shape>
+    </item>
+</selector>

+ 11 - 8
WeiChat/src/main/res/layout/approval_operation.xml

@@ -19,6 +19,8 @@
         android:layout_height="20dp"
         android:layout_height="20dp"
         android:layout_alignParentRight="true"
         android:layout_alignParentRight="true"
         android:layout_below="@id/line_top"
         android:layout_below="@id/line_top"
+        android:layout_marginRight="8dp"
+        android:layout_marginTop="10dp"
         android:layout_gravity="center_vertical"
         android:layout_gravity="center_vertical"
         android:src="@drawable/changyongyu"
         android:src="@drawable/changyongyu"
         android:visibility="visible"/>
         android:visibility="visible"/>
@@ -50,7 +52,7 @@
         android:layout_toLeftOf="@+id/voiceIV"
         android:layout_toLeftOf="@+id/voiceIV"
         android:layout_toRightOf="@+id/inputTagIV"
         android:layout_toRightOf="@+id/inputTagIV"
         android:hint="请输入审批意见..."
         android:hint="请输入审批意见..."
-        android:minHeight="50dp"
+        android:minHeight="30dp"
         android:paddingLeft="10dp"
         android:paddingLeft="10dp"
         android:paddingTop="5dp"
         android:paddingTop="5dp"
         whatever:customRegexp="^[\\s\\S]{0,30}$"
         whatever:customRegexp="^[\\s\\S]{0,30}$"
@@ -71,7 +73,7 @@
         android:layout_below="@id/line_botton"
         android:layout_below="@id/line_botton"
         android:background="@color/base_bg"
         android:background="@color/base_bg"
         android:orientation="horizontal"
         android:orientation="horizontal"
-        android:padding="10dp">
+        android:padding="8dp">
 
 
         <TextView
         <TextView
             android:id="@+id/takeOverTV"
             android:id="@+id/takeOverTV"
@@ -80,12 +82,13 @@
             android:text="@string/take_over"
             android:text="@string/take_over"
             android:visibility="gone"/>
             android:visibility="gone"/>
 
 
+
         <Button
         <Button
-            android:id="@+id/agreeTV"
+            android:id="@+id/disagreeTV"
             style="@style/bottomTextStyle"
             style="@style/bottomTextStyle"
-            android:layout_weight="2"
+            android:layout_weight="3"
             android:background="@color/base_bg"
             android:background="@color/base_bg"
-            android:text="@string/agree"
+            android:text="@string/common_disagree"
             android:textColor="@drawable/bg_bule_yellow_text"/>
             android:textColor="@drawable/bg_bule_yellow_text"/>
 
 
         <View
         <View
@@ -95,11 +98,11 @@
             android:background="@color/item_line"/>
             android:background="@color/item_line"/>
 
 
         <Button
         <Button
-            android:id="@+id/disagreeTV"
+            android:id="@+id/agreeTV"
             style="@style/bottomTextStyle"
             style="@style/bottomTextStyle"
-            android:layout_weight="3"
+            android:layout_weight="2"
             android:background="@color/base_bg"
             android:background="@color/base_bg"
-            android:text="@string/common_disagree"
+            android:text="@string/agree"
             android:textColor="@drawable/bg_bule_yellow_text"/>
             android:textColor="@drawable/bg_bule_yellow_text"/>
 
 
         <View
         <View

+ 4 - 2
WeiChat/src/main/res/layout/item_approval_node.xml

@@ -32,9 +32,11 @@
 
 
         <ImageView
         <ImageView
             android:id="@+id/changeUser"
             android:id="@+id/changeUser"
-            android:layout_width="22dp"
-            android:layout_height="22dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
             android:layout_alignParentRight="true"
             android:layout_alignParentRight="true"
+            android:padding="8dp"
+            android:src="@drawable/change_user"
             android:visibility="gone"/>
             android:visibility="gone"/>
 
 
         <TextView
         <TextView

+ 8 - 2
WeiChat/src/main/res/layout/item_approval_node_tag.xml

@@ -44,6 +44,12 @@
         android:textCursorDrawable="@color/yellow_home"
         android:textCursorDrawable="@color/yellow_home"
         android:textSize="@dimen/text_main"/>
         android:textSize="@dimen/text_main"/>
 
 
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="4px"
+        android:layout_alignParentBottom="true"
+        android:background="@color/item_line"/>
+
     <View
     <View
         android:id="@+id/nodeTag"
         android:id="@+id/nodeTag"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
@@ -52,7 +58,7 @@
         android:layout_marginLeft="10dp"
         android:layout_marginLeft="10dp"
         android:layout_marginRight="10dp"
         android:layout_marginRight="10dp"
         android:layout_toLeftOf="@id/line"
         android:layout_toLeftOf="@id/line"
-        android:background="@color/darkorange"/>
+        android:background="@color/titleBlue"/>
 
 
     <View
     <View
         android:id="@+id/historyTag"
         android:id="@+id/historyTag"
@@ -62,5 +68,5 @@
         android:layout_marginLeft="10dp"
         android:layout_marginLeft="10dp"
         android:layout_marginRight="10dp"
         android:layout_marginRight="10dp"
         android:layout_toRightOf="@id/line"
         android:layout_toRightOf="@id/line"
-        android:background="@color/darkorange"/>
+        android:background="@color/titleBlue"/>
 </RelativeLayout>
 </RelativeLayout>

+ 1 - 0
WeiChat/src/main/res/layout/item_approval_points.xml

@@ -32,6 +32,7 @@
                 android:layout_height="match_parent"
                 android:layout_height="match_parent"
                 android:background="@null"
                 android:background="@null"
                 android:gravity="right"
                 android:gravity="right"
+                android:layout_marginRight="10dp"
                 android:hint="@string/common_input2"
                 android:hint="@string/common_input2"
                 android:textColor="@color/text_main"/>
                 android:textColor="@color/text_main"/>
 
 

+ 26 - 11
WeiChat/src/main/res/layout/item_approval_rv.xml

@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
               style="@style/approvalStyle"
               style="@style/approvalStyle"
-              android:paddingLeft="@dimen/paddingApp"
               android:layout_width="match_parent"
               android:layout_width="match_parent"
-              android:layout_height="wrap_content">
+              android:layout_height="wrap_content"
+              android:paddingLeft="@dimen/paddingApp">
 
 
     <TextView
     <TextView
         android:id="@+id/captionTV"
         android:id="@+id/captionTV"
         style="@style/approvalItemStyle"
         style="@style/approvalItemStyle"
         android:layout_width="0dp"
         android:layout_width="0dp"
-        android:layout_marginRight="10dp"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginRight="10dp"
         android:layout_weight="1"/>
         android:layout_weight="1"/>
 
 
     <FrameLayout
     <FrameLayout
@@ -24,9 +24,9 @@
             style="@style/approvalItemStyle"
             style="@style/approvalItemStyle"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_height="match_parent"
-            android:textColor="@color/text_main"
-            android:background="@drawable/shape_from_edit_hint"
-            android:hint="@string/common_input2"/>
+            android:background="@drawable/edit_hint_right_angle"
+            android:hint="@string/common_input2"
+            android:textColor="@color/text_main"/>
 
 
         <WebView
         <WebView
             android:id="@+id/valueWeb"
             android:id="@+id/valueWeb"
@@ -35,11 +35,26 @@
             android:gravity="center|left"
             android:gravity="center|left"
             android:visibility="gone"/>
             android:visibility="gone"/>
 
 
-        <TextView
-            android:id="@+id/valueTv"
-            style="@style/approvalItemStyle"
-            android:textColor="@color/text_main"
+        <LinearLayout
             android:layout_width="match_parent"
             android:layout_width="match_parent"
-            android:gravity="center|left"/>
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <TextView
+                android:id="@+id/oldValueTv"
+                style="@style/approvalItemStyle"
+                android:layout_width="match_parent"
+                android:gravity="center|left"
+                android:textColor="@color/text_main"
+                android:visibility="gone"/>
+
+            <TextView
+                android:id="@+id/valueTv"
+                style="@style/approvalItemStyle"
+                android:layout_width="match_parent"
+                android:gravity="center|left"
+                android:textColor="@color/text_main"/>
+        </LinearLayout>
+
     </FrameLayout>
     </FrameLayout>
 </LinearLayout>
 </LinearLayout>

+ 1 - 1
WeiChat/src/main/res/layout/item_approval_tag.xml

@@ -24,7 +24,7 @@
         android:ellipsize="middle"
         android:ellipsize="middle"
         android:lines="1"
         android:lines="1"
         android:paddingBottom="8dp"
         android:paddingBottom="8dp"
-        android:paddingLeft="10dp"
+        android:paddingLeft="6dp"
         android:paddingTop="8dp"
         android:paddingTop="8dp"
         android:text="tagTv"
         android:text="tagTv"
         android:textColor="@color/titleBlue"/>
         android:textColor="@color/titleBlue"/>

+ 11 - 10
WeiChat/src/main/res/layout/item_list_pop.xml

@@ -1,14 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:gravity="center_horizontal"
-    android:paddingLeft="10dp"
-    android:paddingRight="10dp"
-    android:paddingTop="10dp">
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center_horizontal">
 
 
-  <ListView
-      android:id="@+id/contentLV"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"/>
+    <ListView
+        android:id="@+id/contentLV"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:divider="@color/item_line"
+        android:paddingLeft="10dp"
+        android:paddingRight="10dp"
+        android:paddingTop="10dp"/>
 </RelativeLayout>
 </RelativeLayout>

+ 1 - 0
WeiChat/src/main/res/values/colors.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 <resources>
+    <color name="new_values">#f10813</color>
     <color name="no_approval">#f10813</color>
     <color name="no_approval">#f10813</color>
     <color name="approval">#268509</color>
     <color name="approval">#268509</color>
     <color name="done_approval">#969595</color>
     <color name="done_approval">#969595</color>

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

@@ -1846,6 +1846,7 @@
     <string name="take_over">接管</string>
     <string name="take_over">接管</string>
     <string name="load_next_approval">操作完成,正在跳往下一条</string>
     <string name="load_next_approval">操作完成,正在跳往下一条</string>
     <string name="loadtonext_approval">正在跳往下一条</string>
     <string name="loadtonext_approval">正在跳往下一条</string>
+    <string name="load_tonext_approval">跳往下一条</string>
     <string name="load_not_next_data">没有下一条数据</string>
     <string name="load_not_next_data">没有下一条数据</string>
     <string name="serial_number">单据序号</string>
     <string name="serial_number">单据序号</string>
     <string name="load_take_over_ok">接管人为自己时默认为同意该审批</string>
     <string name="load_take_over_ok">接管人为自己时默认为同意该审批</string>