Browse Source

整合审批流代码,使用单个Recyclerview处理问题
处理个别现场闪退问题

Bitliker 8 years ago
parent
commit
aa1a039f7b

+ 1 - 0
WeiChat/src/main/AndroidManifest.xml

@@ -974,6 +974,7 @@
             android:label="在线人脸识别" />
         <activity android:name=".ui.erp.activity.oa.FileLoadingActivity" />
         <activity android:name=".ui.erp.activity.oa.ApprovalActivity" />
+        <activity android:name=".ui.erp.activity.AppWebViewActivity" />
         <activity
             android:name=".ui.erp.activity.message.PersonalRegActivity"
             android:label="个人注册" />

+ 71 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/AppWebViewActivity.java

@@ -0,0 +1,71 @@
+package com.xzjmyk.pm.activity.ui.erp.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.PersistableBundle;
+import android.support.annotation.Nullable;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.ApprovalActivity;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
+
+/**
+ * Created by Bitliker on 2017/7/28.
+ */
+
+public class AppWebViewActivity extends WebViewLoadActivity {
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
+        super.onCreate(savedInstanceState, persistentState);
+    }
+
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.returnOld) {
+            PreferenceUtils.putBoolean("newapproval", true);
+            Intent intent = new Intent(ct, ApprovalActivity.class);
+            intent.putExtra("title", getIntent().getStringExtra("p"));
+            int nodeId = getNodeId();
+            if (nodeId <= 0) {
+                nodeId = getIntent().getIntExtra("nodeid", -1);
+            }
+            intent.putExtra("nodeid", nodeId);
+            startActivity(intent);
+            finish();
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    private int getNodeId() {
+        int nodeId = -1;
+        try {
+            LogUtil.i("url=" + url);
+            if (!StringUtils.isEmpty(url)) {
+                String[] urls = url.split("nodeId=");
+                if (urls != null && urls.length > 1) {
+                    String node = urls[1].split("&")[0];
+                    nodeId = Integer.valueOf(node);
+                }
+            }
+        } catch (Exception e) {
+            LogUtil.i("Exception=" + e.getMessage());
+        }
+        LogUtil.i("nodeId=" + nodeId);
+        return nodeId;
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.menu_aproval_set, menu);
+        menu.getItem(0).setVisible(false);
+        MenuItem item = menu.getItem(1);
+        item.setTitle("使用新版");
+        return super.onCreateOptionsMenu(menu);
+    }
+}

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

@@ -26,7 +26,6 @@ import com.xzjmyk.pm.activity.ui.erp.util.Blowfish;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
 import com.xzjmyk.pm.activity.ui.erp.util.FlexJsonUtil;
-import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 
 import org.apache.http.util.EncodingUtils;
