Bläddra i källkod

提交备份文件

Heyuan 4 månader sedan
förälder
incheckning
91e68c0a9a

+ 12 - 0
patch/20250110/OASSOConfig.properties

@@ -0,0 +1,12 @@
+#OA认证
+authorizePath=http://oa.shichuangyi.cn:8080/sso/oauth2.0/authorize
+client_id=4385e7ea-16cc-4328-a9dc-a3046c5b1614
+response_type=code
+redirect_uri1=http://ehr.shichuangyi.cn:8080/shr/api/oAToSHR
+getAccessTokenPath=http://oa.shichuangyi.cn:8080/sso/oauth2.0/accessToken
+client_secret=OtuYO2Uwxp9mjrOcbiWcTWMA
+redirect_uri2=http://ehr.shichuangyi.cn:8080/shr/api/oAToSHR
+getLoginIdPath=http://oa.shichuangyi.cn:8080/sso/oauth2.0/profile
+serverName=http://ehr.shichuangyi.cn:8080
+getSsoTokenUrl=http://oa.shichuangyi.cn:8080/ssologin/getToken
+ssoAppid=66dda1e5-5dfa-450b-a3b7-b1a4c4223874

+ 3433 - 0
patch/20250110/approve.js

@@ -0,0 +1,3433 @@
+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)
+        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', '20vh')
+      }
+    },
+    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) {
+      $('body').ready(function () {
+        _private.supportMulti()
+        _private.showtab()
+        var billId = assign.billId
+        if (approvetype == 'approve') {
+          _private.initApprove()
+        } else {
+          if (approvetype == 'batchapprove') {
+            _private.initBatchapprove()
+            if (locationurl && locationurl.assignmentIds) {
+              var actionUrl =
+                waf.getContextPath() +
+                '/activityProperty.do?method=addAssignReadTime'
+              var params = {}
+              params.assignIds = locationurl.assignmentIds
+              waf.doPost({
+                url: actionUrl,
+                data: params,
+                async: true,
+                success: function (data) {}
+              })
+            }
+          } 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']
+                  )
+                } else {
+                  if (contentWindowSelf.checkBillDataChanges) {
+                    haveChangeBill = contentWindowSelf.checkBillDataChanges()
+                  }
+                }
+                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']
+                  )
+                } else {
+                  if (contentWindowSelf.checkBillDataChanges) {
+                    haveChangeBill = contentWindowSelf.checkBillDataChanges()
+                  }
+                }
+              }
+              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("没有权限关闭窗口。");
+					waf.doGet({
+						url: '/shr/shr/msf/service.do?method=callService&serviceName=getSsoOAUrl&ssoPath=http%3a%2f%2foa.shichuangyi.cn%3a8080%2fwui%2findex.html%3fssoToken%3d%7b0%7d%23%2fmain%2fworkflow%2flistDoing%3fmenuIds%3d1%2c13%26menuPathIds%3d1%2c13%26_key%3dybt3pm',
+						success: function (data) {
+							location.href = data
+						}
+					});
+                    //location.href = "/shr/dynamic.do?uipk=shr.workflow.view&inFrame=true";
+                //}
+            } 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 {
+              window.open(url, '_blank')
+            }
+          }
+        }
+      })
+    },
+    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
+      }
+      var params = {}
+      params.f7Type = encodeURIComponent('person')
+      params.singleSelect = false
+      tempWin.open({
+        url:
+          waf.getContextPath() +
+          '/webviews/workflow/commonSelectF7.jsp?selectedIds=' +
+          encodeURIComponent(selectedIds),
+        openType: 'iframe',
+        method: 'POST',
+        data: params,
+        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
+})

BIN
patch/20250110/sp_qy_scy_synctask_websrc.jar


+ 3427 - 0
patch/20250110/备份/1/approve.js

@@ -0,0 +1,3427 @@
+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)
+        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', '20vh')
+      }
+    },
+    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) {
+      $('body').ready(function () {
+        _private.supportMulti()
+        _private.showtab()
+        var billId = assign.billId
+        if (approvetype == 'approve') {
+          _private.initApprove()
+        } else {
+          if (approvetype == 'batchapprove') {
+            _private.initBatchapprove()
+            if (locationurl && locationurl.assignmentIds) {
+              var actionUrl =
+                waf.getContextPath() +
+                '/activityProperty.do?method=addAssignReadTime'
+              var params = {}
+              params.assignIds = locationurl.assignmentIds
+              waf.doPost({
+                url: actionUrl,
+                data: params,
+                async: true,
+                success: function (data) {}
+              })
+            }
+          } 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']
+                  )
+                } else {
+                  if (contentWindowSelf.checkBillDataChanges) {
+                    haveChangeBill = contentWindowSelf.checkBillDataChanges()
+                  }
+                }
+                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']
+                  )
+                } else {
+                  if (contentWindowSelf.checkBillDataChanges) {
+                    haveChangeBill = contentWindowSelf.checkBillDataChanges()
+                  }
+                }
+              }
+              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";
+                }
+            } 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 {
+              window.open(url, '_blank')
+            }
+          }
+        }
+      })
+    },
+    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
+      }
+      var params = {}
+      params.f7Type = encodeURIComponent('person')
+      params.singleSelect = false
+      tempWin.open({
+        url:
+          waf.getContextPath() +
+          '/webviews/workflow/commonSelectF7.jsp?selectedIds=' +
+          encodeURIComponent(selectedIds),
+        openType: 'iframe',
+        method: 'POST',
+        data: params,
+        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
+})

