query.jsp 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. <%@page language="java" pageEncoding="UTF-8" %>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title></title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <%@include file="/commons/include/form.jsp" %>
  8. <link rel="stylesheet" type="text/css" href="../input.css">
  9. <script type="text/javascript" src="${ctx}/js/ueditor2/dialogs/internal.js"></script>
  10. <script type="text/javascript" src="${ctx}/js/jquery/plugins/jquery.dragdiv.js"></script>
  11. <link rel="stylesheet" href="${ctx}/js/jquery/plugins/jquery.dragdiv.css" type="text/css" />
  12. <link rel="stylesheet" href="${ctx}/js/tree/zTreeStyle.css" type="text/css" />
  13. <script type="text/javascript" src="${ctx}/js/tree/jquery.ztree.js"></script>
  14. <script type="text/javascript" src="${ctx}/js/util/json2.js"></script>
  15. <style type="text/css">
  16. .field-ul {
  17. width: 95%;
  18. height: 95%;
  19. margin: 0;
  20. padding: 0;
  21. overflow-y: auto;
  22. overflow-x: hidden;
  23. }
  24. .fields-div {
  25. float: left;
  26. border: 1px solid #828790;
  27. width: 160px;
  28. height: 260px;
  29. overflow: auto;
  30. }
  31. .domBtnDiv {
  32. display: block;
  33. margin-left:5px;
  34. float:left;
  35. width:380px;
  36. height:260px;
  37. background-color: powderblue;
  38. overflow-y: auto;
  39. overflow-x: hidden;
  40. }
  41. </style>
  42. <script type="text/javascript">
  43. var obj = $(editor.selection.getStart());
  44. var curNode = obj;
  45. var fieldName=obj.attr("name");
  46. var parent=obj.parent();
  47. var dragDiv;
  48. if(fieldName && parent){
  49. var idFilter="input[name='"+fieldName+"ID']";
  50. var nameFilter="input[name='"+fieldName+"']";
  51. var inputId=$(idFilter,parent);
  52. if(inputId.length>0){
  53. curNode=inputId;
  54. }
  55. }
  56. var setting = {
  57. edit: {
  58. enable: true,
  59. showRemoveBtn: false,
  60. showRenameBtn: false,
  61. drag:{}
  62. },
  63. data: {
  64. keep: {
  65. parent: true,
  66. leaf: true
  67. },
  68. simpleData: {
  69. enable: true
  70. }
  71. },
  72. view: {
  73. selectedMulti: false
  74. }
  75. };
  76. $(function() {
  77. $(".button-td").bind("mouseenter mouseleave", function() {
  78. $(this).toggleClass("button-td-hover");
  79. });
  80. getDialogs();
  81. });
  82. //编辑时绑定数据
  83. function bindData(dialogStr) {
  84. var dialog = eval("("+dialogStr+")");
  85. var field;
  86. if(!dialog)return;
  87. $("#dialog-type").find("option[value='"+dialog.name+"']").each(function(){
  88. $(this).attr("selected","selected");
  89. dialogChange();
  90. }
  91. );
  92. while(field=dialog.fields.pop()){
  93. var src=field.src;
  94. var targets=field.target;
  95. var target;
  96. while(target=targets.pop()){
  97. var item = $("span.item-span[itemId='"+target+"']").toggleClass("item-span item-span-Disabled");
  98. if(item.length>0){
  99. var node = {id:target, name: item.text()};
  100. addNode(src,node);
  101. }
  102. }
  103. }
  104. setTimeout(function(){
  105. $("#condition-field").find("option[value='"+dialog.cond+"']").attr("selected","selected");
  106. $("#bind-event").find("option[value='"+dialog.evt.name+"']").attr("selected","selected");
  107. },10);
  108. };
  109. //添加树节点
  110. function addNode(id,node){
  111. var zTree = $.fn.zTree.getZTreeObj('fields-tree');
  112. if(!zTree)return;
  113. var parentNode = zTree.getNodeByParam("id",id,null);
  114. if(parentNode) zTree.addNodes(parentNode,node);
  115. };
  116. //获取自定义查询
  117. function getDialogs(){
  118. var url = __ctx + '/platform/bpm/bpmFormQuery/getAllQueries.ht';
  119. $.get(url,function(data){
  120. if (data) {
  121. for(var i=0,c;c=data[i++];){
  122. var opt = $('<option value="'+c.alias+'" fields="'+c.returnFields+'" conditions="'+c.conditionFields+'" >'+c.name+'</option>');
  123. opt.data("fields",c.resultfield);
  124. $("#dialog-type").append(opt);
  125. }
  126. getFileds(editor.tableId);
  127. }
  128. });
  129. };
  130. //选择不同的查询
  131. function dialogChange(){
  132. var condition_field =$("#condition-field");
  133. condition_field.empty();
  134. var dia=$("#dialog-type").find("option:selected");
  135. var v = dia.data("fields");
  136. var condStr = dia.attr("conditions");
  137. if(v){
  138. var nodes=[];
  139. var fields = eval("("+v+")");
  140. for(var i=0;i<fields.length;i++){
  141. var f=fields[i];
  142. nodes.push({id:f.field,pid:0,name:f.comment,isParent: true, open:true});
  143. }
  144. $("span.item-span-Disabled").each(function(){
  145. $(this).toggleClass("item-span-Disabled");
  146. $(this).toggleClass("item-span");
  147. }
  148. );
  149. var tree = $.fn.zTree.init($("#fields-tree"), setting, nodes);
  150. //设置拖拽 树对象
  151. if(dragDiv)dragDiv.dragdiv('bind','fields-tree');
  152. }
  153. if(condStr){
  154. var options=[];
  155. var fields=condStr.split(",");
  156. for(var i=0,c;c=fields[i++];){
  157. if(c){
  158. var option = $("<option/>").val(c).text(c);
  159. options.push(option);
  160. }
  161. }
  162. $(options).each(function(){
  163. condition_field.append($(this));
  164. });
  165. }
  166. }
  167. dialog.onok = function() {
  168. var name=$("#dialog-type").val();
  169. var evtName = $("#bind-event").val();
  170. var evtKey = $("#bind-event").find('[value="'+evtName+'"]').attr("evtKey");
  171. var evtKeyCode = $("#bind-event").find('[value="'+evtName+'"]').attr("evtCode");
  172. var evt = {
  173. name:evtName,
  174. key:evtKey,
  175. code:evtKeyCode
  176. };
  177. var cond = $("#condition-field").val();;
  178. if(!name){
  179. curNode.removeAttr("query");
  180. return;
  181. }
  182. var zTree = $.fn.zTree.getZTreeObj("fields-tree"),
  183. nodes=zTree.getNodes(),fields=[];
  184. for(var i=0,c;c=nodes[i++];){
  185. if(!c.children)continue;
  186. var target=[],child=null;
  187. while(child=c.children.pop()){
  188. target.push(child.id);
  189. }
  190. var sub={
  191. src:c.id,
  192. target:target
  193. };
  194. fields.push(sub);
  195. }
  196. var json={
  197. name:name,
  198. evt:evt,
  199. fields:fields,
  200. cond:cond
  201. };
  202. var jsonStr = JSON2.stringify(json).replaceAll('"',"'");
  203. curNode.get(0).setAttribute("query",jsonStr);
  204. };
  205. //初始化字段面板
  206. function initFieldsDiv(data){
  207. var mainTable = data.table, data = {};
  208. data.name = mainTable.tableDesc + '('+editor.getLang("customdialog.main")+')';
  209. data.id = mainTable.tableName;
  210. data.desc = mainTable.tableId;
  211. var items = [];
  212. for ( var i = 0, c; c = mainTable.fieldList[i++];) {
  213. items.push({
  214. name : c.fieldDesc,
  215. id : c.fieldName
  216. });
  217. }
  218. for ( var i = 0, c; c = mainTable.subTableList[i++];) {
  219. var sub = {};
  220. sub.name = c.tableDesc + '('+editor.getLang("customdialog.sub")+')';
  221. sub.id = c.tableName;
  222. sub.desc = c.tableId;
  223. var subItems = [];
  224. for ( var y = 0, t; t = c.fieldList[y++];) {
  225. subItems.push({
  226. name : t.fieldDesc,
  227. id : t.fieldName
  228. });
  229. }
  230. sub.items = subItems;
  231. items.push(sub);
  232. }
  233. data.items = items;
  234. dragDiv = $(".domBtnDiv").dragdiv('init',{data : data});
  235. var dialogStr = curNode.get(0).getAttribute("query");
  236. if (dialogStr) {
  237. bindData(dialogStr);
  238. }
  239. };
  240. //加载字段面板
  241. function getFileds(tableId) {
  242. if(tableId){
  243. var url = __ctx
  244. + '/platform/form/bpmFormTable/getTableById.ht?tableId='
  245. + tableId+'&incHide=true';
  246. $.post(url, function(data) {
  247. initFieldsDiv(data);
  248. });
  249. }else{ //编辑器设计表单时获取字段并验证字段
  250. var html = editor.getContent();
  251. var params={};
  252. params.html=html;
  253. params.formDefId=editor.formDefId;
  254. $.post(__ctx + '/platform/form/bpmFormDef/validDesign.ht?incHide=true', params, function(data){
  255. if(data.valid){
  256. initFieldsDiv(data);
  257. }
  258. else{
  259. alert(data.errorMsg);
  260. }
  261. });
  262. }
  263. };
  264. </script>
  265. </head>
  266. <body>
  267. <div id="inputPanel">
  268. <fieldset class="base">
  269. <legend><var id="lang_search_setting"></var></legend>
  270. <table>
  271. <tr>
  272. <th><var id="lang_choose_search"></var>:</th>
  273. <td>
  274. <select id="dialog-type" onchange="dialogChange()">
  275. <option value="0"></option>
  276. </select>
  277. </td>
  278. </tr>
  279. <tr>
  280. <th><var id="lang_condition_field"></var>:</th>
  281. <td>
  282. <select id="condition-field">
  283. </select>
  284. </td>
  285. </tr>
  286. <tr>
  287. <th><var id="lang_trigger_event"></var>:</th>
  288. <td>
  289. <select id="bind-event">
  290. <option value="carriage_return" evtKey="keyup" evtCode="13"></option>
  291. <option value="valueChange" evtKey="change" evtCode="0"></option>
  292. </select>
  293. </td>
  294. </tr>
  295. </table>
  296. </fieldset>
  297. <fieldset class="base">
  298. <legend><var id="lang_return_setting"></var></legend>
  299. <div class="fields-div">
  300. <ul id="fields-tree" class="ztree field-ul"></ul>
  301. </div>
  302. <div class="domBtnDiv">
  303. </div>
  304. </fieldset>
  305. </div>
  306. </body>
  307. </html>