Browse Source

流程审批页面优化,处理js脚本无法关闭页面问题(跳转待办中心)

Heyuan 7 months ago
parent
commit
3d4d1dc44f
1 changed files with 2917 additions and 0 deletions
  1. 2917 0
      js/deploy/easweb.ear/eas_web.war/bin/workflow/metas/js/approve.js

+ 2917 - 0
js/deploy/easweb.ear/eas_web.war/bin/workflow/metas/js/approve.js

@@ -0,0 +1,2917 @@
+mod.definePage("workflow/metas/js/approve", function (waf, wfCommonUtil) {
+    var _public = {},
+        _private = {},
+        me = _self;
+    var okPolicy = new Array();
+    var noPolicy = new Array();
+    var assign = {};
+    var selnextPersons = {};
+    var transId = null;
+    var locationurl = waf.getUrlParams(document.location.href);
+    var approvetype = locationurl.type;
+    var passId = locationurl.passid;
+    var sourceIDs = locationurl.sourceIDs;
+    var msgId = locationurl.msgId;
+    var showerror = "";
+    var nextActIndex = "#nextAct";
+    var approveOpinions = {};
+    var isFirst = true;
+    var approvePolicy = {};
+    var riskInsight = false;
+    var billInsightOption = {};
+    var caConfig = {
+        caConfigInfo: null,
+        rootDiv: null,
+        CA_plainText: null,
+        CA_signature: null,
+        plainTextMap: null,
+        plainSignatureMap: null
+    };
+    waf.extend(_public, {
+        submit: function (event, value) {
+            return _private.submit(event, value)
+        },
+        save: function (event, value) {
+            return _private.save(event, value)
+        },
+        deliver: function (event, value) {
+            return _private.deliver(event, value)
+        },
+        passAssignment: function (event, value) {
+            return _private.passAssignment(event, value)
+        },
+        kickback: function (event, value) {
+            return _private.kickback(event, value)
+        },
+        appendActivity: function (event, value) {
+            return _private.appendActivity(event, value)
+        },
+        dynamicSign: function (event, value) {
+            return _private.dynamicSign(event, value)
+        },
+        jumpto: function (event, value) {
+            return _private.jumpto(event, value)
+        },
+        viewProcessDiagram: function (event, value) {
+            return _private.viewProcessDiagram(event, value)
+        },
+        billImage: function (event, value) {
+            return _private.billImage(event, value)
+        },
+        bill: function (event, value) {
+            return _private.bill(event, value)
+        },
+        showoperate: function (event, value) {
+            return _private.showoperate(event, value)
+        },
+        nextActs: function (event, ui) {
+            return _private.nextActs(event, ui)
+        },
+        modifynextActs: function (event, value) {
+            return _private.modifynextActs(event, value)
+        },
+        changePolicy: function (event, ui) {
+            return _private.changePolicy(event, ui)
+        },
+        changeselPolicy: function (event, ui) {
+            return _private.changeselPolicy(event, ui)
+        },
+        myPhrase: function (event, value) {
+            return _private.myPhrase(event, value)
+        },
+        openPerson: function (event, value) {
+            return _private.openPerson(event, value)
+        },
+        esignatureOnClick: function (event, ui) {
+            return _private.esignatureOnClick(event, ui)
+        },
+        nextAct: function (event, ui) {
+            return _private.nextAct(event, ui)
+        },
+        modifynextAct: function (event, value) {
+            return _private.modifynextAct(event, value)
+        },
+        pageOnload: function (e) {
+            return _private.pageOnload(e)
+        },
+        pageOnRenderBefore: function (e) {
+            return _private.pageOnRenderBefore(e)
+        },
+        phrasedel: function (e) {
+            return _private.phrasedel(e)
+        },
+        phrasesure: function (e) {
+            return _private.phrasesure(e)
+        },
+        addphrase: function (e) {
+            return _private.addphrase(e)
+        },
+        phraseback: function (e) {
+            return _private.phraseback(e)
+        },
+        phraseadd: function (e) {
+            return _private.phraseadd(e)
+        },
+        reloadTranId: function () {
+            return _private.reloadTranId()
+        },
+        getnextacts: function () {
+            return _private.getnextacts()
+        },
+        showtab: function () {
+            return _private.showtab()
+        },
+        setmanualdecision: function () {
+            return _private.setmanualdecision()
+        },
+        setmodifynextAct: function () {
+            return _private.setmodifynextAct()
+        },
+        getbatchlist: function () {
+            return _private.getbatchlist()
+        },
+        displayBillInfo: function (url) {
+            return _private.displayBillInfo(url)
+        },
+        getPolicy: function (approveValueStr) {
+            return _private.getPolicy(approveValueStr)
+        },
+        setPolicy: function (val) {
+            return _private.setPolicy(val)
+        },
+        isNeedDefaultOption: function (vals) {
+            return _private.isNeedDefaultOption(vals)
+        },
+        setsendmailormsg: function (isOpenMessageSendOnUI, notifyNextBySMS, notifyNextByMail) {
+            return _private.setsendmailormsg(isOpenMessageSendOnUI, notifyNextBySMS, notifyNextByMail)
+        },
+        resizePage: function () {
+            return _private.resizePage()
+        },
+        showapprovehis: function (procInstId) {
+            return _private.showapprovehis(procInstId)
+        },
+        showbtn: function () {
+            return _private.showbtn()
+        },
+        setselnextperson: function (actId, name, id) {
+            return _private.setselnextperson(actId, name, id)
+        },
+        loadNextActs: function () {
+            return _private.loadNextActs()
+        },
+        getOpinion: function (actInstId, assignId, billId) {
+            return _private.getOpinion(actInstId, assignId, billId)
+        },
+        getphrase: function () {
+            return _private.getphrase()
+        },
+        setselnextactperson: function (resultStr) {
+            return _private.setselnextactperson(resultStr)
+        },
+        shownextActs: function (nextactname, ui) {
+            return _private.shownextActs(nextactname, ui)
+        },
+        passComentsubmit: function () {
+            return _private.passComentsubmit()
+        },
+        initCAConfig: function (tCAConfig) {
+            return _private.initCAConfig(tCAConfig)
+        },
+        batchSubmitForCA: function () {
+            return _private.batchSubmitForCA()
+        },
+        checkCAPassword: function (isBatch) {
+            return _private.checkCAPassword(isBatch)
+        },
+        batchSubmit: function () {
+            return _private.batchSubmit()
+        },
+        getbatchid: function () {
+            return _private.getbatchid()
+        },
+        _batchsubmit: function (info) {
+            return _private._batchsubmit(info)
+        },
+        getApprove: function () {
+            return _private.getApprove()
+        },
+        beforeBatchSubmitSigature: function (selectBillIds) {
+            return _private.beforeBatchSubmitSigature(selectBillIds)
+        },
+        getNextPersons: function (isSave) {
+            return _private.getNextPersons(isSave)
+        },
+        manualdecisionsubmit: function () {
+            return _private.manualdecisionsubmit()
+        },
+        beforeInnerSubmit: function () {
+            return _private.beforeInnerSubmit()
+        },
+        innerSubmit: function () {
+            return _private.innerSubmit()
+        },
+        _submit: function (isReadOnly) {
+            return _private._submit(isReadOnly)
+        },
+        beforeSubmitSigature: function () {
+            return _private.beforeSubmitSigature()
+        },
+        toDecimal: function (src, pos) {
+            return _private.toDecimal(src, pos)
+        },
+        checkIsSave: function (callback, type) {
+            return _private.checkIsSave(callback, type)
+        },
+        _save: function (isReadOnly) {
+            return _private._save(isReadOnly)
+        },
+        backto: function () {
+            return _private.backto()
+        },
+        addUploadHtml: function () {
+            return _private.addUploadHtml()
+        },
+        getAttchmentcount: function () {
+            return _private.getAttchmentcount()
+        },
+        selattachment: function (item, attcreater, beizhu) {
+            return _private.selattachment(item, attcreater, beizhu)
+        },
+        attachmentDelete: function (item, id) {
+            return _private.attachmentDelete(item, id)
+        },
+        attachmentView: function (id, type) {
+            return _private.attachmentView(id, type)
+        },
+        isWaf1Bill: function (url) {
+            return _private.isWaf1Bill(url)
+        },
+        messageDigest: function () {
+            return _private.messageDigest()
+        },
+        jMessageAlert: function (message) {
+            return _private.jMessageAlert(message)
+        },
+        onselect: function (event, ui) {
+            return _private.onselect(event, ui)
+        },
+        addphrase: function () {
+            return _private.addphrase()
+        },
+        openAttachmentPage: function (event, value) {
+            return _private.openAttachmentPage(event, value)
+        },
+        getAssignInfo: function () {
+            return _private.getAssignInfo()
+        }
+    });
+    _self.subscribeEvent("pageOnLoadEvent", _public.pageOnload, "after");
+    _self.subscribeEvent("pageOnRenderEvent", _public.pageOnRenderBefore, "before");
+    _self.subscribeEvent("phrasedelActionEvent", _public.phrasedel, "overwrite");
+    _self.subscribeEvent("phrasesureActionEvent", _public.phrasesure, "overwrite");
+    _self.subscribeEvent("phrasebackActionEvent", _public.phraseback, "overwrite");
+    _self.subscribeEvent("phraseaddActionEvent", _public.phraseadd, "overwrite");
+    waf.extend(_private, {
+        modifyNextAct: "#modifynextAct",
+        charFrameId: "predictionChartIframe",
+        curTab: "",
+        leftPanelWidth: "",
+        rightPanelWidth: "",
+        isPredict: true,
+        displayBillInfo: function (url) {
+            if (assign.attachmentMode) {
+                if (!url.endsWith("nobill.html")) {
+                    url += "&hasAttachment=false"
+                }
+            }
+            waf("#billFrame").wafIframe("option", "src", url)
+        },
+        getPolicy: function (approveValueStr) {
+            if (approveValueStr == null || approveValueStr == "") {
+                approveValueStr = "0;" + _self._localeStr.WEB_AGREE + ";" + _self._localeStr.WEB_AGREE + ";:1;" + _self._localeStr.WEB_DISAGREE + ";" + _self._localeStr.WEB_DISAGREE + ";"
+            }
+            var strs = approveValueStr.split(":");
+            for (var i = 0; i < strs.length; i++) {
+                var strTemp = strs[i].split(";");
+                var key = strTemp[0];
+                var text = strTemp[1];
+                var type = strTemp.length == 2 ? _self._localeStr.WEB_ALL : strTemp[2];
+                var line = strTemp.length < 4 ? "" : strTemp[3];
+                var o = {};
+                o.alias = text;
+                o.value = key;
+                if ("agree" == type || type == _self._localeStr.WEB_AGREE || "同意" == type) {
+                    okPolicy.push(o)
+                } else {
+                    if ("disagree" == type || type == _self._localeStr.WEB_DISAGREE || "不同意" == type) {
+                        noPolicy.push(o)
+                    } else {
+                        if ("all" == type || type == _self._localeStr.WEB_ALL || "全部" == type) {
+                            okPolicy.push(o);
+                            noPolicy.push(o)
+                        }
+                    }
+                }
+            }
+        },
+        setPolicy: function (val) {
+            if (val == "true") {
+                if (isFirst) {
+                    isFirst = false
+                } else {
+                    approveOpinions.disagree = $("#approveOpinion").val();
+                    approvePolicy.disagree = waf("#policy").wafSelect("getValue")
+                }
+                if (approvePolicy.agree) {
+                    waf("#policy").wafSelect("setValue", approvePolicy.agree)
+                }
+                $("#approveOpinion").val(approveOpinions.agree);
+                waf("#policy").wafSelect("option", "enumSource", okPolicy)
+            } else {
+                if (isFirst) {
+                    isFirst = false
+                } else {
+                    approveOpinions.agree = $("#approveOpinion").val();
+                    approvePolicy.agree = waf("#policy").wafSelect("getValue")
+                }
+                if (approvePolicy.disagree) {
+                    waf("#policy").wafSelect("setValue", approvePolicy.disagree)
+                }
+                $("#approveOpinion").val(approveOpinions.disagree);
+                waf("#policy").wafSelect("option", "enumSource", noPolicy)
+            }
+            _private.reloadTranId();
+            if (waf(nextActIndex).wafCheckbox("isChecked")) {
+                _private.loadNextActs()
+            }
+        },
+        isNeedDefaultOption: function (vals) {
+            if (assign.isNeedDefaultOption) {
+                waf("#approveOpinion").val(vals)
+            }
+            if (assign.defaultOpinion != null && assign.defaultOpinion != "") {
+                waf("#approveOpinion").val(assign.defaultOpinion)
+            }
+        },
+        getDefaultOption: function (vals) {
+            if (assign.isNeedDefaultOption) {
+                approveOpinions = {
+                    agree: _self._localeStr.WEB_AGREE,
+                    disagree: _self._localeStr.WEB_DISAGREE
+                }
+            }
+            if (assign.defaultOpinion != null && assign.defaultOpinion != "") {
+                approveOpinions = {
+                    agree: assign.defaultOpinion,
+                    disagree: assign.defaultOpinion
+                }
+            }
+        },
+        setsendmailormsg: function (isOpenMessageSendOnUI, notifyNextBySMS, notifyNextByMail) {
+            waf("#issendmsgormail").wafPanel("option", "hidden", !isOpenMessageSendOnUI);
+            waf("#sendmsg").wafCheckbox("option", "hidden", !isOpenMessageSendOnUI);
+            waf("#sendmail").wafCheckbox("option", "hidden", !isOpenMessageSendOnUI);
+            waf("#sendmsg").wafCheckbox("setChecked", notifyNextBySMS);
+            waf("#sendmail").wafCheckbox("setChecked", notifyNextByMail)
+        },
+        resizePage: function () {
+            var rightwidth = Math.ceil((300 / window.innerWidth) * 100);
+            if (window.screen.width <= 1366) {
+                rightwidth = 21
+            }
+            var leftwidth = 100 - rightwidth;
+            waf("#splitPanel").wafSplitPanel("option", {
+                split: false,
+                leftWidth: leftwidth,
+                rightWidth: rightwidth
+            });
+            var billHeightOffset = 220;
+            var tabOffset = 100;
+            if (assign.newPage && approvetype == "approve") {
+                billHeightOffset = 160;
+                tabOffset = 155
+            }
+            if (approvetype != "approve") {
+                billHeightOffset -= 120
+            }
+            $("#tabs .ui-waftabs-panel").eq(0).height(window.innerHeight - tabOffset);
+            if (approvetype == "batchapprove") {
+                if (assign.batchApproveUrl) {
+                    var times = 0;
+                    waf("#billFrame").wafIframe("option", "height", window.innerHeight - 100);
+                    var interval = setInterval(function () {
+                        try {
+                            window.frames.billFrame.$("#gview_queryGrid .ui-jqgrid-bdiv").eq(0).css("height", window.innerHeight - 220);
+                            if (times > 4) {
+                                clearInterval(interval)
+                            }
+                            times++
+                        } catch (e) { }
+                    }, 500);
+                    waf("#billFrame").wafIframe("option", "scrolling", "auto")
+                } else {
+                    $("#gview_queryGrid .ui-jqgrid-bdiv").height($("#tabs").height() - 100);
+                    $("#gview_queryGrid .ui-jqgrid-bdiv").css("overflow-y", "auto");
+                    $("#panel5 .ui-jqgrid").height($("#tabs").height())
+                }
+            } else {
+                if (assign.messageDigest) {
+                    $("#panel5").css({
+                        height: window.innerHeight - billHeightOffset,
+                        "overflow-y": "auto",
+                        "overflow-x": "hidden"
+                    });
+                    $("#bill_content").css({
+                        height: window.innerHeight - billHeightOffset,
+                        overflow: "auto"
+                    })
+                } else {
+                    waf("#billFrame").wafIframe("option", "height", window.innerHeight - billHeightOffset);
+                    waf("#billFrame").wafIframe("option", "scrolling", "auto")
+                }
+            }
+            if (assign.absStr || assign.decisionDesc) {
+                _private.changeBillHeight(90, false)
+            }
+            if (approvetype == "batchapprove" || approvetype == "approve") {
+                $("#myPhraseList .scrollhid").height($("#approveTask").height() - 100)
+            }
+        },
+        changeBillHeight: function (height, isClose) {
+            var billHeight = 0;
+            if (assign.messageDigest) {
+                billHeight = $("#panel5").height()
+            } else {
+                billHeight = waf("#billFrame").wafIframe("option", "height")
+            }
+            if (isClose) {
+                billHeight += height
+            } else {
+                billHeight -= height
+            }
+            if (assign.messageDigest) {
+                $("#panel5").css({
+                    height: billHeight,
+                    "overflow-y": "auto"
+                })
+            } else {
+                waf("#billFrame").wafIframe("option", "height", billHeight);
+                waf("#billFrame").wafIframe("option", "scrolling", "auto")
+            }
+        },
+        showapprovehis: function (procInstId) {
+            var params = {};
+            params.embed = "true";
+            params.proInstId = procInstId;
+            waf.doPost({
+                url: waf.getContextPath() + "/flowRelated.do?method=getFlowRealted",
+                data: params,
+                success: function (data) {
+                    var _html = "";
+                    for (var i = 0; i < data.length; i++) {
+                        var action = data[i].action;
+                        var node = data[i].node;
+                        if (node == null) {
+                            node = ""
+                        }
+                        var operatorResult = data[i].operatorResult;
+                        if (operatorResult == "" || operatorResult == null) {
+                            operatorResult = action
+                        }
+                        var op = "";
+                        var operatorOpinion = data[i].operatorOpinion;
+                        if (operatorOpinion == "" || operatorOpinion == null) {
+                            operatorOpinion = ""
+                        }
+                        var classname = "agree";
+                        var type = data[i].type;
+                        var titlename = "";
+                        if (type == 9 || type == 10) {
+                            var operatorResults = operatorResult.split(",");
+                            if (operatorResults.length == 2) {
+                                op += "<span title=" + _self._localeStr.WEB_APPROVALRESULTS + ">" + _self._localeStr.WEB_APPROVALRESULTS + ":</span><span title='" + operatorResults[0] + "'>" + operatorResults[0] + "</span><br/>";
+                                op += "<span title=" + _self._localeStr.WEB_HANDLEROPINIONS + ">" + _self._localeStr.WEB_HANDLEROPINIONS + ":</span><span title='" + operatorResults[1] + "'>" + operatorResults[1] + "</span><br/>";
+                                if (operatorResults[0] == _self._localeStr.WEB_DISAGREE || operatorResults[0] == "Disagree") {
+                                    classname = "disagree"
+                                }
+                            } else {
+                                op += "<span title='" + operatorResult + "'>" + operatorResult + "</span><br/>"
+                            }
+                            titlename = _self._localeStr.WEB_APPROVALCOMMENTS
+                        } else {
+                            op += "<span title='" + operatorResult + "'>" + operatorResult + "</span><br/>";
+                            if (type == 1) {
+                                classname = "jump";
+                                titlename = _self._localeStr.WEB_JUMPCOMMENTS
+                            } else {
+                                if (type == 2) {
+                                    classname = "append";
+                                    titlename = _self._localeStr.WEB_COUNTERSIGNCOMMENTS
+                                } else {
+                                    if (type == 4) {
+                                        classname = "stop";
+                                        titlename = _self._localeStr.WEB_ENDCOMMENTS
+                                    } else {
+                                        if (type == 3) {
+                                            classname = "deliver";
+                                            titlename = _self._localeStr.WEB_TRANSFERRCOMMENTS
+                                        } else {
+                                            if (type == 0) {
+                                                classname = "jump";
+                                                titlename = _self._localeStr.WEB_REJECTCOMMENTS
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                        if (titlename != "") {
+                            op += "<span title='" + titlename + "'>" + titlename + ":</span><span title='" + operatorOpinion + "'>" + operatorOpinion + "</span><br/>"
+                        }
+                        if (i > 0) {
+                            if (data[i].node == data[i - 1].node) {
+                                _html += '<div class="infos">	<div class="content">		<div class="title">			<i></i>			<span style="float:left;">' + data[i].operatorTime + '</span>			<span style="float:right;">' + data[i].operator + '</span>		</div>		<div class="op">' + op + "</div>	</div></div>";
+                                if (i != data.length - 1) {
+                                    if (data[i].node != data[i + 1].node) {
+                                        _html += "</div></li>"
+                                    }
+                                }
+                                continue
+                            }
+                        }
+                        _html += '<li><div class="node">	<i class="' + classname + '"></i>	<span>' + node + "</span></div>";
+                        if (i != data.length - 1) {
+                            if (data[i].node == data[i + 1].node) {
+                                _html += '<div class="info"><div class="infos">'
+                            } else {
+                                _html += '<div class="info">'
+                            }
+                        } else {
+                            _html += '<div class="info">'
+                        }
+                        _html += '	<div class="content">		<div class="title">';
+                        if (i != data.length - 1) {
+                            if (data[i].node == data[i + 1].node) {
+                                _html += "<i></i>"
+                            }
+                        }
+                        _html += '			<span style="float:left;">' + data[i].operatorTime + '</span>			<span style="float:right;">' + data[i].operator + '</span>		</div>		<div class="op">' + op + "</div>	</div></div>";
+                        if (i != data.length - 1) {
+                            if (data[i].node != data[i + 1].node) {
+                                _html += "</li>"
+                            }
+                        }
+                    }
+                    if (!_html) {
+                        _html = _self._localeStr.WEB_NOAPPROVALRECORDS
+                    }
+                    $("#approveHisInfo ul")[0].innerHTML = _html
+                }
+            })
+        },
+        showbtn: function () {
+            waf("#dynamicSign").wafLinkButton("option", "hidden", !assign.dynamicSign);
+            waf("#appendActivity").wafLinkButton("option", "hidden", !assign.allowAppendActivity || approvetype == "manualdecision");
+            waf("#jumpto").wafLinkButton("option", "hidden", !assign.allowJumpTo);
+            waf("#kickback").wafLinkButton("option", "hidden", !assign.allowKickBack);
+            waf("#deliver").wafLinkButton("option", "hidden", !assign.allowDeliver);
+            waf("#YZJShare").wafLinkButton("option", "hidden", true);
+            if (assign.allowJumpTo || assign.allowKickBack) {
+                var assignId = assign.assignId;
+                waf.doPost({
+                    url: waf.getContextPath() + "/common/tree.do?method=getJumpAndKickBackModel",
+                    async: false,
+                    data: {
+                        assignId: assignId
+                    },
+                    success: function (data) {
+                        if (assign.allowJumpTo) {
+                            waf("#jumpto").wafLinkButton("option", "hidden", !data.jumpTo)
+                        }
+                        if (assign.allowKickBack) {
+                            waf("#kickback").wafLinkButton("option", "hidden", !data.kickBack)
+                        }
+                    }
+                })
+            }
+            if (assign.canSpecifyNextPerformer || assign.mustShowPostActivities || assign.showNextP) {
+                if (assign.mustShowPostActivities || assign.showNextP) {
+                    waf(nextActIndex).wafCheckbox("option", "checked", true)
+                }
+            } else {
+                waf(nextActIndex).wafCheckbox("option", "hidden", true)
+            }
+            if (approvetype != "batchapprove") {
+                waf("#btnImage").wafLinkButton("option", "hidden", false)
+            } else {
+                waf("#btnBill").wafLinkButton("option", "hidden", false)
+            }
+            if (approvetype == "approve") {
+                waf("#save").wafLinkButton("option", "hidden", false)
+            }
+        },
+        setselnextperson: function (actId, name, id) {
+            var ps = {};
+            if (selnextPersons[actId]) {
+                ps = selnextPersons[actId];
+                if (ps[id]) {
+                    return
+                }
+            }
+            ps[id] = {
+                number: "",
+                name: name,
+                id: id
+            };
+            selnextPersons[actId] = ps
+        },
+        loadNextActs: function () {
+            _private.getnextacts();
+            var nextActs = assign.nextActs;
+            _private.innerloadNextActs(nextActs)
+        },
+        innerloadNextActs: function (nextActs, selectAct) {
+            var table = $("#nextActList");
+            var _innerhtml = "";
+            if (nextActs) {
+                var actTitles = {};
+                if (nextActs.length == 0) {
+                    _innerhtml += "<div>" + _self._localeStr.WEB_NOSETACTIVITYPERSON + "</div>";
+                    $(_private.modifyNextAct).wafLinkButton("option", "hidden", true)
+                } else {
+                    var hasAct = false;
+                    var selectActobj = {};
+                    if (selectAct) {
+                        for (var actid in selectAct) {
+                            selectActobj[actid] = actid
+                        }
+                    }
+                    for (var i = 0; i != nextActs.length; i++) {
+                        var act = nextActs[i];
+                        var num = 0;
+                        var actId = act.actId;
+                        var candidateselected = act.candidateselected;
+                        if (!selectActobj[actId]) {
+                            for (var id in candidateselected) {
+                                _private.setselnextperson(actId, candidateselected[id], id);
+                                num++
+                            }
+                        }
+                        if (_private.isPredict && !act.isPredict) {
+                            continue
+                        }
+                        hasAct = true;
+                        var actKey = act.actKey;
+                        var actName = act.actName;
+                        var isAllPersonAsPerformer = act.isAllPersonAsPerformer;
+                        var persons = act.persons;
+                        var count = act.count;
+                        var issel = false;
+                        var title = "";
+                        if (num > 0) {
+                            issel = true
+                        }
+                        _innerhtml += "<div class='actInfo' actId='" + actId + "' actKey='" + actKey + "' title='" + actName + "'>" + actName + "</div><div class='actInfoperson' id='" + actId + "'>";
+                        if (issel) {
+                            _innerhtml += _self._localeStr.WEB_SELECTED;
+                            var j = 0;
+                            for (var id in candidateselected) {
+                                if (j > 0) {
+                                    title += "、"
+                                }
+                                title += candidateselected[id];
+                                if (j > 2) {
+                                    j++;
+                                    continue
+                                }
+                                if (j > 0) {
+                                    _innerhtml += "、"
+                                }
+                                _innerhtml += "<span class='persons' personid='" + id + "'>" + candidateselected[id] + "</span>";
+                                j++
+                            }
+                            actTitles[actId] = title;
+                            if (j > 2) {
+                                _innerhtml += _self._localeStr.WEB_ANDSOON + j + _self._localeStr.WEB_PEOPLE
+                            }
+                        } else {
+                            if (count > 0) {
+                                _innerhtml += "";
+                                var j = 0;
+                                for (var id in persons) {
+                                    if (j > 0) {
+                                        title += "、"
+                                    }
+                                    title += persons[id];
+                                    if (j > 2) {
+                                        _innerhtml += _self._localeStr.WEB_ANDSOON + count + _self._localeStr.WEB_PEOPLE;
+                                        break
+                                    }
+                                    if (j > 0) {
+                                        _innerhtml += "、"
+                                    }
+                                    _innerhtml += "<span class='persons' personid='" + id + "'>" + persons[id] + "</span>";
+                                    j++
+                                }
+                                actTitles[actId] = title
+                            } else {
+                                _innerhtml += _self._localeStr.WEB_UNSELECTEDPERSON
+                            }
+                        }
+                        _innerhtml += "</div>"
+                    }
+                    if (!hasAct) {
+                        _innerhtml += "<div>" + _self._localeStr.WEB_POINTNEXTTIP + "</div>"
+                    }
+                    $(_private.modifyNextAct).wafLinkButton("option", "hidden", false)
+                }
+                table.html(_innerhtml);
+                for (var actTitle in actTitles) {
+                    $("#" + actTitle).attr("title", actTitles[actTitle])
+                }
+            }
+        },
+        getOpinion: function (actInstId, assignId, billId) {
+            var params = {};
+            params.actInstId = actInstId;
+            params.assignId = assignId;
+            params.billId = billId;
+            params.type = approvetype;
+            waf.doPost({
+                url: waf.getContextPath() + "/workflow/approve.do?method=getOpinion",
+                data: params,
+                success: function (data) {
+                    if (data != null && data != "" && data.option != null && data.option != "") {
+                        $("#approveOpinionInfo span").text(data.option)
+                    } else {
+                        $("#approveOpinionInfo").hide()
+                    }
+                }
+            })
+        },
+        supportMulti: function () {
+            $("#approveDeliverBtn span").text(_self._localeStr.WEB_DELIVER);
+            $("#approvePassBtn span").text(_self._localeStr.WEB_CIRCULATEBTN);
+            $("#approveAppendBtn span").text(_self._localeStr.WEB_ADDSIGN);
+            $("#approveDynamicSignBtn span").text(_self._localeStr.WEB_CONTERSIGNED);
+            $("#approveSaveBtn span").text(_self._localeStr.WEB_SAVE);
+            $("#approveSubmitBtn span").text(_self._localeStr.WEB_SUBMIT);
+            $("#btnUpload").prepend(_self._localeStr.WEB_UPLOADATTACH);
+            $("#attachmul1").prepend(_self._localeStr.WEB_ATTCHNUM);
+            $("#attchmul2").prepend(_self._localeStr.WEB_VIEWDETAIL);
+            $("#attachmul3").prepend(_self._localeStr.WEB_ATTCHGE);
+            $("#attchment").append($(".attchmentnuminfo"));
+            $("#attchment").append($("#upload"));
+            $("#myPhraseInfo .edit").text(_self._localeStr.WEB_SAVE);
+            $("#myPhraseInfo .backprevious").text(_self._localeStr.WEB_BACK);
+            $("#myPhraseInfo .commit").text(_self._localeStr.WEB_DETERMINE);
+            $("#myPhrasetext").prop("placeholder", _self._localeStr.WEB_ENTER_COMMENTS)
+        },
+        initApprove: function () {
+            if (assign.riskInsight) {
+                _private.initRiskInsight()
+            } else {
+                waf("#riskInsight").wafTab("remove")
+            }
+            _private.initEsignature();
+            _private.initCCPerson();
+            _private.showbtn();
+            _private.initBillPage();
+            _private.initAttachment();
+            _private.initOperateIframe();
+            _private.initAbstractAndPhrase();
+            _private.initApprovePolicy()
+        },
+        initBatchapprove: function () {
+            _private.initEsignature();
+            _private.showbtn();
+            locationurl.billIds = decodeURIComponent(parent.window.billIDs);
+            locationurl.assignmentIds = parent.window.assignmentIDs;
+            _private.getbatchlist();
+            _private.initAbstractAndPhrase();
+            _private.initApprovePolicy();
+            waf("#attchment").wafSection("option", "hidden", true);
+            $("#upload").remove();
+            $("#operateInfo").remove();
+            $(".attchmentnuminfo").remove()
+        },
+        initManualdecision: function () {
+            _private.initManualdecisionNextAct();
+            _private.showbtn();
+            _private.initBillPage();
+            _private.initAttachment();
+            _private.initOperateIframe();
+            _private.initDecisionDescAndVal()
+        },
+        initPassComent: function () {
+            if (assign.passcoment != null) {
+                waf("#passComentOpinion").val(assign.passcoment)
+            }
+            if (assign.isFeedBack) {
+                waf("#sendmsgs").wafCheckbox("disable");
+                waf("#sendmails").wafCheckbox("disable")
+            }
+            waf("#submit").wafLinkButton("option", "hidden", assign.isFeedBack);
+            waf("#passAssignment").wafLinkButton("option", "hidden", (assign.againPass === "false"));
+            _private.initBillPage();
+            _private.initAttachment();
+            _private.initOperateIframe()
+        },
+        initManualdecisionNextAct: function () {
+            nextActIndex = "#nextAct1";
+            _private.modifyNextAct = "#modifynextAct1";
+            if (waf(nextActIndex).wafCheckbox("isChecked")) {
+                _private.loadNextActs()
+            }
+        },
+        initRiskInsight: function () {
+            try {
+                mod.use("billInsight", function () {
+                    riskInsight = true;
+                    $("#form").append('<div id="billInsight" class="" ctrlrole="waf.billInsight" data-domcreated="true"></div>');
+                    $("#li_approveTask").css("width", "50%");
+                    $("#li_riskInsight").show();
+                    billInsightOption = _private.getWeakRisk();
+                    _private.updateBillInsightNum(billInsightOption);
+                    $(window).resize(function () {
+                        _private.resizeBillInsight(true)
+                    })
+                })
+            } catch (e) {
+                console.log(_self._localeStr.WEB_CONSOLETEXT)
+            }
+        },
+        initCCPerson: function () {
+            if (assign.allowCC) {
+                $("#panelCC").show()
+            }
+            if (assign.ccPersonIds != null && assign.ccPersonName != null) {
+                waf("#textCC").prop("personIds", assign.ccPersonIds);
+                waf("#textCC").val(assign.ccPersonName)
+            }
+        },
+        initEsignature: function () {
+            if (!assign.isEsignature || assign.esignatureAttachId == undefined || assign.esignatureAttachId == "") {
+                $("#panel6").remove()
+            } else {
+                var _html = "<img src='/easweb/webviews/webframework/webcom/attachment/view.jsp?bosID=" + assign.esignatureAttachId + "'/>";
+                $("#esigndiv")[0].innerHTML = _html
+            }
+        },
+        initBillPage: function () {
+            if (assign.messageDigest) {
+                try {
+                    _private.messageDigest()
+                } catch (e) {
+                    console.log(_self._localeStr.WEB_BILLINITFAILED)
+                }
+            } else {
+                if (!assign.billEditUrl || assign.billEditUrl == "nobill.html") {
+                    assign.billEditUrl = "/easweb/webviews/workflow/nobill.html?"
+                }
+                if (approvetype == "passComent" && msgId) {
+                    assign.billEditUrl = assign.billEditUrl + "&msgId=" + encodeURIComponent(msgId)
+                }
+                _private.displayBillInfo(assign.billEditUrl)
+            }
+        },
+        initAttachment: function () {
+            waf("#attachmentBtn").wafLinkButton("option", "hidden", assign.attachDisabled);
+            _private.refreshAttachCountInner(assign.attachmentCount)
+        },
+        initOperateIframe: function () {
+            var url = "/easweb/dynamicPage.do?event=initialize&method=doEvent&uipk=com.kingdee.bos.workflow.metas.approveRelatedInfo&isshowapprove=true&assignmentId=" + assign.assignId;
+            waf("#operateiframe").wafIframe("option", "src", url)
+        },
+        initApprovePolicy: function () {
+            _private.getPolicy(assign.approveValue);
+            _private.getDefaultOption();
+            if (assign.id) {
+                waf("#approveResult").wafRadioGroup("setValue", assign.approveResult);
+                waf("#policy").wafSelect("setValue", assign.handlerOpinion)
+            } else {
+                waf("#approveResult").wafRadioGroup("setValue", "true")
+            }
+        },
+        initAbstractAndPhrase: function () {
+            if (assign.absStr) {
+                waf("#optionalSection").wafSection("option", "title", _self._localeStr.WEB_PROCESSSUMMARY);
+                waf("#optionalSection").wafSection("option", "hidden", false);
+                $("#description").text(assign.absStr)
+            }
+            _private.getphrase();
+            $("#myPhraseList").on("click", "li", function (e) {
+                _private.clickPhrase(e)
+            });
+            $("#myPhraseList").on("dblclick", "li", function (e) {
+                _private.dblclickPhrase(e)
+            });
+            $("#myPhraseList").on("click", "li i", function (e) {
+                _private.phrasedel(e)
+            })
+        },
+        initDecisionDescAndVal: function () {
+            if (assign.decisionDesc) {
+                waf("#optionalSection").wafSection("option", "title", _self._localeStr.WEB_DECISONDESC);
+                waf("#optionalSection").wafSection("option", "hidden", false);
+                $("#description").text(assign.decisionDesc);
+                _private.changeBillHeight(85, false)
+            }
+            _private.setmanualdecision()
+        },
+        initCalProcDiagram: function () {
+            var url = "/easweb/webviews/workflow/calProcDiagramNew.jsp?procInstId=" + assign.procInstId + "&actinstId=" + assign.actInstId + "&newPage=" + assign.newPage;
+            waf("#" + _private.charFrameId).wafIframe("option", "src", url);
+            var urlWin = "/easweb/webviews/workflow/calProcDiagram.jsp?procInstId=" + assign.procInstId + "&actinstId=" + assign.actInstId;
+            waf("#chartIframe").wafIframe("option", "src", urlWin);
+            $("#chart").click(function () {
+                $("#chart").hide()
+            });
+            $("#chartClose").click(function () {
+                $("#chart").hide()
+            });
+            $("#openChartIframe").click(function () {
+                $("#chart").show()
+            });
+            var times = 0;
+            var interval = setInterval(function () {
+                if (window.frames[_private.charFrameId]) {
+                    var num = window.frames[_private.charFrameId].num;
+                    if (num > 0) {
+                        var iWidth = window.innerWidth * (4 / 5);
+                        var rowNum = parseInt(iWidth / 176);
+                        var calcHeight = Math.ceil(num / rowNum) * 140;
+                        var winHeight = "";
+                        if (top == parent.parent) {
+                            winHeight = window.innerHeight
+                        } else {
+                            winHeight = window.screen.availHeight - 120
+                        }
+                        var iHeight = winHeight * (4 / 5);
+                        if (calcHeight < iHeight) {
+                            iHeight = calcHeight
+                        }
+                        var iTop = (winHeight - 70 - iHeight) / 2;
+                        var iLeft = (window.innerWidth - 10 - iWidth) / 2;
+                        $("#chartIframe").css({
+                            "margin-left": iLeft,
+                            "margin-top": iTop,
+                            width: iWidth,
+                            height: iHeight
+                        })
+                    }
+                }
+                times++;
+                if (times > 100) {
+                    clearInterval(interval)
+                }
+            }, 100)
+        },
+        initPageLayout: function () {
+            if (assign.newPage) {
+                $("#predictionChart").remove();
+                _private.charFrameId = "predictionChartIframeNew";
+                _private.initBtnNew()
+            } else {
+                $("#predictionChartNew").remove()
+            }
+            if (locationurl.isOpenNewTab != undefined && locationurl.isOpenNewTab == "true") {
+                $("#nextActList").css("height", "25vh")
+            }
+        },
+        initCalProcDiagramPanel: function () {
+            if (approvetype == "approve") {
+                _private.initCalProcDiagram()
+            } else {
+                $("#chart").remove();
+                $("#predictionChart").remove();
+                $("#predictionChartNew").remove()
+            }
+        },
+        initSection: function () {
+            if (approvetype != "batchapprove") {
+                waf("#predictionChart").wafSection("option", "onopen", function (event) {
+                    _private.changeBillHeight(50, false)
+                });
+                waf("#predictionChart").wafSection("option", "onclose", function (event) {
+                    _private.changeBillHeight(50, true)
+                });
+                waf("#operateInfo").wafSection("option", "onopen", function (event) {
+                    _private.changeBillHeight(220, false)
+                });
+                waf("#operateInfo").wafSection("option", "onclose", function (event) {
+                    _private.changeBillHeight(220, true)
+                });
+                waf("#optionalSection").wafSection("option", "onopen", function (event) {
+                    _private.changeBillHeight(60, false)
+                });
+                waf("#optionalSection").wafSection("option", "onclose", function (event) {
+                    _private.changeBillHeight(60, true)
+                })
+            }
+        },
+        initZoomTool: function () {
+            $("#onClose").show();
+            $("#tabs_ul li").eq($("#tabs_ul li").length - 1).append($("#onClose"));
+            $("#splitPanel_LeftSplitPanel").prepend($("#onOpen"));
+            $("#onClose").bind("click", function () {
+                $("#splitPanel").height($("#splitPanel_LeftSplitPanel").height());
+                rightPanelWidth = $("#splitPanel_RightSplitPanel").width();
+                leftPanelWidth = $("#splitPanel_LeftSplitPanel").width();
+                $("#splitPanel_RightSplitPanel").css("width", "0%");
+                $("#splitPanel_LeftSplitPanel").css("width", "100%");
+                $("#onOpen").show();
+                if (riskInsight && _private.curTab == "riskInsight") {
+                    $(".billInsight_cardPanel").css("display", "none")
+                }
+                if (approvetype == "batchapprove" && !assign.batchApproveUrl) {
+                    var newWidth = $("#queryGrid").wafGrid("getGridParentWidth");
+                    $("#queryGrid").jqGrid("setGridWidth", newWidth)
+                }
+            });
+            $("#onOpen").bind("click", function () {
+                $("#onOpen").hide();
+                $("#splitPanel_RightSplitPanel").css("width", rightPanelWidth);
+                $("#splitPanel_LeftSplitPanel").css("width", leftPanelWidth);
+                if (riskInsight && _private.curTab == "riskInsight") {
+                    $(".billInsight_cardPanel").show()
+                }
+                if (approvetype == "batchapprove" && !assign.batchApproveUrl) {
+                    var newWidth = $("#queryGrid").wafGrid("getGridParentWidth");
+                    $("#queryGrid").jqGrid("setGridWidth", newWidth)
+                }
+            });
+            $("#onOpen").bind("hover", function () {
+                $("#onOpen").css("opacity", 1)
+            })
+        },
+        pageOnload: function (e) {
+            _private.supportMulti();
+            _private.showtab();
+            var billId = assign.billId;
+            if (approvetype == "approve") {
+                _private.initApprove()
+            } else {
+                if (approvetype == "batchapprove") {
+                    _private.initBatchapprove()
+                } else {
+                    if (approvetype == "manualdecision") {
+                        _private.initManualdecision()
+                    } else {
+                        if (approvetype == "passComent") {
+                            _private.initPassComent();
+                            billId = passId
+                        }
+                    }
+                }
+            }
+            _private.initSection();
+            _private.initPageLayout();
+            _private.initCalProcDiagramPanel();
+            _private.getOpinion(assign.actInstId, assign.assignId, billId);
+            _private.setsendmailormsg(assign.isOpenMessageSendOnUI, assign.notifyNextBySMS, assign.notifyNextByMail);
+            if (assign.newPage) {
+                _private.initZoomTool()
+            }
+            _private.resizePage();
+            window.scrollTo(0, 0);
+            var newTab = waf.getUrlParams(document.URL).isOpenNewTab;
+            if (newTab) {
+                $("#operateInfo").css("margin", "3px 5px 5px 0")
+            }
+        },
+        initBtnNew: function () {
+            var submitBtn = waf("#submit").wafLinkButton("option", "hidden");
+            $("#toolBar .ui-toolbar-ul").css("float", "right");
+            if (approvetype == "approve" || approvetype == "batchapprove") {
+                if (approvetype == "approve") {
+                    var offset = $("#panelNew1").width() - ($("#approveSaveBtn").width() * 2 + 20);
+                    if (offset > 0) {
+                        $("#approveSaveBtn").css("margin-left", offset / 2)
+                    }
+                } else {
+                    $("#approveSubmitBtn").css("float", "right")
+                }
+                $("#toolBarNew1").show();
+                $("#panelNew1").show();
+                $("#labelapproveResult_label").hide();
+                waf("#approveSubmitBtn").wafLinkButton("option", "hidden", submitBtn);
+                waf("#approveSaveBtn").wafLinkButton("option", "hidden", waf("#save").wafLinkButton("option", "hidden"));
+                waf("#approveDeliverBtn").wafLinkButton("option", "hidden", waf("#deliver").wafLinkButton("option", "hidden"));
+                waf("#approvePassBtn").wafLinkButton("option", "hidden", waf("#passAssignment").wafLinkButton("option", "hidden"));
+                waf("#approveKickbackBtn").wafLinkButton("option", "hidden", waf("#kickback").wafLinkButton("option", "hidden"));
+                waf("#approveAppendBtn").wafLinkButton("option", "hidden", waf("#appendActivity").wafLinkButton("option", "hidden"));
+                waf("#approveDynamicSignBtn").wafLinkButton("option", "hidden", waf("#dynamicSign").wafLinkButton("option", "hidden"));
+                waf("#approveJumpBtn").wafLinkButton("option", "hidden", waf("#jumpto").wafLinkButton("option", "hidden"))
+            } else {
+                if (approvetype == "manualdecision") {
+                    $("#panelNew3").show();
+                    var b = waf("#deliver").wafLinkButton("option", "hidden");
+                    if (!b) {
+                        $("#toolBarNew3").show()
+                    }
+                    waf("#decisionDeliverBtn").wafLinkButton("option", "hidden", waf("#deliver").wafLinkButton("option", "hidden"));
+                    waf("#decisionSubmitBtn").wafLinkButton("option", "hidden", submitBtn)
+                } else {
+                    if (approvetype == "passComent") {
+                        $("#panelNew2").show();
+                        var b = waf("#passAssignment").wafLinkButton("option", "hidden");
+                        if (!b) {
+                            $("#toolBarNew2").show()
+                        }
+                        waf("#passPassBtn").wafLinkButton("option", "hidden", b);
+                        waf("#passSubmitBtn").wafLinkButton("option", "hidden", submitBtn)
+                    }
+                }
+            }
+            waf("#submit").wafLinkButton("option", "hidden", true);
+            waf("#save").wafLinkButton("option", "hidden", true);
+            waf("#deliver").wafLinkButton("option", "hidden", true);
+            waf("#passAssignment").wafLinkButton("option", "hidden", true);
+            waf("#kickback").wafLinkButton("option", "hidden", true);
+            waf("#appendActivity").wafLinkButton("option", "hidden", true);
+            waf("#dynamicSign").wafLinkButton("option", "hidden", true);
+            waf("#jumpto").wafLinkButton("option", "hidden", true);
+            if (approvetype != "batchapprove") {
+                $("#assignTitle").show();
+                $("#assignTitle").css("width", $("#toolBar").width() - $("#toolBar .ui-toolbar-ul").width());
+                $("#assignTitle").text(assign.title);
+                $("#assignTitle").prop("title", assign.title)
+            }
+        },
+        changePolicy: function (event, ui) {
+            _private.setPolicy(ui.current);
+            if (ui.current == "false") {
+                $("#panel").hide()
+            } else {
+                $("#panel").show()
+            }
+        },
+        deliver: function (event, value) {
+            var para = {};
+            if (approvetype == "batchapprove") {
+                para.sourceID = _private.getbatchid().assignIds
+            } else {
+                para.sourceID = assign.assignId
+            }
+            wfCommonUtil.deliverAssignment(para)
+        },
+        passAssignment: function (event, value) {
+            var para = {};
+            if (approvetype == "batchapprove") {
+                var info = _private.getbatchid();
+                para.sourceID = info.assignIds;
+                para.bizObjID = info.billIds
+            } else {
+                para.sourceID = assign.assignId;
+                para.bizObjID = assign.billId
+            }
+            wfCommonUtil.passComment(para)
+        },
+        kickback: function (event, value) {
+            var assignid = "";
+            if (approvetype == "batchapprove") {
+                assignid = _private.getbatchid().assignIds
+            } else {
+                assignid = assign.assignId
+            }
+            var url = waf.getContextPath() + "/dynamicPage.do?event=initialize&method=doEvent&uipk=com.kingdee.bos.workflow.metas.kickBackPage&assignmentId=" + encodeURIComponent(assignid);
+            wfCommonUtil.windowopen(url, _self._localeStr.WEB_REJECT, 450, 320)
+        },
+        jumpto: function (event, value) {
+            var assignid = "";
+            if (approvetype == "batchapprove") {
+                assignid = _private.getbatchid().assignIds
+            } else {
+                assignid = assign.assignId
+            }
+            var url = waf.getContextPath() + "/dynamicPage.do?event=initialize&method=doEvent&uipk=com.kingdee.bos.workflow.metas.jump&assignmentId=" + encodeURIComponent(assignid);
+            wfCommonUtil.windowopen(url, _self._localeStr.WEB_JUMP, 450, 281)
+        },
+        dynamicSign: function (event, value) {
+            var assignid = "";
+            if (approvetype == "batchapprove") {
+                assignid = _private.getbatchid().assignIds
+            } else {
+                assignid = assign.assignId
+            }
+            var url = waf.getContextPath() + "/dynamicPage.do?event=initialize&method=doEvent&uipk=com.kingdee.bos.workflow.metas.dynamicSignPage&assignmentId=" + encodeURIComponent(assignid);
+            wfCommonUtil.windowopen(url, _self._localeStr.WEB_COUNTERSIGNPART, 450, 281)
+        },
+        appendActivity: function (event, value) {
+            var billId = "";
+            var assignId = "";
+            if (approvetype == "batchapprove") {
+                var info = _private.getbatchid();
+                assignId = info.assignIds;
+                billId = info.billIds
+            } else {
+                assignId = assign.assignId;
+                billId = assign.billId
+            }
+            var url = waf.getContextPath() + "/dynamicPage.do?event=initialize&method=doEvent&uipk=com.kingdee.bos.workflow.metas.appendSignPage&assignmentId=" + encodeURIComponent(assignId) + "&billIds=" + encodeURIComponent(billId) + "&isAppended=" + assign.isAppended;
+            if (assign.appendMode) {
+                url += "&appendMode=" + assign.appendMode[0]
+            }
+            if (assign.routeMode) {
+                url += "&routeMode=" + assign.routeMode[0]
+            }
+            wfCommonUtil.windowopen(url, _self._localeStr.WEB_COUNTERSIGN, 520, 746)
+        },
+        modifynextAct: function (event, value) {
+            _private.setmodifynextAct()
+        },
+        setselnextactperson: function (resultStr) {
+            _private.innerloadNextActs(assign.nextActs, resultStr);
+            for (var actid in resultStr) {
+                var ps = resultStr[actid];
+                var _innerhtml = _self._localeStr.WEB_SELECTED;
+                var j = 0;
+                if (_private.isEmptyObject(ps)) {
+                    delete selnextPersons[actid]
+                } else {
+                    var title = "";
+                    for (var id in ps) {
+                        var person = ps[id];
+                        var name = person.name;
+                        _private.setselnextperson(actid, name, id);
+                        if (j > 0) {
+                            title += "、"
+                        }
+                        title += name;
+                        if (j > 2) {
+                            j++;
+                            continue
+                        }
+                        if (j > 0) {
+                            _innerhtml += "、"
+                        }
+                        _innerhtml += "<span class='persons' personid='" + id + "'>" + name + "</span>";
+                        j++
+                    }
+                    if (j > 2) {
+                        _innerhtml += _self._localeStr.WEB_ANDSOON + j + _self._localeStr.WEB_PEOPLE
+                    }
+                    $("#" + actid).html(_innerhtml);
+                    $("#" + actid).attr("title", title)
+                }
+            }
+        },
+        isEmptyObject: function (obj) {
+            for (var key in obj) {
+                return false
+            }
+            return true
+        },
+        getphrase: function () {
+            waf.doPost({
+                url: waf.getContextPath() + "/workflow/approve.do?method=getAppMyPhraseList",
+                success: function (data) {
+                    var myPhraseList = $("#myPhraseList .showdel");
+                    myPhraseList.html("");
+                    for (var i = 0; i < data.length; i++) {
+                        var row = $("<li></li>");
+                        row.attr({
+                            "data-id": data[i].id,
+                            title: data[i].phraseText
+                        });
+                        row.text(data[i].phraseText);
+                        row.append("<i></i>");
+                        myPhraseList.append(row)
+                    }
+                }
+            })
+        },
+        clickPhrase: function (e) {
+            $("#myPhraseInfo li").removeClass("cur");
+            var targetElem = $(e.target);
+            targetElem.addClass("cur");
+            $("#myPhrasetext").val(targetElem.attr("title"));
+            $("#myPhrasetext").attr("data-id", targetElem.attr("data-id"))
+        },
+        dblclickPhrase: function (e) {
+            var itemval = $(e.target).attr("title");
+            $("#approveOpinion").val(itemval);
+            $("#myPhraseInfo li").removeClass("cur");
+            $("#myPhrasetext").attr("data-id", "");
+            $("#myPhrasetext").val("");
+            $("#phrasePanel").hide()
+        },
+        phrasesure: function (e) {
+            var text = $("#myPhrasetext").val();
+            if (text != null && text.length > 1000) {
+                _self.showInfo(_self._localeStr.WEB_APPROVALCOMMENTS_TOOLONG);
+                return null
+            }
+            $("#approveOpinion").val(text);
+            $("#myPhraseInfo li").removeClass("cur");
+            $("#myPhrasetext").attr("data-id", "");
+            $("#myPhrasetext").val("");
+            $("#phrasePanel").hide()
+        },
+        phraseback: function (e) {
+            $("#myPhraseInfo li").removeClass("cur");
+            $("#myPhrasetext").attr("data-id", "");
+            $("#myPhrasetext").val("");
+            $("#phrasePanel").hide()
+        },
+        myPhrase: function (event, value) {
+            $("#phrasePanel").show();
+            $("#myPhrasesection .ui-jqgrid-bdiv").css("height", "auto")
+        },
+        addphrase: function () {
+            var text = $("#myPhrasetext").val();
+            if (text != null && text.length > 1000) {
+                _self.showInfo(_self._localeStr.WEB_APPROVALCOMMENTS_TOOLONG);
+                return null
+            }
+            var param = {};
+            var rowid = $("#myPhrasetext").attr("data-id");
+            var value = $("#myPhrasetext").val();
+            if (!value) {
+                return
+            }
+            if (rowid) {
+                param.method = "updateOption";
+                param.opId = rowid;
+                param.opName = value
+            } else {
+                param.phraseTxt = value;
+                param.method = "saveMyPhrase"
+            }
+            waf.doPost({
+                url: waf.getContextPath() + "/workflow/approve.do",
+                data: param,
+                success: function (data) {
+                    _private.getphrase();
+                    _self.showSuccess(_self._localeStr.WEB_ADDCOMMONCOMMENTS)
+                }
+            })
+        },
+        phrasedel: function (e) {
+            var param = {};
+            param.phraseIds = $(e.target).parent().attr("data-id");
+            $("#myPhrasetext").attr("data-id", "");
+            $("#myPhrasetext").val("");
+            waf.doPost({
+                url: waf.getContextPath() + "/workflow/approve.do?method=delMyPhrase",
+                data: param,
+                success: function (data) {
+                    _private.getphrase();
+                    _self.showSuccess(_self._localeStr.WEB_DELETECOMMONCOMMENTS)
+                }
+            })
+        },
+        pageOnRenderBefore: function (e) {
+            assign = _self.getPageInitData();
+            if (approvetype != "passComent") {
+                _private.initCAConfig(assign.CAConfig)
+            }
+            var title = "";
+            if (approvetype == "batchapprove") {
+                title = _self._localeStr.WEB_BATCHAPPROVAL
+            } else {
+                title = assign.title
+            }
+            _self.changeTitle(title)
+        },
+        phraseadd: function (e) {
+            var datarow = {
+                phraseText: ""
+            };
+            waf("#myPhrasegrid").wafGrid("addRow", {
+                data: datarow
+            })
+        },
+        viewProcessDiagram: function (event, value) {
+            var para = {};
+            if (approvetype == "batchapprove") {
+                var assignIds = _private.getbatchid().assignIds;
+                if (assignIds.split(";").length != 1) {
+                    _self.showInfo(_self._localeStr.WEB_SELECTARECORD);
+                    return false
+                }
+                para.sourceID = assignIds.split(";")[0]
+            } else {
+                para.sourceID = assign.assignId
+            }
+            wfCommonUtil.viewProcessDiagram(para)
+        },
+        reloadTranId: function () {
+            var approveResult = waf("#approveResult").wafRadioGroup("getValue");
+            var policy = waf("#policy").wafSelect("getValue");
+            var ispass;
+            if (approveResult == "false") {
+                ispass = false
+            } else {
+                if (approveResult == "true") {
+                    ispass = true
+                }
+            }
+            if (assign) {
+                var approveValueStr = assign.approveValue;
+                if (approveValueStr == null || approveValueStr == "") {
+                    approveValueStr = "0;" + _self._localeStr.WEB_AGREE + ";" + _self._localeStr.WEB_AGREE + ";:1;" + _self._localeStr.WEB_DISAGREE + ";" + _self._localeStr.WEB_DISAGREE + ";"
+                }
+                var strs = approveValueStr.split(":");
+                for (var i = 0; i < strs.length; i++) {
+                    var strTemp = strs[i].split(";");
+                    if (strTemp.length != 4) {
+                        continue
+                    }
+                    if (ispass && policy == strTemp[0]) {
+                        transId = strTemp[3];
+                        return
+                    }
+                }
+            }
+        },
+        changeselPolicy: function (event, ui) {
+            _private.reloadTranId();
+            if (waf(nextActIndex).wafCheckbox("isChecked")) {
+                _private.loadNextActs()
+            }
+        },
+        getnextacts: function () {
+            var param = {};
+            param.assignId = assign.assignId;
+            param.associatedLine = transId;
+            param.isPredict = _private.isPredict;
+            param.isNewProcessCenter = true;
+            waf.doPost({
+                url: waf.getContextPath() + "/common/tree.do?method=findPostParticipants",
+                data: param,
+                async: false,
+                success: function (data) {
+                    assign.nextActs = data
+                }
+            })
+        },
+        showtab: function () {
+            if (approvetype == "approve" || approvetype == "batchapprove") {
+                $("#tabs").wafTabs("remove", "#manualdecision");
+                $("#tabs").wafTabs("remove", "#passComent")
+            } else {
+                if (approvetype == "manualdecision") {
+                    $("#tabs").wafTabs("remove", "#approveTask");
+                    $("#tabs").wafTabs("remove", "#passComent")
+                } else {
+                    if (approvetype == "passComent") {
+                        $("#tabs").wafTabs("remove", "#approveTask");
+                        $("#tabs").wafTabs("remove", "#manualdecision")
+                    }
+                }
+            }
+            if (approvetype != "approve") {
+                waf("#riskInsight").wafTab("remove")
+            }
+        },
+        setmanualdecision: function () {
+            var items = assign.decisionItems;
+            var opinions = assign.decisionOpinions;
+            var _html = "";
+            var itemArr = items.split(";");
+            var opinionArr = new Array();
+            if (!opinions) {
+                var opinionItem = "";
+                for (var i = 0; i < itemArr.length; i++) {
+                    opinionItem += (i + 1);
+                    if (i < itemArr.length - 1) {
+                        opinionItem += ";"
+                    }
+                    opinionArr.push(i + 1)
+                }
+                assign.decisionOpinions = opinionItem
+            } else {
+                opinionArr = opinions.split(";")
+            }
+            var json = [];
+            for (var i = 0; i < itemArr.length; i++) {
+                var name = itemArr[i];
+                var val = opinionArr[i];
+                var para = {};
+                para.value = val + "_" + i;
+                para.alias = name;
+                json.push(para)
+            }
+            waf("#radioDecision").wafRadioGroup("setItems", null, json);
+            waf("#radioDecision").wafRadioGroup("setValue", json[0].value)
+        },
+        nextActs: function (event, ui) {
+            _private.shownextActs("modifynextAct1", ui)
+        },
+        nextAct: function (event, ui) {
+            _private.shownextActs("modifynextAct", ui)
+        },
+        modifynextActs: function (event, value) {
+            _private.setmodifynextAct()
+        },
+        setmodifynextAct: function () {
+            var jsonval = "";
+            if (selnextPersons == null || selnextPersons.length == 0) {
+                jsonval = ""
+            } else {
+                jsonval = JSON.stringify(selnextPersons)
+            }
+            waf.window.open({
+                url: waf.getContextPath() + "/dynamicPage.do?event=initialize&method=doEvent&uipk=com.kingdee.bos.workflow.metas.setNextAct&debug=true&assignmentId=" + encodeURIComponent(assign.assignId) + "&selnextPersons=" + encodeURIComponent(jsonval) + "&asso=" + transId + "&isPredict=" + _private.isPredict,
+                openType: "iframe",
+                method: "POST",
+                data: {},
+                modal: true,
+                title: _self._localeStr.WEB_NEXTACTIVITY,
+                position: "center",
+                width: 1020,
+                height: 580,
+                minHeight: 560,
+                minWidth: 1020,
+                iconCls: "waf-ui-icon",
+                draggable: true,
+                resizable: true,
+                close: function (event, ui) { },
+                retValCallBack: function (resultData) {
+                    if (resultData && resultData.resultStr && resultData.resultStr.length > 0) {
+                        var resultStr = JSON.parse(resultData.resultStr);
+                        selnextPersons = {};
+                        _private.isPredict = resultData.isPredict;
+                        _private.setselnextactperson(resultStr)
+                    }
+                }
+            })
+        },
+        getbatchlist: function () {
+            if (assign.batchApproveUrl) {
+                var url = waf.getContextPath() + assign.batchApproveUrl + "&hasToolbar=false&showCommonQuery=false";
+                var billIds = locationurl.billIds.split(";");
+                var temp = "id%20in%20(";
+                for (var i = 0; i < billIds.length; i++) {
+                    if (billIds[i]) {
+                        if (i == 0) {
+                            temp += "%27" + encodeURIComponent(billIds[i]) + "%27"
+                        } else {
+                            temp += "%2C%27" + encodeURIComponent(billIds[i]) + "%27"
+                        }
+                    }
+                }
+                temp += ")";
+                $("<form id='framesrcbillform' method='POST' type='hidden' target='billFrame' action='" + url + "'></form>").insertAfter($("#billFrame")).append($("<input type='hidden' name='filterInfo' value='" + temp + "'>")).append($("<input type='hidden' name='botpFilter' value='" + temp + "'>"));
+                setTimeout(function () {
+                    document.getElementById("framesrcbillform").submit()
+                }, 500);
+                var times = 0;
+                var interval = setInterval(function () {
+                    var frame = document.getElementById("billFrame");
+                    $($(frame)[0].contentDocument.body).find(".ui-jqgrid").css({
+                        margin: "0px",
+                        width: "100%"
+                    });
+                    if (times > 600) {
+                        clearInterval(interval)
+                    }
+                    times++
+                })
+            } else {
+                waf("#billFrame").remove();
+                var listinfo = {};
+                waf.doPost({
+                    url: waf.getContextPath() + "/workflow/approve.do?method=getBatchApproveBillGrid",
+                    data: {
+                        billIds: locationurl.billIds
+                    },
+                    async: false,
+                    success: function (data) {
+                        listinfo = data
+                    }
+                });
+                var headers = listinfo.headers;
+                var list = listinfo.list;
+                var fields = listinfo.fields;
+                if (headers.length > 0) {
+                    var colmodel = [];
+                    var paraid = {
+                        name: "id",
+                        label: "id",
+                        hidden: true,
+                        key: true
+                    };
+                    colmodel.push(paraid);
+                    for (var m = 0; m < headers.length; m++) {
+                        var para = {
+                            name: fields[m],
+                            label: headers[m]
+                        };
+                        colmodel.push(para)
+                    }
+                    var myGridoptions = {
+                        id: "queryGrid",
+                        colModel: colmodel,
+                        multiselect: true,
+                        loadInit: false,
+                        shrinkToFit: true
+                    };
+                    if (headers.length > 15) {
+                        myGridoptions.shrinkToFit = false
+                    }
+                    var dom = waf.createDOM("grid", myGridoptions);
+                    waf.appendDOM(waf("#panel5"), dom);
+                    waf.initComponent("grid", myGridoptions, dom);
+                    for (var i = 0; i < list.length; i++) {
+                        for (var j in list[i]) {
+                            if (list[i][j] != null && typeof list[i][j] == "object") {
+                                list[i][j] = list[i][j].alias
+                            }
+                        }
+                        waf("#queryGrid").wafGrid("addRow", {
+                            data: list[i]
+                        })
+                    }
+                }
+            }
+        },
+        shownextActs: function (nextactname, ui) {
+            if (ui.checked) {
+                $(".approve-next-persons").show();
+                _private.loadNextActs()
+            } else {
+                $(".approve-next-persons").hide();
+                waf("#" + nextactname).wafLinkButton("option", "hidden", true);
+                selnextPersons = {}
+            }
+        },
+        submit: function (event, value) {
+            if (approvetype == "approve") {
+                _private.confirmSumit("beforeInnerSubmit")
+            } else {
+                if (approvetype == "manualdecision") {
+                    _private.manualdecisionsubmit()
+                } else {
+                    if (approvetype == "batchapprove") {
+                        _private.confirmSumit("batchSubmitForCA")
+                    } else {
+                        if (approvetype == "passComent") {
+                            _private.passComentsubmit()
+                        }
+                    }
+                }
+            }
+        },
+        confirmSumit: function (funcName) {
+            if (assign.enableMultiapproveConfirm == "true") {
+                var ok = function () {
+                    _private[funcName]()
+                };
+                var cancel = function () {
+                    return
+                };
+                waf.msgBox.showConfirm({
+                    title: _self._localeStr.WEB_MESSPROMPT,
+                    summaryMsg: _self._localeStr.WEB_CONFIRMSUBMITAPPROVAL,
+                    buttonType: "ok-cancel",
+                    buttonCallBack: [ok, cancel]
+                })
+            } else {
+                _private[funcName]()
+            }
+        },
+        passComentsubmit: function () {
+            var params = {};
+            params.parameter = sourceIDs;
+            params.chksendMessage = "yes";
+            if (waf("#sendmsgs").wafCheckbox("isChecked")) {
+                params.chksendMobile = "yes"
+            }
+            if (waf("#sendmails").wafCheckbox("isChecked")) {
+                params.chksendMail = "yes"
+            }
+            params.opinion = $("#passComentOpinion").val();
+            var option = $("#passComentOpinion").val();
+            if (option != null && option.length > 1000) {
+                _self.showInfo(_self._localeStr.WEB_FEEDBACKCOMMENTS_TOOLONG);
+                return null
+            }
+            waf.doPost({
+                url: waf.getContextPath() + "/passComment/get.do?method=commit",
+                data: params,
+                success: function (data) {
+                    _self.showSuccess(_self._localeStr.WEB_DEEDBACKCIRCULATESUCCESS);
+                    _private.backto()
+                }
+            })
+        },
+        initCAConfig: function (tCAConfig) {
+            caConfig.caConfigInfo = tCAConfig;
+            if (caConfig.caConfigInfo.isSignatureApprove === "true" && caConfig.caConfigInfo.caType != "5") {
+                var initflag = initTopesa();
+                if (initflag != 0) {
+                    waf.msgBox.showError(_self._localeStr.WEB_CAINITFAILED)
+                }
+            }
+        },
+        batchSubmitForCA: function () {
+            if (caConfig.caConfigInfo.checkPassword === "true" && caConfig.caConfigInfo.isSignatureApprove === "true" && caConfig.caConfigInfo.caType != "5") {
+                _private.checkCAPassword(true)
+            } else {
+                _private.batchSubmit()
+            }
+        },
+        checkCAPassword: function (isBatch) {
+            var setcss = function () {
+                var item = parent.$(".ui-msgbox .ui-prompt .prompt");
+                if ($(item)) {
+                    $(item).css({
+                        height: "78px",
+                        margin: "20px 0 20px 190px",
+                        background: "url(/easweb/webviews/workflow/img/waitpic.png) no-repeat"
+                    })
+                }
+            };
+            setTimeout(setcss, 100);
+            var prmt = function (r, dialog) {
+                if (r) {
+                    var res = -1;
+                    try {
+                        res = checkPassword(r, caConfig.caConfigInfo.userName)
+                    } catch (errMsg) {
+                        _self.showInfo(_self._localeStr.WEB_USBKEYCHECKPASSDETAIL + errMsg.message);
+                        return false
+                    }
+                    if (res != 0) {
+                        _self.showInfo(_self._localeStr.WEB_USBKEYCHECKPASS)
+                    } else {
+                        if (isBatch) {
+                            _private.batchSubmit()
+                        } else {
+                            _private.innerSubmit()
+                        }
+                    }
+                }
+            };
+            var cancel = function () {
+                return
+            };
+            waf.msgBox.showPrompt({
+                title: _self._localeStr.WEB_MESSPROMPT,
+                icon: "prompt",
+                summaryMsg: _self._localeStr.WEB_INPUTUSBKEYPASSWORD,
+                buttonCallBack: [prmt, cancel]
+            });
+            parent.$("#waf-messageBox-prompt-input").prop("type", "password")
+        },
+        batchSubmit: function () {
+            var info = _private.getbatchid();
+            if (info == null) {
+                return
+            }
+            _private._batchsubmit(info)
+        },
+        getbatchid: function () {
+            var info = {};
+            var assignIds = "";
+            var billIds = "";
+            var allbillIds = locationurl.billIds;
+            var allassignmentIds = locationurl.assignmentIds;
+            if (assign.batchApproveUrl) {
+                var frame = document.getElementById("billFrame");
+                billIds = $(frame)[0].contentWindow.waf("#queryGrid").dataGrid("getSelectedRows")
+            } else {
+                billIds = waf("#queryGrid").wafGrid("getSelectedRows")
+            }
+            if (billIds.length == 0) {
+                billIds = allbillIds;
+                assignIds = allassignmentIds
+            } else {
+                for (var i = 0; i < allbillIds.split(";").length; i++) {
+                    var allbillId = allbillIds.split(";")[i];
+                    if (billIds.toString().indexOf(allbillId) > -1) {
+                        if (assignIds != "") {
+                            assignIds += ";"
+                        }
+                        assignIds += allassignmentIds.split(";")[i]
+                    }
+                }
+                billIds = billIds.join(";")
+            }
+            info.billIds = billIds;
+            info.assignIds = assignIds;
+            return info
+        },
+        _batchsubmit: function (info) {
+            var approve = _private.getApprove();
+            if (!approve) {
+                return
+            }
+            var billIds = info.billIds;
+            var assignIds = info.assignIds;
+            approve.isSignatureApprove = caConfig.caConfigInfo.isSignatureApprove;
+            if (caConfig.caConfigInfo.isSignatureApprove === "true" && caConfig.caConfigInfo.caType != "5") {
+                if (!_private.beforeBatchSubmitSigature(billIds)) {
+                    return
+                }
+                approve.plainTextMap = caConfig.plainTextMap;
+                approve.plainSignatureMap = caConfig.plainSignatureMap
+            }
+            var nextPersons = _private.getNextPersons();
+            if (!nextPersons) {
+                return
+            }
+            var ok = function () {
+                var params = {};
+                approve.nextActs = nextPersons;
+                params.approve = JSON.stringify(approve);
+                params.assignIds = assignIds;
+                params.billIds = billIds;
+                waf.doPost({
+                    url: waf.getContextPath() + "/common/tree.do?method=batchSubmits",
+                    data: params,
+                    success: function (data) {
+                        if (data == "OK") {
+                            _self.showSuccess(_self._localeStr.WEB_BATCHAPPROVESUCCESS);
+                            _private.backto()
+                        } else {
+                            _self.showInfo(_self._localeStr.WEB_PLEASEREFRESH)
+                        }
+                    }
+                })
+            };
+            var cancel = function () {
+                return
+            };
+            if (showerror != "") {
+                waf.msgBox.showConfirm({
+                    title: _self._localeStr.WEB_MESSPROMPT,
+                    summaryMsg: showerror,
+                    buttonType: "ok-cancel",
+                    buttonCallBack: [ok, cancel]
+                })
+            } else {
+                ok()
+            }
+        },
+        getApprove: function () {
+            var opinion = waf("#approveOpinion").val();
+            if (assign.needApproveOpinion && (opinion == null || opinion.trim() == "")) {
+                _self.showInfo(_self._localeStr.WEB_APPROVALCOMMENTSNOBLANK);
+                return null
+            }
+            if (opinion != null && opinion.length > 1000) {
+                _self.showInfo(_self._localeStr.WEB_APPROVALCOMMENTSTOOLONG);
+                return null
+            }
+            var ispass = null;
+            var approveResult = waf("#approveResult").wafRadioGroup("getValue");
+            if (approveResult == "false") {
+                ispass = "false";
+                if (assign.mustFillOpinionWhenDisagree == "true") {
+                    if ((opinion == null || opinion.trim() == "") || opinion == _self._localeStr.WEB_DISAGREE) {
+                        _self.showInfo(_self._localeStr.WEB_DISAGREEOPINION);
+                        return null
+                    }
+                }
+            } else {
+                if (approveResult == "true") {
+                    ispass = "true"
+                }
+            }
+            var approve = {};
+            approve.assignId = assign.assignId;
+            approve.id = assign.id;
+            approve.opinion = opinion;
+            var handlerOpinion = waf("#policy").wafSelect("getValue");
+            if (handlerOpinion) {
+                approve.handlerOpinion = handlerOpinion
+            } else {
+                approve.handlerOpinion = "0"
+            }
+            approve.handlerContent = waf("#policy").wafSelect("getSelectedAlias");
+            approve.approveResult = ispass;
+            approve.transitionId = transId;
+            approve.isSendSMS = waf("#sendmsg").wafCheckbox("isChecked") ? "true" : "false";
+            approve.isSendMail = waf("#sendmail").wafCheckbox("isChecked") ? "true" : "false";
+            if (assign.multiapproveinfoId) {
+                approve.id = assign.multiapproveinfoId
+            }
+            var isesignaturecheck = false;
+            if (approvetype == "approve" || approvetype == "batchapprove") {
+                isesignaturecheck = waf("#esignature").wafCheckbox("isChecked")
+            } else {
+                if (approvetype == "manualdecision") {
+                    isesignaturecheck = waf("#esignature1").wafCheckbox("isChecked")
+                }
+            }
+            if (assign.isEsignature && isesignaturecheck) {
+                approve.esignatureid = assign.esignatureId
+            }
+            return approve
+        },
+        beforeBatchSubmitSigature: function (selectBillIds) {
+            var modelIDs = "";
+            var tbillIDs;
+            if (Object.prototype.toString.call(selectBillIds) === "[object Array]") {
+                tbillIDs = selectBillIds
+            } else {
+                tbillIDs = selectBillIds.split(";")
+            }
+            for (var i = 0; i < tbillIDs.length; i++) {
+                if (modelIDs != "") {
+                    modelIDs += ","
+                }
+                modelIDs += tbillIDs[i]
+            }
+            if (modelIDs === undefined || modelIDs == null || modelIDs === "") {
+                waf.msgBox.showError("bill id can't be null");
+                return false
+            }
+            var actionUrl = waf.getContextPath() + "/component/ca.do?method=getPlainTextFromDB&billIDs=" + waf.encodeURIComponent(modelIDs) + "&isFromWF=true";
+            waf.doPost({
+                url: actionUrl,
+                async: false,
+                success: function (data) {
+                    if (data == null || data == "" || data == undefined) {
+                        return false
+                    } else {
+                        caConfig.plainTextMap = data.plainTextMap
+                    }
+                },
+                error: function (data) {
+                    waf.msgBox.showError("getPlainTextFromDB failed");
+                    return false
+                }
+            });
+            var arraySignature = "";
+            var billids = modelIDs.split(",");
+            for (var i = 0; i < billids.length; i++) {
+                var key = billids[i];
+                var signResult = -1;
+                try {
+                    signResult = signMessage(caConfig.plainTextMap[key], caConfig.caConfigInfo.userName)
+                } catch (errMsg) {
+                    _self.showInfo(_self._localeStr.WEB_SIGANATUREFAILED + errMsg.message);
+                    return false
+                }
+                if (signResult == 1 || signResult == 2 || signResult == 3) {
+                    if (signResult == 1 || signResult == 2) {
+                        _self.showInfo(_self._localeStr.WEB_SIGAFAILEDUSBKEY)
+                    }
+                    return false
+                }
+                if (arraySignature != "") {
+                    arraySignature += ","
+                }
+                arraySignature += signResult
+            }
+            caConfig.plainSignatureMap = arraySignature;
+            return true
+        },
+        getNextPersons: function (isSave) {
+            var locale = waf.getContext().locale;
+            var symbol = "。";
+            if (locale == "l1") {
+                symbol = "."
+            }
+            showerror = "";
+            var nextPersons = [];
+            var ispass = waf("#approveResult").wafRadioGroup("getValue");
+            if (ispass == "false") {
+                return nextPersons
+            }
+            var isnextact = waf(nextActIndex).wafCheckbox("isChecked");
+            var directActName = "";
+            if (isnextact) {
+                var num = 0;
+                var index = 0;
+                var directCount = 0;
+                var directIsSel = false;
+                for (var i = 0; i != assign.nextActs.length; i++) {
+                    if (_private.isPredict && !assign.nextActs[i].isPredict) {
+                        continue
+                    }
+                    var act = {};
+                    act.actKey = assign.nextActs[i].actKey;
+                    act.persons = {};
+                    var flag = false;
+                    directCount++;
+                    for (var actId in selnextPersons) {
+                        if (actId == assign.nextActs[i].actId) {
+                            var persons = selnextPersons[actId];
+                            for (var id in persons) {
+                                act.persons[id] = "true";
+                                flag = true
+                            }
+                        }
+                    }
+                    if (directCount == 1) {
+                        directIsSel = flag
+                    }
+                    if (!flag) {
+                        if (num < 3) {
+                            if (showerror != "") {
+                                showerror += "、"
+                            }
+                            showerror += assign.nextActs[i].actName
+                        }
+                        num++;
+                        if (num == 1) {
+                            directActName = assign.nextActs[i].actName
+                        }
+                    } else {
+                        nextPersons[index] = act;
+                        index++
+                    }
+                }
+                if (num > 0) {
+                    if (num > 2) {
+                        showerror += _self._localeStr.WEB_ANDSOON + num + _self._localeStr.WEB_NODE
+                    }
+                    if (!isSave && assign.mustSetAllNextPerson) {
+                        _self.showInfo(_self._localeStr.WEB_NEXTACTIVITY + ":" + showerror + symbol);
+                        return null
+                    }
+                    if (!isSave && assign.mustSetAllNextPersonDirectNull && !directIsSel) {
+                        _self.showInfo(_self._localeStr.WEB_NEXTACTIVITY + ":" + directActName + symbol);
+                        return null
+                    }
+                    showerror += _self._localeStr.WEB_NOPARTICIPANTSUBMIT
+                }
+            }
+            return nextPersons
+        },
+        manualdecisionsubmit: function () {
+            var selectValue = waf("#radioDecision").wafRadioGroup("getValue");
+            if (selectValue) {
+                var selItems = $("#radioDecision input[value='" + selectValue + "']").next()[0].innerHTML;
+                var params = {};
+                var nextPersons = _private.getNextPersons();
+                if (!nextPersons) {
+                    return
+                }
+                var ok = function () {
+                    nextPersons = JSON.stringify(nextPersons);
+                    params.nextperson = nextPersons;
+                    params.assignId = assign.assignId;
+                    params.decisionTitle = assign.decisionName;
+                    params.decisionItems = assign.decisionItems;
+                    params.decisionDesc = assign.decisionDesc;
+                    params.decisionOpinions = assign.decisionOpinions;
+                    params.SelectedItems = selItems;
+                    params.SelectedOpinions = selectValue.substr(0, selectValue.indexOf("_"));
+                    waf.doPost({
+                        url: waf.getContextPath() + "/manualdecision/submit.do?method=submit",
+                        data: params,
+                        success: function (data) {
+                            _self.showSuccess(_self._localeStr.WEB_DECISIONSUBMITSUCCESS);
+                            _private.backto()
+                        }
+                    })
+                };
+                var cancel = function () {
+                    return
+                };
+                if (showerror != "") {
+                    waf.msgBox.showConfirm({
+                        title: _self._localeStr.WEB_MESSPROMPT,
+                        summaryMsg: showerror,
+                        buttonType: "ok-cancel",
+                        buttonCallBack: [ok, cancel]
+                    })
+                } else {
+                    ok()
+                }
+            }
+        },
+        beforeInnerSubmit: function () {
+            if (caConfig.caConfigInfo.checkPassword === "true" && caConfig.caConfigInfo.isSignatureApprove === "true" && caConfig.caConfigInfo.caType != "5") {
+                _private.checkCAPassword(false)
+            } else {
+                _private.innerSubmit()
+            }
+        },
+        innerSubmit: function () {
+            if (assign.mustUploadAttachment && waf("#approveResult").wafRadioGroup("getValue") == "true") {
+                var isCurAssignUploadAttach = false;
+                waf.doPost({
+                    url: waf.getContextPath() + "/iwebattachment.do?method=isCurAssignUploadAttach",
+                    data: {
+                        assignId: assign.assignId
+                    },
+                    async: false,
+                    success: function (data) {
+                        if (data == false) {
+                            _self.showWarning(_self._localeStr.WEB_MUSTUPLOAD)
+                        }
+                        isCurAssignUploadAttach = data
+                    }
+                });
+                if (!isCurAssignUploadAttach) {
+                    return
+                }
+            }
+            assign.operation = "approve";
+            var callback = function (isSuccess) {
+                if (isSuccess) {
+                    _private._submit(false)
+                }
+            };
+            var issubmit = _private.checkIsSave(callback, "submit");
+            if (issubmit == null) {
+                _self.jMessageAlert(_self._localeStr.WEB_CHECKERRORSUBMITEND);
+                return false
+            }
+            _private._submit(issubmit)
+        },
+        _submit: function (isReadOnly) {
+            var approve = _private.getApprove();
+            if (!approve) {
+                return
+            }
+            var nextPersons = _private.getNextPersons();
+            if (!nextPersons) {
+                return
+            }
+            var ok = function () {
+                approve.operation = assign.operation;
+                var op = approve.operation;
+                if (caConfig.caConfigInfo.isSignatureApprove === "true" && caConfig.caConfigInfo.caType != "5") {
+                    if (!_private.beforeSubmitSigature()) {
+                        return
+                    }
+                    approve.plainText = caConfig.CA_plainText;
+                    approve.signature = caConfig.CA_signature
+                }
+                if (isReadOnly === undefined || isReadOnly === null || isReadOnly === "") {
+                    isReadOnly = true
+                }
+                if (!isReadOnly) {
+                    var frame = document.getElementById("billFrame");
+                    if (frame.contentDocument.getElementById("frame_tab_0") != null && frame.contentDocument.getElementById("frame_tab_0") != undefined) {
+                        frame = frame.contentDocument.getElementById("frame_tab_0")
+                    }
+                    if (frame.contentWindow._self.getCurrentModel) {
+                        var modelInfo = frame.contentWindow._self.getCurrentModel();
+                        var editModel = JSON.stringify(modelInfo);
+                        approve.model = editModel
+                    }
+                    if (approve.model == null) {
+                        if (frame.contentWindow._self.fireEvent) {
+                            var s = frame.contentWindow._self.fireEvent("save");
+                            if (!s) {
+                                return false
+                            }
+                        }
+                    }
+                }
+                approve.isReadOnly = isReadOnly.toString();
+                approve.isSignatureApprove = caConfig.caConfigInfo.isSignatureApprove;
+                approve.nextActs = nextPersons;
+                if ($("#textCC").prop("personIds")) {
+                    approve.ccPersonIds = $("#textCC").prop("personIds")
+                }
+                var params = {};
+                params.approve = JSON.stringify(approve);
+                waf.doPost({
+                    url: waf.getContextPath() + "/common/tree.do?method=submits",
+                    data: params,
+                    success: function (data) {
+                        if (data) {
+                            assign.id = data;
+                            _self.showSuccess(_self._localeStr.WEB_SUBMITSUCCESS);
+                            _private.backto()
+                        } else {
+                            _self.showInfo(_self._localeStr.WEB_PLEASEREFRESH)
+                        }
+                    }
+                })
+            };
+            var cancel = function () {
+                return
+            };
+            if (showerror != "") {
+                waf.msgBox.showConfirm({
+                    title: _self._localeStr.WEB_MESSPROMPT,
+                    summaryMsg: showerror,
+                    buttonType: "ok-cancel",
+                    buttonCallBack: [ok, cancel]
+                })
+            } else {
+                ok()
+            }
+        },
+        beforeSubmitSigature: function () {
+            var plainText = "";
+            var signatureField = caConfig.caConfigInfo.signatureFields;
+            if (signatureField === null || signatureField === "") {
+                return true
+            }
+            var signatureFields = signatureField.split(";");
+            for (var i = 0; i < signatureFields.length; i++) {
+                var srcValue = "CANOTSIGNATURE";
+                try {
+                    srcValue = eval("document.getElementById('billFrame').contentWindow.document.getElementsByName('" + signatureFields[i] + "')[0].value")
+                } catch (e) {
+                    srcValue = "CANOTSIGNATURE"
+                }
+                if (typeof (srcValue) == "undefined") {
+                    srcValue = "CANOTSIGNATURE"
+                }
+                if (caConfig.caConfigInfo.precisionInfo && caConfig.caConfigInfo.precisionInfo[signatureFields[i]]) {
+                    var pos = parseInt(caConfig.caConfigInfo.precisionInfo[signatureFields[i]]);
+                    if (pos < 0) {
+                        pos = 2
+                    } else {
+                        if (pos > 4) {
+                            pos = 4
+                        }
+                    }
+                    srcValue = _private.toDecimal(srcValue, pos)
+                }
+                plainText = plainText + srcValue
+            }
+            var signResult = -1;
+            try {
+                signResult = signMessage(plainText, caConfig.caConfigInfo.userName)
+            } catch (errMsg) {
+                _self.showInfo(_self._localeStr.WEB_SIGANATUREFAILED + errMsg.message);
+                return false
+            }
+            if (signResult == 1 || signResult == 2 || signResult == 3) {
+                if (signResult == 1 || signResult == 2) {
+                    _self.showInfo(_self._localeStr.WEB_SIGAFAILEDUSBKEY);
+                    return false
+                }
+            } else {
+                caConfig.CA_plainText = plainText;
+                caConfig.CA_signature = signResult
+            }
+            return true
+        },
+        toDecimal: function (src, pos) {
+            var f = parseFloat(src);
+            if (isNaN(f)) {
+                return false
+            }
+            var src_rs = src.indexOf(".");
+            if (src_rs > 0) {
+                var src_zero = src.lastIndexOf("0");
+                while (src.length == src_zero + 1) {
+                    src = src.substring(0, src_zero);
+                    src_zero = src.lastIndexOf("0")
+                }
+                if (src.length == src_rs + 1) {
+                    var src_int = src.substring(0, src_rs);
+                    src = src_int
+                }
+                if (pos == 0) {
+                    return src
+                }
+            }
+            var f = Math.round(src * Math.pow(10, pos)) / Math.pow(10, pos);
+            var s = f.toString();
+            var rs = s.indexOf(".");
+            if (rs < 0 && pos > 0) {
+                rs = s.length;
+                s += "."
+            }
+            while (s.length <= rs + pos) {
+                s += "0"
+            }
+            return s
+        },
+        save: function (event, value) {
+            var callback = function (isSuccess) {
+                if (isSuccess) {
+                    _private._save()
+                }
+            };
+            var issubmit = _private.checkIsSave(callback, "save");
+            if (issubmit == "callBack") {
+                return
+            }
+            if (issubmit == null) {
+                _self.jMessageAlert(_self._localeStr.WEB_CHECKERRORSUBMITEND);
+                return false
+            }
+            _private._save(issubmit);
+            if (!issubmit && riskInsight) {
+                billInsightOption = _private.getWeakRisk();
+                _private.updateBillInsightNum(billInsightOption)
+            }
+        },
+        checkIsSave: function (callback, type) {
+            var issubmit = null;
+            if (!assign.billIsReadOnly) {
+                if (type == "submit" && assign.disagreenotsave && waf("#approveResult").wafRadioGroup("getValue") == "false") {
+                    return true
+                }
+                var frame = document.getElementById("billFrame");
+                if (frame) {
+                    if (frame.contentWindow._self && frame.contentWindow._self.saveAndCallBack) {
+                        frame.contentWindow._self.saveAndCallBack(callback);
+                        return "callBack"
+                    } else {
+                        var canSaveBill = false;
+                        var haveChangeBill = null;
+                        var contentWindowSelf = null;
+                        if (frame.contentWindow._self) {
+                            contentWindowSelf = frame.contentWindow._self
+                        } else {
+                            if (frame.contentDocument.getElementById("frame_tab_0") && frame.contentDocument.getElementById("frame_tab_0").contentWindow._self) {
+                                contentWindowSelf = frame.contentDocument.getElementById("frame_tab_0").contentWindow._self
+                            }
+                        }
+                        if (contentWindowSelf) {
+                            var WFBizSubmitCheckPriority = false;
+                            if (contentWindowSelf.isWFBizSubmitCheckPriority) {
+                                WFBizSubmitCheckPriority = contentWindowSelf.isWFBizSubmitCheckPriority()
+                            }
+                            if (WFBizSubmitCheckPriority) {
+                                if (contentWindowSelf.fireEvent) {
+                                    haveChangeBill = contentWindowSelf.fireEvent("judgeDataModifyActionEvent", ["workflow"])
+                                }
+                                if (contentWindowSelf.beforeSubmit) {
+                                    canSaveBill = contentWindowSelf.beforeSubmit()
+                                } else {
+                                    if (contentWindowSelf.fireEvent) {
+                                        canSaveBill = contentWindowSelf.fireEvent("fieldOnStoreEvent") && contentWindowSelf.fireEvent("submitBeforeActionEvent")
+                                    }
+                                }
+                            } else {
+                                if (contentWindowSelf.beforeSubmit) {
+                                    canSaveBill = contentWindowSelf.beforeSubmit()
+                                } else {
+                                    if (contentWindowSelf.fireEvent) {
+                                        canSaveBill = contentWindowSelf.fireEvent("fieldOnStoreEvent") && contentWindowSelf.fireEvent("submitBeforeActionEvent")
+                                    }
+                                }
+                                if (contentWindowSelf.fireEvent) {
+                                    haveChangeBill = contentWindowSelf.fireEvent("judgeDataModifyActionEvent", ["workflow"])
+                                }
+                            }
+                            if (canSaveBill) {
+                                if (typeof haveChangeBill == "boolean") {
+                                    issubmit = !haveChangeBill
+                                } else {
+                                    issubmit = false
+                                }
+                            }
+                        } else {
+                            issubmit = true
+                        }
+                    }
+                } else {
+                    issubmit = true
+                }
+            } else {
+                issubmit = true
+            }
+            return issubmit
+        },
+        _save: function (isReadOnly) {
+            assign.operation = "approve";
+            var approve = _private.getApprove();
+            if (!approve) {
+                return
+            }
+            if (isReadOnly === undefined || isReadOnly === null || isReadOnly === "") {
+                isReadOnly = true
+            }
+            if (!isReadOnly) {
+                var frame = document.getElementById("billFrame");
+                if (frame.contentDocument.getElementById("frame_tab_0") != null && frame.contentDocument.getElementById("frame_tab_0") != undefined) {
+                    frame = frame.contentDocument.getElementById("frame_tab_0")
+                }
+                if (frame.contentWindow._self.getCurrentModel) {
+                    var modelInfo = frame.contentWindow._self.getCurrentModel();
+                    var editModel = JSON.stringify(modelInfo);
+                    approve.model = editModel
+                }
+                if (approve.model == null) {
+                    if (frame.contentWindow._self.fireEvent) {
+                        var s = frame.contentWindow._self.fireEvent("save");
+                        if (!s) {
+                            return false
+                        }
+                    }
+                }
+            }
+            approve.isReadOnly = isReadOnly.toString();
+            if ($("#textCC").prop("personIds")) {
+                approve.ccPersonIds = $("#textCC").prop("personIds");
+                approve.personName = $("#textCC").prop("value")
+            }
+            var params = {};
+            params.approve = JSON.stringify(approve);
+            waf.doPost({
+                url: waf.getContextPath() + "/common/tree.do?method=saves",
+                data: params,
+                success: function (data) {
+                    if (data) {
+                        assign.id = data;
+                        _self.showSuccess(_self._localeStr.WEB_SAVESUCCESS)
+                    }
+                }
+            })
+        },
+        backto: function () {
+            try {
+                if ($("#billFrame").length > 0 && $("#billFrame")[0].contentWindow._self.fireEvent) {
+                    $("#billFrame")[0].contentWindow._self.fireEvent("destroyEvent")
+                }
+            } catch (e) {
+                console.log("流程中心手动释放单据锁失败")
+            }
+            if (waf.isInFramePage()) {
+                waf.closeCurPageTab()
+            } else {
+                if (top && top.jMessager && top.jMsgcenter && top.jMsgcenter.tab_post_add) {
+                    setTimeout(function () {
+                        top.jMessager.sendMsg(top.jMsgcenter.tab_close)
+                    }, 800)
+                } else {
+                    setTimeout(function () {
+                        try {
+                            if (window.opener) {
+                                if (window.opener.refreshCurrentPage) {
+                                    window.opener.refreshCurrentPage()
+                                }
+                                if (opener.waf && opener.waf("#queryGrid")[0] != undefined) {
+                                    opener.waf("#queryGrid").wafGrid("reloadGrid")
+                                }
+                            }
+                        } catch (e) { }
+                        try {
+                            // 尝试关闭窗口
+                            window.close();
+                            // 检查窗口是否仍然存在,如果存在则表示没有权限
+                            if (!window.closed) {
+                                console.log("没有权限关闭窗口。");
+                                location.href = "/shr/dynamic.do?uipk=shr.workflow.view&inFrame=true&target=allMessageConfig";
+                            }
+                        } catch (error) {
+                            console.log("关闭窗口失败:", error.message);
+                            _self.showSuccess(_self._localeStr.WEB_TASKHASDONE)
+                        }
+                    }, 500)
+                }
+            }
+        },
+        addUploadHtml: function () {
+            var attachmentUploadUrl = waf.getContextPath() + "/iwebattachment.do?method=upload&bosID=" + encodeURIComponent(assign.billId) + "&beizhu=" + assign.assignId;
+            var options = {
+                autoUpload: true,
+                url: attachmentUploadUrl,
+                multiSelect: true,
+                onComplete: function (e, data) {
+                    _private.getAttchmentcount()
+                },
+                onAdd: function (e, data) { },
+                onFail: function (e, data) {
+                    if (data.result.length > 0) {
+                        if (data.result[0].error) {
+                            _self.showInfo(data.result[0].error)
+                        }
+                    }
+                }
+            };
+            $("#upload").wafFileUploadUI(options);
+            _private.getAttchmentcount()
+        },
+        getAttchmentcount: function () {
+            var params = {};
+            params.assignId = assign.assignId;
+            params.billId = assign.billId;
+            var pageType = _self.getUrlParam("type");
+            if (pageType != null && "passComent" === pageType) {
+                params.isPassAround = true
+            }
+            waf.doPost({
+                url: waf.getContextPath() + "/iwebattachment.do?method=getDataList",
+                data: params,
+                success: function (data) {
+                    if (data.disabled) {
+                        $("#attchment,.attchmentnuminfo,#upload").remove();
+                        return
+                    }
+                    if (!data.canAdd) {
+                        $("#upload").remove()
+                    }
+                    var len = data.list.length;
+                    $("#attchmentnum").html(len);
+                    if (len > 0) {
+                        waf("#attchment").wafSection("open")
+                    } else {
+                        waf("#attchment").wafSection("close")
+                    }
+                    var _html = "";
+                    for (var i = 0; i < len; i++) {
+                        var row = data.list[i];
+                        var simpleName = row.simpleName;
+                        var classname = "file";
+                        var picFormat = ["jpg", "gif", "jpeg", "png", "bmp"];
+                        if (picFormat.indexOf(simpleName) > -1) {
+                            classname = "pic"
+                        }
+                        _html += '<li><div><i class="' + classname + '"></i><span class="name" title="' + row.name + "." + simpleName + '">' + row.name + "." + simpleName + '</span><span class="size">(' + row.size + ')</span><a class="download" href="/easweb/webviews/workflow/download.jsp?bosID=' + row.id + '" download="' + row.name + "." + simpleName + '" target="_blank"></a>';
+                        if (classname == "pic") {
+                            _html += '<i class="preview" onclick="javascript:_self.attachmentView(\'' + row.id + "','pic')\"></i>"
+                        } else {
+                            if (simpleName == "pdf") {
+                                _html += '<i class="preview" onclick="javascript:_self.attachmentView(\'' + row.id + "','pdf')\"></i>"
+                            }
+                        }
+                        if (row.canDelete) {
+                            _html += '<i class="delete" onclick="javascript:_self.attachmentDelete(\'' + row["boAttchAsso.id"] + "','" + row.id + "')\"></i>"
+                        }
+                        _html += "</div></li>"
+                    }
+                    $("#attachmentContent ul")[0].innerHTML = _html
+                }
+            })
+        },
+        attachmentDelete: function (bosId, attachId) {
+            var ok = function () {
+                waf.doPost({
+                    url: waf.getContextPath() + "/iwebattachment.do?method=delete",
+                    data: {
+                        bosId: bosId,
+                        attachId: attachId
+                    },
+                    success: function (data) {
+                        _self.showSuccess(_self._localeStr.WEB_ATTACHMENTDELETESUCESS);
+                        _self.getAttchmentcount()
+                    }
+                })
+            };
+            var cancel = function () {
+                return
+            };
+            waf.msgBox.showConfirm({
+                title: _self._localeStr.WEB_MESSPROMPT,
+                summaryMsg: _self._localeStr.WEB_DeleteFile,
+                buttonType: "ok-cancel",
+                buttonCallBack: [ok, cancel]
+            })
+        },
+        attachmentView: function (id, type) {
+            var url = "";
+            if (type == "pic") {
+                url = "/easweb/webviews/workflow/viewpic.jsp?bosID=" + id
+            } else {
+                if (type == "pdf") {
+                    url = "/easweb/webviews/webframework/webcom/attachment/view.jsp?bosID=" + id
+                }
+            }
+            window.open(url, "_blank")
+        },
+        billImage: function (event, value) {
+            var params = {};
+            params.billID = assign.billId;
+            params.method = "getimageurl";
+            waf.doPost({
+                url: waf.getContextPath() + "/workflow/approve.do",
+                data: params,
+                success: function (data) {
+                    var url = data.imgurl;
+                    if (url == "") {
+                        _self.showWarning(_self._localeStr.WEB_IMAGESTATE + data.state + _self._localeStr.WEB_SUPPORTSTATE)
+                    } else {
+                        if (url == "noImg") {
+                            _self.showWarning(_self._localeStr.WEB_HASNOIMAGE)
+                        } else {
+                            wfCommonUtil.windowopen(url, _self._localeStr.WEB_IMAGE, "", "")
+                        }
+                    }
+                }
+            })
+        },
+        bill: function (event, value) {
+            var para = {};
+            if (approvetype == "batchapprove") {
+                var assignIds = _private.getbatchid().assignIds;
+                if (assignIds.split(";").length != 1) {
+                    _self.showInfo(_self._localeStr.WEB_SELECTARECORD);
+                    return false
+                }
+                para.sourceID = assignIds
+            } else {
+                para.sourceID = assign.assignId
+            }
+            para.msgId = msgId;
+            wfCommonUtil.showBill(para)
+        },
+        messageDigest: function () {
+            var messageDigest = assign.messageDigest;
+            if (messageDigest.toString().indexOf("table") > 0) {
+                waf("#panel5").wafPanel("option", "hidden", true);
+                waf("#bill").wafSection("option", "hidden", false);
+                document.getElementById("bill_content").innerHTML = messageDigest
+            } else {
+                waf("#billFrame").remove();
+                waf("#billAttachment").remove();
+                var billDigest = eval("(" + messageDigest + ")");
+                var options = {
+                    title: _self._localeStr.WEB_BASICINFO,
+                    id: "billBaseInfo",
+                    name: "billBaseInfo",
+                    openIconCls: "ui-section-minus",
+                    closeIconCls: "ui-section-plus",
+                    autoOpen: true,
+                    style: "margin-right: 0px;"
+                };
+                var billBaseInfo = waf.createDOM("section", options);
+                waf.appendDOM(waf("#panel5"), billBaseInfo);
+                waf.initComponent("section", options, billBaseInfo);
+                var items = billDigest.items;
+                for (var i = 0; i < items.length; i++) {
+                    var labeloptions = {
+                        id: "labelContainer" + i,
+                        caption: items[i][0],
+                        style: "width: 33%;float: left;"
+                    };
+                    var labeldom = waf.createDOM("labelContainer", labeloptions);
+                    waf("#billBaseInfo").wafSection("appendChildren", labeldom);
+                    waf.initComponent("labelContainer", labeloptions, labeldom);
+                    var txtoptions = {
+                        id: "billbase" + i,
+                        caption: items[i][1]
+                    };
+                    var textDom = waf.createDOM("label", txtoptions);
+                    labeldom.wafLabelContainer("append", textDom);
+                    waf.initComponent("label", txtoptions, textDom)
+                }
+                var entries = billDigest.entrys;
+                for (var j = 0; j < entries.length; j++) {
+                    var obj = entries[j];
+                    var billEntriesoptions = {
+                        title: obj.alias.l2,
+                        id: "billEntriesInfo" + j,
+                        name: "billEntriesInfo" + j,
+                        openIconCls: "ui-section-minus",
+                        closeIconCls: "ui-section-plus",
+                        autoOpen: true,
+                        style: "margin-right: 0px;"
+                    };
+                    var billEntriesInfo = waf.createDOM("section", billEntriesoptions);
+                    waf.appendDOM(waf("#panel5"), billEntriesInfo);
+                    waf.initComponent("section", billEntriesoptions, billEntriesInfo);
+                    if (obj.values.length > 0) {
+                        var colmodel = [];
+                        var env = obj.values[0].items;
+                        for (var m = 0; m < env.length; m++) {
+                            var para = {
+                                name: env[m][3],
+                                label: env[m][0]
+                            };
+                            colmodel.push(para)
+                        }
+                        var myGridoptions = {
+                            id: "myGrid" + j,
+                            colModel: colmodel
+                        };
+                        var dom = waf.createDOM("grid", myGridoptions);
+                        waf("#billEntriesInfo" + j).wafSection("appendChildren", dom);
+                        waf.initComponent("grid", myGridoptions, dom);
+                        var rowData = obj.values;
+                        var gridData = new Array();
+                        for (var n = 0; n < rowData.length; n++) {
+                            var rr = rowData[n].items;
+                            var rowdata = {};
+                            for (var h = 0; h < rr.length; h++) {
+                                var colname = rr[h][3];
+                                rowdata[colname] = rr[h][1]
+                            }
+                            gridData.push(rowdata)
+                        }
+                        waf("#myGrid" + j).wafGrid("addRow", {
+                            data: gridData
+                        })
+                    }
+                }
+            }
+        },
+        initMsgDigestBillAttach: function () {
+            var billAttachmentList = assign.billAttachments;
+            var billAttachmentOptions = {
+                title: _self._localeStr.WEB_ATTACHMENT,
+                id: "billAttachment",
+                name: "billAttachment",
+                openIconCls: "ui-section-minus",
+                closeIconCls: "ui-section-plus",
+                autoOpen: true,
+                style: "margin-right: 0px;"
+            };
+            var billAttachment = waf.createDOM("section", billAttachmentOptions);
+            waf.appendDOM(waf("#panel5"), billAttachment);
+            waf.initComponent("section", billAttachmentOptions, billAttachment);
+            $("#billAttachment .title").after('<span id="billAttachTitle">' + _self._localeStr.WEB_TOTALATCHMNT + "<i></i><span>" + billAttachmentList.length + "</span>个</span>");
+            var _html = "<div class='attachmentContent'><ul>";
+            for (var i = 0; i < billAttachmentList.length; i++) {
+                var row = billAttachmentList[i];
+                var simpleName = row.simpleName;
+                var classname = "file";
+                var picFormat = ["jpg", "gif", "jpeg", "png", "bmp"];
+                if (picFormat.indexOf(simpleName) > -1) {
+                    classname = "pic"
+                }
+                var judgeAttachType = "";
+                if (row.attachTypeEnum == 1) {
+                    judgeAttachType = "<span class='procAttach'>" + _self._localeStr.WEB_PROCESSATTACHMENTS + "</span>"
+                }
+                _html += '<li><div><i class="' + classname + '"></i><span class="name" title="' + row.name + "." + simpleName + '">' + judgeAttachType + row.name + "." + simpleName + '</span><span class="size">(' + row.size + ')</span><a class="download" href="/easweb/webviews/workflow/download.jsp?bosID=' + row.id + '" download="' + row.name + "." + simpleName + '" target="_blank"></a>';
+                if (classname == "pic") {
+                    _html += '<i class="preview" onclick="javascript:_self.attachmentView(\'' + row.id + "','pic')\"></i>"
+                } else {
+                    if (simpleName == "pdf") {
+                        _html += '<i class="preview" onclick="javascript:_self.attachmentView(\'' + row.id + "','pdf')\"></i>"
+                    }
+                }
+                _html += "</div></li>"
+            }
+            _html += "</ul></div>";
+            return _html
+        },
+        selattachment: function (item, attcreater, beizhu) { },
+        showoperate: function (event, value) {
+            var para = {};
+            if (approvetype == "batchapprove") {
+                var assignIds = _private.getbatchid().assignIds;
+                if (assignIds.split(";").length != 1) {
+                    _self.showInfo(_self._localeStr.WEB_SELECTARECORD);
+                    return false
+                }
+                para.assignmentId = assignIds.split(";")[0]
+            } else {
+                para.assignmentId = assign.assignId
+            }
+            if (wfCommonUtil.getOperationRecordsPerm(para.assignmentId)) {
+                wfCommonUtil.showApproveDetail(para)
+            } else {
+                waf.msgBox.showInfo({
+                    title: _self._localeStr.WEB_MESSAGEALERT,
+                    summaryMsg: _self._localeStr.WEB_FORBIDVIEW
+                });
+                $(".ui-msgbox .content").width("330px")
+            }
+        },
+        esignatureOnClick: function (event, ui) {
+            if (ui.checked) {
+                $("#esigndiv").show()
+            } else {
+                $("#esigndiv").hide()
+            }
+        },
+        isWaf1Bill: function (url) { },
+        jMessageAlert: function (message) {
+            _self.showInfo(message)
+        },
+        onselect: function (event, ui) {
+            if (riskInsight) {
+                if (ui.panel.id == "riskInsight") {
+                    waf("#billInsight").billInsight("intelligentInspection", billInsightOption.list);
+                    waf("body").unbind("click");
+                    $(".billInsight_cardPanel").draggable("disable");
+                    _private.updateBillInsightNum(billInsightOption);
+                    _private.resizeBillInsight(false);
+                    _private.curTab = "riskInsight"
+                } else {
+                    $(".billInsight_cardPanel").css("display", "none");
+                    _private.curTab = ""
+                }
+            }
+        },
+        resizeBillInsight: function (windowResize) {
+            var top = $("#li_approveTask").offset().top + 44;
+            var left = $("#li_approveTask").offset().left;
+            if (!windowResize) {
+                left += 10
+            }
+            var width = $("#tabs_ul").width();
+            var t = $(".ui-cardPanel").attr("style") + "width:" + width + "px !important";
+            $(".billInsight_cardPanel").css("cssText", t);
+            $(".billInsight_cardPanel").css({
+                top: top,
+                left: left
+            });
+            $(".ui-cardPanel .noRecords,.ui-cardPanel .noRecordsImage,.ui-cardPanel .noRecordsText").css({
+                width: "100%",
+                margin: "0px",
+                "min-width": "160px"
+            })
+        },
+        getWeakRisk: function () {
+            var urlParams = waf.getUrlParam(assign.billEditUrl);
+            var billId = urlParams.billId;
+            var uipk = urlParams.uipk;
+            var billInsightOption = {};
+            waf.doPost({
+                async: false,
+                url: waf.getContextPath() + "/risk/ForWebController.do?method=getWeakRisk",
+                data: {
+                    uipk: uipk,
+                    id: billId,
+                    riskIds: assign.riskInsight
+                },
+                success: function (data) {
+                    if (data != null) {
+                        billInsightOption = data
+                    }
+                }
+            });
+            return billInsightOption
+        },
+        updateBillInsightNum: function (billInsightOption) {
+            if (!billInsightOption.allExecSuccess) {
+                $("#li_riskInsight span").eq(0).text(_self._localeStr.WEB_RISKINSIGHT + "(" + billInsightOption.failSize + ")")
+            } else {
+                $("#li_riskInsight span").eq(0).text(_self._localeStr.WEB_RISKINSIGHT)
+            }
+        },
+        openPerson: function (event, value) {
+            var selectedIds = waf("#textCC").prop("personIds");
+            var height = 552;
+            if (window.screen.height < 800) {
+                height = 500
+            }
+            var tempWin;
+            if (parent.waf) {
+                tempWin = parent.waf.window
+            } else {
+                tempWin = waf.window
+            }
+            tempWin.open({
+                url: waf.getContextPath() + "/webviews/workflow/commonSelectF7.jsp?f7Type=person&singleSelect=false&selectedIds=" + encodeURIComponent(selectedIds),
+                openType: "iframe",
+                method: "POST",
+                data: {},
+                style: {
+                    padding: "0px"
+                },
+                modal: true,
+                title: _self._localeStr.WEB_CC,
+                position: "center",
+                width: 1000,
+                height: height,
+                minHeight: height,
+                minWidth: 1000,
+                iconCls: "waf-ui-icon",
+                draggable: true,
+                resizable: true,
+                close: function (event, ui) { },
+                retValCallBack: function (resultData) {
+                    if (resultData && resultData.resultStr && resultData.resultStr.length > 0) {
+                        var val = resultData.resultStr.split("||");
+                        waf("#textCC").prop("personIds", val[1]);
+                        waf("#textCC").val(val[2])
+                    }
+                }
+            })
+        },
+        _pageLoadCompletedEventHandler: function () { },
+        openAttachmentPage: function (event, value) {
+            var url = "/easweb/dynamicPage.do?event=initialize&method=doEvent&uipk=com.kingdee.bos.workflow.metas.AttachmentList&assignId=" + assign.assignId + "&billId=" + encodeURIComponent(assign.billId);
+            var pageType = _self.getUrlParam("type");
+            if (pageType != null && "passComent" === pageType) {
+                url += "&isPassAround=true"
+            }
+            waf.window.open({
+                url: url,
+                openType: "iframe",
+                modal: true,
+                title: _self._localeStr.WEB_ATCHMNTMANAGE,
+                position: "center",
+                width: 900,
+                height: 600,
+                iconCls: "waf-ui-icon",
+                draggable: true,
+                resizable: true,
+                close: function (event, ui) {
+                    waf.window.close();
+                    _private.refreshAttachCount()
+                }
+            })
+        },
+        refreshAttachCount: function () {
+            waf.doPost({
+                url: waf.getContextPath() + "/iwebattachment.do?method=getAttachCountByBill",
+                data: {
+                    billId: assign.billId
+                },
+                async: false,
+                success: function (data) {
+                    _private.refreshAttachCountInner(data)
+                }
+            })
+        },
+        refreshAttachCountInner: function (count) {
+            var attachmentBtnTitle = _self._localeStr.WEB_ATCHMNTMANAGE;
+            if (count > 0) {
+                attachmentBtnTitle = _self._localeStr.WEB_ATCHMNTMANAGE + "(" + count + ")"
+            }
+            $("#attachmentBtn span").text(attachmentBtnTitle)
+        },
+        getAssignInfo: function () {
+            return assign
+        }
+    });
+    _self.subscribeEvent("pageLoadCompletedEvent", _private._pageLoadCompletedEventHandler, "after");
+    return _public
+});