+ 3164 - 0
patch/20250110/备份/approve.js

@@ -0,0 +1,3164 @@
+/**************************提示:只允许修改开发区域,其他区域会被覆盖!********************************/
+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={};
+    /**
+     *  初始化CA认证配置
+    */
+    var caConfig = {
+        caConfigInfo:null,
+        rootDiv:null,
+        CA_plainText:null,
+        CA_signature:null,
+        plainTextMap:null,
+        plainSignatureMap:null
+    };
+    //@beginPublic
+    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);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        reloadTranId:function(){
+         return _private.reloadTranId();
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        getnextacts:function(){
+         return _private.getnextacts();
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        showtab:function(){
+         return _private.showtab();
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        setmanualdecision:function(){
+         return _private.setmanualdecision();
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        setmodifynextAct:function(){
+         return _private.setmodifynextAct();
+		}
+	    ,
+		//页面函数描述:批量审批内嵌列表界面
+        getbatchlist:function(){
+         return _private.getbatchlist();
+		}
+	    ,
+		//页面函数描述:显示内嵌单据
+        displayBillInfo:function(url){
+         return _private.displayBillInfo(url);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        getPolicy:function(approveValueStr){
+         return _private.getPolicy(approveValueStr);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        setPolicy:function(val){
+         return _private.setPolicy(val);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        isNeedDefaultOption:function(vals){
+         return _private.isNeedDefaultOption(vals);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        setsendmailormsg:function(isOpenMessageSendOnUI,notifyNextBySMS,notifyNextByMail){
+         return _private.setsendmailormsg(isOpenMessageSendOnUI,notifyNextBySMS,notifyNextByMail);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        resizePage:function(){
+         return _private.resizePage();
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        showapprovehis:function(procInstId){
+         return _private.showapprovehis(procInstId);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        showbtn:function(){
+         return _private.showbtn();
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        setselnextperson:function(actId,name,id){
+         return _private.setselnextperson(actId,name,id);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        loadNextActs:function(){
+         return _private.loadNextActs();
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        getOpinion:function(actInstId,assignId,billId){
+         return _private.getOpinion(actInstId,assignId,billId);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        getphrase:function(){
+         return _private.getphrase();
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        setselnextactperson:function(resultStr){
+         return _private.setselnextactperson(resultStr);
+		}
+	    ,
+		//页面函数描述:$event.get("desc")
+        shownextActs:function(nextactname,ui){
+         return _private.shownextActs(nextactname,ui);
+		}
+	    ,
+		//页面函数描述:传阅反馈提交
+        passComentsubmit:function(){
+         return _private.passComentsubmit();
+		}
+	    ,
+		//页面函数描述:初始化加载CA
+        initCAConfig:function(tCAConfig){
+         return _private.initCAConfig(tCAConfig);
+		}
+	    ,
+		//页面函数描述:批量提交的处理CA
+        batchSubmitForCA:function(){
+         return _private.batchSubmitForCA();
+		}
+	    ,
+		//页面函数描述:CA认证调用第三方js,弹出密码校验处理,isBatch 是否批量
+        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();
+		}
+	    ,
+		//页面函数描述:批量审批,CA获取业务单据签名的明码,与加密后的密文
+        beforeBatchSubmitSigature:function(selectBillIds){
+         return _private.beforeBatchSubmitSigature(selectBillIds);
+		}
+	    ,
+		//页面函数描述:提交时获取下一步参与人信息
+        getNextPersons:function(isSave){
+         return _private.getNextPersons(isSave);
+		}
+	    ,
+		//页面函数描述:决策提交
+        manualdecisionsubmit:function(){
+         return _private.manualdecisionsubmit();
+		}
+	    ,
+		//页面函数描述:审批提交的处理CA
+        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();
+		}
+	    ,
+		//页面函数描述:流程附件html片段
+        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);
+		}
+	    ,
+		//页面函数描述:判断是否是waf1的单据
+        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");
+        
+    //@endPublic
+    //@beginTemplateFunctions
+
+    //@endTemplateFunctions
+
+    /**************************开发区域开始**********************************************/
+    //@beginPrivate
+	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';
+						/*
+						*  0:打回;1:跳转 ;2:加签;3:转交; 4:终止;5:重新指定执行人;6:添加执行人;7:挂起;8:撤销挂起;9:审批;10;审批撤回
+						*/
+						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);
+				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{
+				//动态引入风险洞察模块  与web框架解耦
+				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","20vh");
+			}
+		}
+		,
+		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){
+			$("body").ready(function(){
+				_private.supportMulti();
+				_private.showtab();
+				var billId = assign.billId;
+				if(approvetype=="approve"){
+					_private.initApprove();
+				}else if(approvetype=="batchapprove"){
+					_private.initBatchapprove();
+					// 添加首次查看记录
+					if (locationurl && locationurl.assignmentIds){
+						var actionUrl=waf.getContextPath() + "/activityProperty.do?method=addAssignReadTime";
+						var params = {};
+						params.assignIds = locationurl.assignmentIds;
+						waf.doPost({
+							url:actionUrl,
+							data:params,
+							async : true,
+							success:function(data){
+							}
+						});
+					}
+				}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++){
+						//<li data-id="p4AAAABOtHGGjkdQ" onclick="setPhraseColor(this)" ondblclick="myPhraseCommit()" title="h">h<i onclick="myPhraseDelete(&quot;p4AAAABOtHGGjkdQ&quot;)"></i></li>
+						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();
+			//获取CA初始化的值 
+			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(";"); 
+					//如果没有4位长度说明没有配置关联决策项
+					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+=')';
+				//waf頁面片段加form表單還不行,只能出此下策
+				 $("<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
+					};
+					//列数太多显示的表格有问题  web框架bug 暂时这样
+					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") {//只有做CA认证时加载CA控件
+				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") {//CA进行密码验证处理
+		 		_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;
+			//add by liujx 添加CA批量认证的判断
+			approve.isSignatureApprove = caConfig.caConfigInfo.isSignatureApprove;
+			if(caConfig.caConfigInfo.isSignatureApprove ==="true"&&caConfig.caConfigInfo.caType!="5") {//判断是否处理CA认证签名
+				//获取需要签名的明码,与签名后的密文
+				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){//mustFillOpinionWhenDisagree  不同意时必须填写审批意见的判断 
+						_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){
+			//组织业务id
+			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;
+			}
+			//列表界面在前端无法获取bosType,webServer层根据单据ID获得bosType进而获得相关的配置信息
+			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=[];
+			//判断是否是审批同意 add by liujx 审批不同意的不校验下一步参与人
+			var ispass= waf("#approveResult").wafRadioGroup("getValue");//1 不同意
+			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.showInfo(_self._localeStr.WEB_CHECKERRORSUBMITEND);
+				_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") {//判断是否处理CA认证
+					if(!_private.beforeSubmitSigature()) {//工作流审批CA认证,
+						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){
+				//判断小数点末尾是否为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;
+				}
+				//判断是否有配置签名要求的浮点数,0为没有配置
+				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.showInfo(_self._localeStr.WEB_CHECKERRORSUBMITEND);
+				_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{//waf2
+						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"]);
+								}else{
+									if(contentWindowSelf.checkBillDataChanges){//检查s-HR 单据数据是否发生变化
+										haveChangeBill=contentWindowSelf.checkBillDataChanges();
+									}
+								}
+								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"]);
+								}else{
+									if(contentWindowSelf.checkBillDataChanges){//检查s-HR 单据数据是否发生变化
+										haveChangeBill=contentWindowSelf.checkBillDataChanges();
+									}
+								}
+							}
+							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;
+			//var nextPersons=_private.getNextPersons(true);
+			//if(!nextPersons)nextPersons=[];
+			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.nextActs = nextPersons;
+			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"); 
+							}
+						}            	
+						//parent.location.reload();
+					}catch(e){
+					}
+					window.close();
+					_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>';
+						//图片和pdf支持预览
+						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{
+                        window.open(url,"_blank");
+					}				
+				}
+			});
+		}
+	,
+		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>';
+					//图片和pdf支持预览
+					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);
+					//解绑框架的click事件,否则当点击其他地方风险洞察内容会消失
+					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;
+			}
+			var params = {};
+			params.f7Type = encodeURIComponent("person");
+			params.singleSelect = false;
+			tempWin.open({
+				url:waf.getContextPath() +"/webviews/workflow/commonSelectF7.jsp?selectedIds="+encodeURIComponent(selectedIds),
+				openType:"iframe",
+				method:'POST',
+				data:params,
+				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;
+        }
+});//@endPrivate
+	_self.subscribeEvent("pageLoadCompletedEvent",_private._pageLoadCompletedEventHandler,"after");
+    /**************************开发区域结束**********************************************/
+    return _public;
+});

BIN
patch/20250110/备份/sp_qy_scy_synctask_websrc.jar