customCondition.jsp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@include file="/commons/include/html_doctype.html"%>
  4. <html>
  5. <head>
  6. <title>条件自定义</title>
  7. <%@include file="/commons/include/form.jsp" %>
  8. <f:link href="Aqua/css/ligerui-all.css"></f:link>
  9. <f:link href="tree/zTreeStyle.css"></f:link>
  10. <script type="text/javascript" src="${ctx}/js/tree/jquery.ztree.js"></script>
  11. <script type="text/javascript" src="${ctx}/js/hotent/platform/system/ConditionExpression.js"></script>
  12. <script type="text/javascript">
  13. var zTree;
  14. var conditionExpress;
  15. var setting = {
  16. edit: {
  17. enable: true,
  18. showRemoveBtn: true,
  19. showRenameBtn: false,
  20. drag:{
  21. isCopy:true,
  22. isMove:true,
  23. prev:true,
  24. inner:true,
  25. next:true
  26. }
  27. },
  28. callback: {
  29. beforeDrag: beforeDrag,
  30. beforeDrop: beforeDrop,
  31. onRemove: onTreeRemove,
  32. onClick: onTreeClick,
  33. onDrop: onTreeOnDrop
  34. }
  35. };
  36. function onTreeRemove(event, treeId, treeNode) {
  37. zTree.refresh();
  38. calc();
  39. }
  40. function onTreeClick(event, treeId, treeNode) {
  41. var type=treeNode.type;
  42. switch(type){
  43. case "1":
  44. break;
  45. case "2":
  46. break;
  47. case "3":
  48. $("#txtExpression").val(treeNode.expression);
  49. $("input[name=action][value='3']").attr("checked",true);
  50. break;
  51. }
  52. };
  53. function beforeDrag(treeId, treeNodes) {
  54. for (var i=0,l=treeNodes.length; i<l; i++) {
  55. if (treeNodes[i].drag === false) {
  56. return false;
  57. }
  58. }
  59. return true;
  60. }
  61. function beforeDrop(treeId, treeNodes, targetNode, moveType) {
  62. return targetNode ? targetNode.drop !== false : true;
  63. }
  64. function onTreeOnDrop(event, treeId, treeNodes, targetNode, moveType) {
  65. calc();
  66. };
  67. $(document).ready(function(){
  68. $("a.save").click(function(){
  69. save();
  70. });
  71. zTree=$.fn.zTree.init($("#treeCondition"), setting);
  72. $("#txtExpression").change( txtExpressionChangeHandler);
  73. //表达式计算JS。
  74. conditionExpress=new com.hotent.platform.system.ConditionExpression();
  75. $("a.no").click(cancelSelect);
  76. });
  77. function cancelSelect(){
  78. if(zTree){
  79. zTree.cancelSelectedNode();
  80. }
  81. }
  82. function txtExpressionChangeHandler(e)
  83. {
  84. var nodes=zTree.getSelectedNodes();
  85. var selectNode;
  86. if(!nodes) return;
  87. selectNode=nodes[0];
  88. if(selectNode){
  89. if(selectNode.type=="3"){
  90. selectNode.expression=this.value;
  91. calc();
  92. }
  93. }
  94. }
  95. function add(){
  96. var isRoot=$("#chkRoot").attr("checked");
  97. if(isRoot)
  98. blnChecked=true;
  99. var type=$("input[name=action]:checked").val();
  100. var txt=$("#txtExpression").val();
  101. var node=conditionExpress.genNode(type,txt);
  102. var nodes=zTree.getSelectedNodes();
  103. var selectNode;
  104. if(nodes){
  105. selectNode=nodes[0];
  106. }
  107. if(selectNode){
  108. if(selectNode.type!="3"){
  109. zTree.addNodes(selectNode, node);
  110. }
  111. else{
  112. $.ligerDialog.warn('条件表达式下不能添加条件!');
  113. }
  114. }
  115. else{
  116. zTree.addNodes(null, node);
  117. }
  118. calc();
  119. }
  120. function calc(){
  121. conditionExpress.reset();
  122. var nodes = zTree.getNodes();
  123. for(var i=0;i<nodes.length;i++){
  124. var node=nodes[i];
  125. conditionExpress.evaluate(node);
  126. if(conditionExpress.hasError) break;
  127. }
  128. var result=conditionExpress.getResult();
  129. $("#txtCondition").val(result);
  130. }
  131. </script>
  132. </head>
  133. <body>
  134. <div class="panel-top">
  135. <div class="tbar-title">
  136. <span class="tbar-label">构造条件</span>
  137. </div>
  138. <div class="panel-toolbar">
  139. <div class="toolBar">
  140. <div class="group"><a class="link save"><span></span>保存</a></div>
  141. <div class="l-bar-separator"></div>
  142. <div class="group"><a onclick="add();" class="link add"><span></span>添加</a></div>
  143. <div class="l-bar-separator"></div>
  144. <div class="group"><a onclick="cancelSelect();" class="link no"><span></span>取消选中</a></div>
  145. </div>
  146. </div>
  147. </div>
  148. <div class="panel-body">
  149. <div class="panel-detail">
  150. <table class="table-detail" cellpadding="0" cellspacing="0" border="0">
  151. <tr>
  152. <th width="15%">条件:</th>
  153. <td><input type="radio" value="2" name="action" checked="checked" />并&nbsp;<input type="radio" value="1" name="action"/>或</td>
  154. </tr>
  155. <tr>
  156. <th width="15%">表达式:</th>
  157. <td><input type="radio" value="3" name="action"/> <input type="text" id="txtExpression" class="inputText" size="40"/></td>
  158. </tr>
  159. <tr height="150px">
  160. <th width="15%">表达式树:</th>
  161. <td valign="top">
  162. <ul id="treeCondition" class="ztree" style="height:150px;overflow: auto;"></ul>
  163. </td>
  164. </tr>
  165. <tr height="150px">
  166. <th width="15%">条件:</th>
  167. <td valign="top">
  168. <textarea rows="6" cols="80" id="txtCondition"></textarea>
  169. </td>
  170. </tr>
  171. </table>
  172. </div>
  173. </div>
  174. </body>
  175. </html>