@@ -42,7 +41,7 @@ import java.util.Map;
 @SuppressWarnings("deprecation")
 public class WebViewLoadActivity extends BaseActivity {
 
-    private String url;
+    protected String url;
     private String paramurl;// 连接到具体网页的url
     public boolean isStartApp = false;
     private String master;
@@ -138,7 +137,7 @@ public class WebViewLoadActivity extends BaseActivity {
 
         webView.getRefreshableView().setWebViewClient(new WebViewClient() {
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
-                LogUtil.d("转发 url=" + url);
+                WebViewLoadActivity.this.url=url;
                 view.loadUrl(url);
                 return true;
             }

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

@@ -32,6 +32,7 @@ import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.helper.AvatarHelper;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.AppWebViewActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.ApprovalActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.setting.ComApprovalUtil;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
@@ -43,6 +44,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.view.EmptyLayout;
 import com.xzjmyk.pm.activity.ui.erp.view.VoiceSearchView;
 import com.xzjmyk.pm.activity.util.DateFormatUtil;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -328,51 +330,49 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                 LogUtil.d(TAG, position + "");
                 String title = "";
                 String url = "";
-                if (CommonUtil.isReleaseVersion()) {
-                    switch (tab_type) {
-                        case 1:
-                            title = getString(R.string.task_unconfim);
-                            if ("transferprocess".equals(model.typecode) || "process".equals(model.typecode) || "".equals(model.typecode)) {
-                                url = "jsps/mobile/process.jsp?nodeId=" + model.JP_NODEID;
-                            } else if ("procand".equals(model.typecode)) {
-                                url = "jsps/mobile/jprocand.jsp?nodeId=" + model.JP_NODEID;
-                            } else if ("unprocess".equals(model.typecode)) {
-                                url = "jsps/mobile/process.jsp?nodeId=" + model.JP_NODEID + "%26_do=1";
-                            }
-
-                            break;
-                        case 2:
-                            title = getString(R.string.task_confimed);
-                            url = "jsps/mobile/process.jsp?nodeId=" + model.JP_NODEID + "%26_do=1";
-                            break;
-                        case 3:
-                            title = getString(R.string.task_request_me);
+                String d_imids = "";
+                switch (tab_type) {
+                    case 1:
+                        title = getString(R.string.title_approval);
+                        d_imids = im_ids.get(mPosition);
+                        if ("transferprocess".equals(model.typecode) || "process".equals(model.typecode) || "".equals(model.typecode)) {
+                            url = "jsps/mobile/process.jsp?nodeId=" + model.JP_NODEID;
+                        } else if ("procand".equals(model.typecode)) {
+                            url = "jsps/mobile/jprocand.jsp?nodeId=" + model.JP_NODEID;
+                        } else if ("unprocess".equals(model.typecode)) {
                             url = "jsps/mobile/process.jsp?nodeId=" + model.JP_NODEID + "%26_do=1";
-                            break;
-                    }
-                    String master = model.master == null ? CommonUtil.getSharedPreferences(ct, "erp_master") : model.master;
+                        }
+
+                        break;
+                    case 2:
+                        title = getString(R.string.task_confimed);
+                        d_imids = im_ids.get(mPosition);
+                        url = "jsps/mobile/process.jsp?nodeId=" + model.JP_NODEID + "%26_do=1";
+                        break;
+                    case 3:
+                        title = getString(R.string.task_request_me);
+                        url = "jsps/mobile/process.jsp?nodeId=" + model.JP_NODEID + "%26_do=1";
+                        break;
+                }
+                if (StringUtils.isEmpty(d_imids)) {
+                    d_imids = MyApplication.getInstance().mLoginUser.getUserId(); //审批详情界面:这里显示是我发起的,取当前登录当前用户的头像
+                }
+                LogUtil.i("url="+url);
+                String master = model.master == null ? CommonUtil.getSharedPreferences(ct, "erp_master") : model.master;
+                if (CommonUtil.isReleaseVersion() && !PreferenceUtils.getBoolean("newapproval", true)) {
                     CommonUtil.loadWebView(ct, url, title, master, null, null);
-                    Log.i("erppmurl,master", url + "," + master);
+                    Intent intent = new Intent(ct, AppWebViewActivity.class);
+                    intent.putExtra("url", url);
+                    intent.putExtra("p", title);
+                    intent.putExtra("master", master);
+                    intent.putExtra("nodeid", Integer.valueOf(model.JP_NODEID));
+                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                    startActivity(intent);
                 } else {
-                    String d_imids = "";
-                    switch (tab_type) {
-                        case 1:
-                            title = getString(R.string.title_approval);
-                            d_imids = im_ids.get(mPosition);
-                            break;
-                        case 2:
-                            title = getString(R.string.task_confimed);
-                            d_imids = im_ids.get(mPosition);
-                            break;
-                        case 3:
-                            title = getString(R.string.task_request_me);
-                            d_imids = MyApplication.getInstance().mLoginUser.getUserId(); //审批详情界面:这里显示是我发起的,取当前登录当前用户的头像
-                            break;
-                    }
                     Intent intent = new Intent(ct, ApprovalActivity.class);
-                    intent.putExtra("title", title);
                     intent.putExtra("imid", d_imids);
-                    intent.putExtra("id", Integer.valueOf(model.JP_NODEID));
+                    intent.putExtra("title", title);
+                    intent.putExtra("nodeid", Integer.valueOf(model.JP_NODEID));
                     startActivity(intent);
                 }
             }
@@ -572,8 +572,6 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     String jp_status = jsonArray.getJSONObject(position).getString("JP_STATUS");
                     String jp_typecode = jsonArray.getJSONObject(position).getString("TYPECODE");
                     String jp_master = jsonArray.getJSONObject(position).getString("CURRENTMASTER");
-
-
                     model.name.setText(jp_launchername + "的" + jp_name);
                     if (jp_launchtime != null) {
                         model.date.setText(DateFormatUtil.getStrDate4Date(new Date(jp_launchtime), "yyyy-MM-dd HH:mm"));

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

@@ -12,6 +12,7 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 
+import com.afollestad.materialdialogs.MaterialDialog;
 import com.alibaba.fastjson.JSONArray;
 import com.andreabaccega.widget.FormEditText;
 import com.iflytek.cloud.RecognizerResult;
@@ -19,10 +20,12 @@ import com.iflytek.cloud.SpeechError;
 import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
 import com.xzjmyk.pm.activity.bean.oa.SelectBean;
 import com.xzjmyk.pm.activity.bean.oa.SelectEmUser;
+import com.xzjmyk.pm.activity.ui.erp.activity.AppWebViewActivity;
 import com.xzjmyk.pm.activity.ui.erp.adapter.oa.ApprovalAdapter;
 import com.xzjmyk.pm.activity.ui.erp.entity.EditChangeListener;
 import com.xzjmyk.pm.activity.ui.erp.entity.SelectCollisionTurnBean;
@@ -31,10 +34,12 @@ import com.xzjmyk.pm.activity.ui.erp.presenter.ApprovaPresenter;
 import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IApproval;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.OAConfig;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.RecognizerDialogUtil;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -53,22 +58,36 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
     @ViewInject(R.id.inputTagIV)
     ImageView inputTagIV;
 
-
     private List<Approval> approvals;
     private ApprovaPresenter mPresenter;
     private ApprovalAdapter mAdapter;
+    private int keyValue = -1;
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.oa_approval_set && mAdapter != null && !ListUtils.isEmpty(mAdapter.getApprovals())) {
             mPresenter.trun2SetActivity(this, mAdapter.getApprovals());
+        } else if (item.getItemId() == R.id.returnOld) {
+            PreferenceUtils.putBoolean("newapproval", false);
+            Intent intent = new Intent(ct, AppWebViewActivity.class);
+            String title = getIntent().getStringExtra("title");
+            String url = mPresenter.getUrl(title);
+            intent.putExtra("url", url);
+            intent.putExtra("p", title);
+            intent.putExtra("master", CommonUtil.getMaster());
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(intent);
+            finish();
         }
         return super.onOptionsItemSelected(item);
     }
 
+
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         getMenuInflater().inflate(R.menu.menu_aproval_set, menu);
+        MenuItem item = menu.getItem(1);
+        item.setTitle("返回旧版");
         return super.onCreateOptionsMenu(menu);
     }
 
@@ -251,7 +270,8 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
     }
 
     @Override
