RuleDialog.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. function RuleDialog(conf){
  2. if(!conf) conf={};
  3. var url=__ctx + "/platform/bpm/bpmNodeRule/dialog.ht?defId="+conf.defId+"&nodeId="+conf.nodeId;
  4. var dialogWidth=700;
  5. var dialogHeight=500;
  6. conf=$.extend({},{dialogWidth:dialogWidth ,dialogHeight:dialogHeight ,help:0,status:0,scroll:1,center:1},conf);
  7. var winArgs="dialogWidth="+conf.dialogWidth+"px;dialogHeight="+conf.dialogHeight
  8. +"px;help=" + conf.help +";status=" + conf.status +";scroll=" + conf.scroll +";center=" +conf.center;
  9. url=url.getNewUrl();
  10. /*var rtn=window.showModalDialog(url,conf,winArgs);
  11. if(rtn!=undefined){
  12. if(conf.callback){
  13. conf.callback.call(this,rtn);
  14. }
  15. } */
  16. var that =this;
  17. /*KILLDIALOG*/
  18. DialogUtil.open({
  19. height:conf.dialogHeight,
  20. width: conf.dialogWidth,
  21. title : '',
  22. url: url,
  23. isResize: true,
  24. //自定义参数
  25. sucCall:function(rtn){
  26. if(rtn!=undefined){
  27. if(conf.callback){
  28. conf.callback.call(that,rtn);
  29. }
  30. }
  31. }
  32. });
  33. }
  34. //以下是生成 条件表达式
  35. /**
  36. * 生成 条件表达式
  37. * @param json
  38. * @returns 条件表达式
  39. */
  40. function genConditionCode(json){
  41. var code = new StringBuffer(),jsonLength = json.length;
  42. if(jsonLength<=0) return "";
  43. for(var i=0;i<jsonLength;i++){
  44. var obj=json[i],
  45. flowvarKey=obj.flowvarKey,//表单变量
  46. optType=obj.optType,//变量类型
  47. compType=obj.compType,//操作类型
  48. judgeCon1=obj.judgeCon1,//条件1
  49. judgeVal1=obj.judgeVal1,//条件1值
  50. judgeCon2=obj.judgeCon2,//条件2
  51. judgeVal2=obj.judgeVal2;//条件2值
  52. var script = "";
  53. if(optType == 5)
  54. script = _parseScript(flowvarKey,optType,judgeCon1,judgeVal1,judgeCon2,judgeVal2, false,true,jsonLength);
  55. else{
  56. script = _parseScript(flowvarKey,optType,judgeCon1,judgeVal1,judgeCon2,judgeVal2, (optType==1?true:false),false,jsonLength);
  57. }
  58. if($.isEmpty(script))continue;
  59. if(i>0 && !$.isEmpty(code.toString()) )
  60. code.append(convertCompType(compType));
  61. code.append(script);
  62. }
  63. // if(jsonLength>1 && !$.isEmpty(code.toString()) )
  64. // code = "("+code.toString()+")";
  65. return code.toString();
  66. }
  67. /**
  68. * 转换运算
  69. * @param compType 运算类型
  70. * @returns {String} 运算类型 字符串
  71. */
  72. function convertCompType(compType){
  73. if(compType == "1") //与运算
  74. return "&&";
  75. else// 或运算
  76. return "||";
  77. }
  78. /**
  79. * 转换脚本()
  80. * @param flowvarKey
  81. * @param optType
  82. * @param judgeCon1
  83. * @param judgeVal1
  84. * @param judgeCon2
  85. * @param judgeVal2
  86. * @param isNumber
  87. * @param isUser
  88. * @returns {String}
  89. */
  90. function _parseScript(flowvarKey,optType,judgeCon1,judgeVal1,judgeCon2,judgeVal2,isNumber,isUser,jsonLength){
  91. var sb=new StringBuffer();
  92. if(isUser){
  93. if(!$.isEmpty(judgeVal1)){
  94. var v = judgeVal1.split("&&")[0];
  95. sb.append(_getCompareScript(flowvarKey,judgeCon1,v,isNumber));
  96. }
  97. }else{
  98. if(!$.isEmpty(judgeVal1))
  99. sb.append(_getCompareScript(flowvarKey,judgeCon1,judgeVal1,isNumber));
  100. if(!$.isEmpty(judgeVal2)){
  101. if(!$.isEmpty(judgeVal1) )
  102. sb.append("&&");
  103. sb.append(_getCompareScript(flowvarKey,judgeCon2,judgeVal2,isNumber));
  104. }
  105. }
  106. if(jsonLength>1 &&!$.isEmpty(sb.toString()))
  107. sb = "("+sb.toString()+")";
  108. return sb.toString();
  109. }
  110. /**
  111. * 获取条件表达式
  112. * @param flowvarKey
  113. * @param judgeCon
  114. * @param judgeVal
  115. * @param isNumber
  116. * @returns {String}
  117. */
  118. function _getCompareScript(flowvarKey,judgeCon,judgeVal,isNumber){
  119. switch(judgeCon){
  120. //数字或日期
  121. case "1"://等于
  122. return flowvarKey +"==" + (isNumber?"":"\"")+judgeVal+(isNumber?"":"\"");
  123. case "2"://不等于
  124. return flowvarKey +"!=" + (isNumber?"":"\"")+judgeVal+(isNumber?"":"\"");
  125. case "3"://大于
  126. return flowvarKey +">" + (isNumber?"":"\"")+judgeVal+(isNumber?"":"\"");
  127. case "4"://小于
  128. return flowvarKey +"<" + (isNumber?"":"\"")+judgeVal+(isNumber?"":"\"");
  129. case "5"://大于等于
  130. return flowvarKey +">=" + (isNumber?"":"\"")+judgeVal+(isNumber?"":"\"");
  131. case "6"://小于等于
  132. return flowvarKey +"<=" + (isNumber?"":"\"")+judgeVal+(isNumber?"":"\"");
  133. //字符串
  134. case "7"://完全等于
  135. return flowvarKey +".equals(\"" +judgeVal+"\")";
  136. case "8"://不等于
  137. return flowvarKey +"!= \"" +judgeVal+"\"";
  138. case "9"://等于(忽略大小写)
  139. return flowvarKey +".equalsIgnoreCase(\"" +judgeVal+"\")";
  140. case "10"://包含
  141. return flowvarKey +".contains(" +judgeVal+")";
  142. case "11"://不包含
  143. return "!"+ flowvarKey +".contains(\"" +judgeVal+"\")";
  144. //下拉,复选,单选 数字字典
  145. case "12"://等于
  146. return flowvarKey +".equals(\"" +judgeVal+"\")";
  147. case "13"://不包含
  148. return flowvarKey +"!=\"" +judgeVal+"\"";
  149. case "14"://
  150. return flowvarKey +".contains(\"" +judgeVal+"\")";
  151. case "15"://
  152. return "!"+ flowvarKey +".contains(\"" +judgeVal+"\")";
  153. //用户、角色、岗位、组织选择器
  154. case "16"://包含
  155. var v = judgeVal.split(","),sb= new StringBuffer();
  156. for ( var i = 0; i < v.length; i++) {
  157. var s = v[i];
  158. sb.append(flowvarKey +".equals(\""+s+"\")");
  159. if(i+1!=v.length ) sb.append("||");
  160. }
  161. return sb.toString();
  162. case "17"://不包含
  163. var v = judgeVal.split(","),sb= new StringBuffer();
  164. for ( var i = 0; i < v.length; i++) {
  165. var s = v[i];
  166. sb.append("!"+flowvarKey +".equals(\""+s+"\")");
  167. if(i+1!=v.length ) sb.append("||");
  168. }
  169. return sb.toString();
  170. }
  171. }