-    public void showMainList(Approval mainApproval) {
+    public void showMainList(int keyValue, Approval mainApproval) {
+        if (this.keyValue != keyValue) return;
         mainApproval.show();
         if (!ListUtils.isEmpty(approvals))
             for (Approval a : approvals) {
@@ -282,7 +302,8 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
     }
 
     @Override
-    public void showDetailList(List<Approval> detailedList) {
+    public void showDetailList(int keyValue, List<Approval> detailedList) {
+        if (this.keyValue != keyValue) return;
         for (Approval approval : detailedList)
             approval.show();
         for (int i = approvals.size() - 1; i >= 0; i--) {
@@ -297,7 +318,8 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
     }
 
     @Override
-    public void showEnclosureList(Approval enclosureApproval) {
+    public void showEnclosureList(int keyValue, Approval enclosureApproval) {
+        if (this.keyValue != keyValue) return;
         enclosureApproval.show();
         for (int i = approvals.size() - 1; i >= 0; i--) {
             if (approvals.get(i).getType() == Approval.DETAIL
@@ -313,7 +335,8 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
     }
 
     @Override
-    public void showPointsList(Approval points) {
+    public void showPointsList(int keyValue, Approval points) {
+        if (this.keyValue != keyValue) return;
         points.show();
         for (int i = approvals.size() - 1; i >= 0; i--) {
             if (approvals.get(i).getType() == Approval.DETAIL
@@ -330,7 +353,8 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
     }
 
     @Override
-    public void showNodeList(Approval nodes) {
+    public void showNodeList(int keyValue, Approval nodes) {
+        if (this.keyValue != keyValue) return;
         nodes.show();
         for (int i = approvals.size() - 1; i >= 0; i--) {
             if (approvals.get(i).getType() == Approval.DETAIL
@@ -357,14 +381,13 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
             newAdapter();
         } else {
             mAdapter.setApprovals(approvals);
-            mAdapter.notifyDataSetChanged();
-//            if (startItem < 0 && endItem < 0) {
-//                mAdapter.notifyDataSetChanged();
-//            } else if (startItem == endItem && startItem >= 0) {
-//                mAdapter.notifyItemChanged(startItem);
-//            } else {
-//                mAdapter.notifyItemRangeChanged(startItem, endItem);
-//            }
+            if (startItem < 0 && endItem < 0) {
+                mAdapter.notifyDataSetChanged();
+            } else if (startItem == endItem && startItem >= 0) {
+                mAdapter.notifyItemChanged(startItem);
+            } else {
+                mAdapter.notifyItemRangeChanged(startItem, endItem);
+            }
         }
     }
 
@@ -382,6 +405,25 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
         }
     }
 
+    @Override
+    public void endProcess() {
+        new MaterialDialog.Builder(ct).title(MyApplication.getInstance().getString(R.string.app_dialog_title))
+                .content(R.string.end_approval)
+                .positiveText(MyApplication.getInstance().getString(R.string.app_dialog_close)).autoDismiss(false)
+                .callback(new MaterialDialog.ButtonCallback() {
+                    @Override
+                    public void onPositive(MaterialDialog dialog) {
+                        finish();
+                        dialog.dismiss();
+                    }
+                }).show();
+    }
+
+    @Override
+    public void setKeyValue(int keyValue) {
+        this.keyValue = keyValue;
+    }
+
     @Override
     public void sendToSelect(JSONArray data) {
         ArrayList<SelectBean> beans = new ArrayList<>();

+ 8 - 14
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/ApprovalRVItemAdapter.java

@@ -27,7 +27,6 @@ import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.OpenFilesUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
-import com.xzjmyk.pm.activity.ui.erp.util.TextUtil;
 import com.xzjmyk.pm.activity.ui.tool.SingleImagePreviewActivity;
 import com.xzjmyk.pm.activity.util.CalendarUtils;
 import com.xzjmyk.pm.activity.view.wheel.DatePicker;
@@ -127,7 +126,6 @@ public class ApprovalRVItemAdapter extends RecyclerView.Adapter<RecyclerView.Vie
                     public void onLoadIng(int progress, int allProgress) {
                         //TODO 下载进行中回调
                     }
-
                     @Override
                     public void onSuccess(File file) {
                         OpenFilesUtils.openCommonFils(ct, file);
@@ -144,22 +142,18 @@ public class ApprovalRVItemAdapter extends RecyclerView.Adapter<RecyclerView.Vie
 
     private void bindNodeView(NodeViewHolder holder, int position) {
         Approval.Item itemData = itemDatas.get(position);
+        int textColor = R.color.hintColor;
         if (!StringUtils.isEmpty(itemData.status)) {
-            if (itemData.status.contains("已审批")) {
-                TextUtil.create()
-                        .addSection(itemData.status)
-                        .tint(itemData.status, 0x969595)
-                        .showIn(holder.valuesTv);
-            } else {
-                TextUtil.create()
-                        .addSection(itemData.status)
-                        .tint("待审批", 0xB99400)
-                        .tint("未通过", 0xDC143C)
-                        .showIn(holder.valuesTv);
+            holder.valuesTv.setText(itemData.status);
+            if (itemData.status.startsWith("待审批")) {
+                textColor = R.color.approvaling;
+            } else if (itemData.status.startsWith("未通过")) {
+                textColor = R.color.crimson;
             }
         } else {
             holder.valuesTv.setText("");
         }
+        holder.valuesTv.setTextColor(ct.getResources().getColor(textColor));
         holder.timeTv.setText(StringUtils.isEmpty(itemData.values) ? "" : itemData.values);
         holder.keyTv.setText(StringUtils.isEmpty(itemData.caption) ? "" : itemData.caption);
         int reId = R.drawable.weishenpi;
@@ -308,7 +302,7 @@ public class ApprovalRVItemAdapter extends RecyclerView.Adapter<RecyclerView.Vie
             @Override
             public void onDatePicked(String year, String month, String day) {
                 String time = year + "-" + month + "-" + day;
-                LogUtil.i("time="+time);
+                LogUtil.i("time=" + time);
                 showView.setText(time);
                 itemDatas.get(position).values = time;
             }

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

@@ -3,7 +3,6 @@ package com.xzjmyk.pm.activity.ui.erp.presenter;
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -101,7 +100,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
     public ApprovaPresenter(IApproval iApproval, Intent intent) {
         this.iApproval = iApproval;
         if (intent != null) {
-            int id = intent.getIntExtra("id", -1);
+            int id = intent.getIntExtra("nodeid", -1);
             String imid = intent.getStringExtra("imid");
             title = intent.getStringExtra("title");
             if (id != -1) {
@@ -121,6 +120,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
         }
     }
 
+    public String getUrl(String title) {
+        LogUtil.i("title=" + title);
+        String endStatus = (StringUtils.isEmpty(title) || title.equals(OACheckUtil.getString(R.string.title_approval)) ? "" : "%26_do=1");
+        return "jsps/mobile/process.jsp?nodeId=" + record.nodeId + endStatus;
+    }
+
     public void initLoad() {
         initLoad(record.nodeId);
     }
@@ -524,8 +529,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 loadNextProcess();
                 break;
             case LOAD_END_PROCESS:
-                Toast.makeText(MyApplication.getInstance(), R.string.end_approval, Toast.LENGTH_SHORT).show();
-                iApproval.finish();
+                iApproval.endProcess();
                 break;
             case LOAD_PROCESS_UPDATE:
                 String nodeLog = null;
@@ -594,6 +598,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 String caller = OACheckUtil.getJson2Text(currentnode, "jp_caller");
                 if (keyValue != 0) {
                     record.id = keyValue;
+                    iApproval.setKeyValue(keyValue);
                 }
                 if (!StringUtils.isEmpty(title)) {
                     if (!StringUtils.isEmpty(recordName)) {
@@ -633,7 +638,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 OAHttpHelper.getInstance().post(new Runnable() {
                     @Override
                     public void run() {
-                        iApproval.showMainList(mainApproval);
+                        iApproval.showMainList(record.id,mainApproval);
                     }
                 });
             }
@@ -652,7 +657,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
             OAHttpHelper.getInstance().post(new Runnable() {
                 @Override
                 public void run() {
-                    iApproval.showDetailList(detailedList);
+                    iApproval.showDetailList(record.id,detailedList);
                     loadJnodes();
                 }
             });
@@ -801,7 +806,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                             reId = R.drawable.approved;
                         }
                         iApproval.showTitle(null, null, reId);
-                        iApproval.showNodeList(node);
+                        iApproval.showNodeList(record.id,node);
                     }
                 });
             }
@@ -825,7 +830,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         enclosureApproval.setTitle("附件");
         enclosureApproval.setItems(enclosureList);
         enclosureApproval.setType(Approval.ENCLOSURE);
-        iApproval.showEnclosureList(enclosureApproval);
+        iApproval.showEnclosureList(record.id,enclosureApproval);
     }
 
 
@@ -906,7 +911,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 points.setItems(pointsList);
                 points.setType(Approval.POINTS);
                 points.setTitle(OACheckUtil.getString(R.string.approval_points));
-                iApproval.showPointsList(points);
+                iApproval.showPointsList(record.id,points);
             }
         }
     }
@@ -923,11 +928,8 @@ public class ApprovaPresenter implements OnHttpResultListener {
      */
     private Approval.Item getItemBySetupTask(String cs, String[] datas) throws Exception {
         if (!StringUtils.isEmpty(cs)) {
-            LogUtil.i("cs=" + cs);
             Approval.Item itemData = new Approval.Item();
             String[] css = cs.split("\\^");
-            LogUtil.i("css[0]=" + css[0]);
-            LogUtil.i("css[1]=" + css[1]);
             if (!StringUtils.isEmpty(css[0])) {
                 itemData.caption = css[0];
                 String tag = css[1];
@@ -951,9 +953,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 }
                 if (datas != null && datas.length > 0 && !StringUtils.isEmpty(itemData.caption)) {
                     for (String data : datas) {
-                        if (data.contains(itemData.caption)) {
+                        if (data.startsWith(itemData.caption)) {
                             String values = OACheckUtil.getFirstBrackets(data);
-                            if (!StringUtils.isEmpty(values) && !values.equals("null") && !values.equals("(null)") && !values.equals("(null")) {
+                            if (!StringUtils.isEmpty(values)
+                                    && !values.equals("null")
+                                    && !values.equals("(null)")
+                                    && !values.equals("(null")) {
                                 itemData.values = values;
                             }
                         }
@@ -1034,7 +1039,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 if (approval.getType() == Approval.MAIN) {
                     formstore = putItem2Params(approval.getItems());
                     if (formstore == null)
-                        continue;
+                        return false;
                     formstore.put(approval.getIdKey(), approval.getId());
                     break;
                 }
@@ -1051,7 +1056,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
             for (Approval approval : approvals) {
                 if (approval.getType() == Approval.DETAIL) {
                     Map<String, Object> formstore = putItem2Params(approval.getItems());
-                    if (formstore == null || formstore.isEmpty()) continue;
+                    if (formstore == null)
+                        return false;
+                    if (formstore.isEmpty()) continue;
                     formstore.put(approval.getIdKey(), approval.getId());
                     params.add(formstore);
                 }
@@ -1068,12 +1075,17 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     String message = OACheckUtil.getString(R.string.must_input_key) + " " + itemData.caption + " " + OACheckUtil.getString(R.string.is_must_input);
                     iApproval.showToast(message);
                     return null;
+                } else if (StringUtils.isEmpty(StringUtils.string2Json(itemData.values))) {
+                    String message = OACheckUtil.getString(R.string.must_input_key) + " " + itemData.caption + " " + OACheckUtil.getString(R.string.limit_unno_zijie);
+                    iApproval.showToast(message);
+                    return null;
                 } else {
                     boolean isputed = false;
                     for (Approval.Data data : itemData.datas) {
                         isputed = false;
                         if (data.display.equals(itemData.values)) {
-                            formstore.put(itemData.valuesKey, StringUtils.isEmpty(data.value) ? itemData.values : data.value);
+                            formstore.put(itemData.valuesKey,
+                                    StringUtils.isEmpty(data.value) ? itemData.values : data.value);
                             isputed = true;
                             break;
                         }

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

@@ -16,15 +16,19 @@ public interface IApproval extends HttpImp {
 
     void showTitle(String imid, String title, int statusId);
 
-    void showMainList(Approval mainApproval);
+    void showMainList(int keyValue,Approval mainApproval);
 
-    void showDetailList(List<Approval> detailedList);
+    void showDetailList(int keyValue,List<Approval> detailedList);
 
-    void showNodeList(Approval nodes);
+    void showNodeList(int keyValue,Approval nodes);
 
-    void showPointsList(Approval points);
+    void showPointsList(int keyValue,Approval points);
 
-    void showEnclosureList(Approval enclosureApproval);
+    void showEnclosureList(int keyValue,Approval enclosureApproval);
 
     void initStatus();
+
+    void endProcess();
+
+    void setKeyValue(int keyValue);
 }

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/StringUtils.java

@@ -314,7 +314,7 @@ public class StringUtils {
 
     //将map对象传化未json串,上传表单使用
     public static String mapToJson(Map<String, Object> map) {
-        if (map == null||map.isEmpty()) return "";
+        if (map == null || map.isEmpty()) return "";
         StringBuilder builder = new StringBuilder("{\n");
         for (Map.Entry<String, Object> e : map.entrySet()) {
             builder.append("\"" + e.getKey() + "\":");

+ 5 - 0
WeiChat/src/main/res/menu/menu_aproval_set.xml

@@ -7,4 +7,9 @@
         app:showAsAction="always" />
 
 
+    <item
+        android:id="@+id/returnOld"
+        android:title="返回旧版"
+        android:icon="@drawable/qiehuan2"
+        app:showAsAction="ifRoom"  />
 </menu>

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

@@ -279,6 +279,7 @@
     <color name="calendar_topbg">#ff836244</color>
     <color name="calendar_cellbg">#ff373737</color>
     <color name="hintColor">#969595</color>
+    <color name="approvaling">#B99400</color>
     <color name="main_red">#ffbe2e15</color>
     <color name="main_grey">#ff5f5f5f</color>
     <color name="huangTuSe">#ff995e2d</color>