bpmFormQuerySetting.jsp 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911
  1. <%--
  2. time:2012-06-25 11:05:09
  3. desc:edit the 通用表单对话框
  4. --%>
  5. <%@page language="java" pageEncoding="UTF-8"%>
  6. <%@include file="/commons/include/html_doctype.html"%>
  7. <html>
  8. <head>
  9. <title>编辑 通用表单查询</title>
  10. <%@include file="/commons/include/get.jsp" %>
  11. <script type="text/javascript"src="${ctx}/js/hotent/platform/system/ScriptDialog.js"></script>
  12. <script type="text/javascript" src="${ctx}/js/javacode/codemirror.js"></script>
  13. <script type="text/javascript" src="${ctx}/js/javacode/InitMirror.js"></script>
  14. <script type="text/javascript">
  15. var dialog = frameElement.dialog; //调用页面的dialog对象(ligerui对象)
  16. $(function() {
  17. $("#defLayout").ligerLayout({ leftWidth: 270,height: '100%',
  18. bottomHeight:50,allowLeftCollapse:false,rightWidth:465,allowRightResize:false,centerWidth:20,
  19. allowBottomResize:false,allowRightCollapse:false});
  20. //默认显示第一个Tab标签
  21. javaFieldSelected(false) ;
  22. init();
  23. });
  24. function init(){
  25. $("input.treeField").focus(function(){
  26. curField=$(this);
  27. });
  28. var fields=dialog.get("fields");
  29. if(fields.displayField)initDisplayField(fields.displayField);
  30. if(fields.conditionField)initConditionField(fields.conditionField);
  31. if(fields.resultField)initResultField(fields.resultField);
  32. if(fields.sortField)initSortField(fields.sortField);
  33. }
  34. //未保存的自定义对话框,在已经设置列以后再次打开设置列的窗口时 初始化已设置的列
  35. function initDisplayField(displayField){
  36. var fieldObj=eval("("+displayField+")"),
  37. objContainer=$("#trDisplayField");
  38. objContainer.empty();
  39. for(var i=0,c;c=fieldObj[i++];){
  40. objContainer.append(getDispalyField(c.field,c.comment));
  41. }
  42. };
  43. //初始化条件字段
  44. function initConditionField(conditionField){
  45. var fieldObj=eval("("+conditionField+")"),
  46. objContainer=$("#trConditionField");
  47. objContainer.empty();
  48. for(var i=0,c;c=fieldObj[i++];){
  49. if(c.defaultType != 5){
  50. objContainer.append(getConditionField(c.field,c.comment,c.dbType));
  51. var curTr = $("#condition"+c.field),
  52. curValTr = $("#conditionVal"+c.field);
  53. $("select.condition",curTr).val(c.condition);
  54. $("select[name='changeDefalut']",curValTr).val(c.defaultType);
  55. changeDefault($("select[name='changeDefalut']",curValTr));
  56. $("textarea[name='defaultValue']",curValTr).val(c.defaultValue);
  57. javaFieldSelected(true) ;
  58. }
  59. if(c.defaultType == 5){
  60. $("#script").text(fieldObj[0].defaultValue) ;
  61. javaFieldSelected(true) ;
  62. }
  63. }
  64. };
  65. //初始化返回字段
  66. function initResultField(resultField){
  67. var fieldObj=eval("("+resultField+")"),
  68. objContainer=$("#trRtnField");
  69. objContainer.empty();
  70. if(!fieldObj)return;
  71. for(var i=0,c;c=fieldObj[i++];){
  72. objContainer.append(getRtnField(c.field,c.comment));
  73. }
  74. };
  75. //初始化排序字段
  76. function initSortField(sortField){
  77. if(!sortField.trim()) return ;
  78. var fieldObj=eval("("+sortField+")"),
  79. objContainer=$("#trSortField");
  80. objContainer.empty();
  81. if(!fieldObj)return;
  82. for(var i=0,c;c=fieldObj[i++];){
  83. var tr=$('tr#sortTrTemplate').clone(true);
  84. tr.attr('id','sort'+c.field);
  85. tr.attr('name',c.field);
  86. tr.css('display','');
  87. if(c.comment=='ASC'){
  88. $('td#sort',tr).find(':checkbox').attr('checked',true);
  89. }else{
  90. $('td#sort',tr).find(':checkbox').attr('checked',false);
  91. }
  92. $('td#fieldName',tr).text(c.field);
  93. objContainer.append(tr);
  94. }
  95. };
  96. var curField;
  97. /*
  98. *左边字段选择
  99. */
  100. function selectTreeField(){
  101. var obj=$("input:checkbox[name='fieldName']:checked");
  102. if(curField==null || curField.length==0){
  103. $.ligerDialog.error("请选择右边的输入框!",'提示信息');
  104. return;
  105. }
  106. if(obj.length==0){
  107. $.ligerDialog.error("请选择左边的字段!",'提示信息');
  108. return;
  109. }
  110. if(obj.length>1){
  111. $.ligerDialog.error("只能选择一个左边的字段!",'提示信息');
  112. return;
  113. }
  114. curField.val(obj.val());
  115. }
  116. function delRow(obj){
  117. $(obj).closest("tr").remove();
  118. }
  119. function delConditionTr(obj){
  120. var tr=$(obj).closest("tr");
  121. tr.next().remove().end().remove();
  122. }
  123. function getConditionField(fieldName,comment,dbType){
  124. var db=getConditionSelect(dbType,fieldName,comment);
  125. var sb=new StringBuffer();
  126. sb.append("<tr class='trCondition' id='condition"+ fieldName +"'>");
  127. sb.append("<td >"+fieldName+"</td>");
  128. sb.append("<td >"+db+"</td>");
  129. sb.append("<td >"+comment+"</td>");
  130. sb.append("<td><a alt='上移' href='#' class='link moveup' onclick='sortConditionTr(this,true)'></a>");
  131. sb.append("<a alt='下移' href='#' class='link movedown' onclick='sortConditionTr(this,false)'></a>");
  132. sb.append("<a href='#' class='link del' onclick='delConditionTr(this)' >删除</a></td>");
  133. sb.append("</tr>");
  134. sb.append("<tr id='conditionVal"+ fieldName +"'>");
  135. sb.append("<td>默认值</td>");
  136. sb.append("<td><select name='changeDefalut' onchange='changeDefault(this)'>");
  137. sb.append("<option value='1'>参数传入</option>");
  138. sb.append("<option value='2'>固定值</option><option value='3'>脚本</option></select></td>");
  139. sb.append("<td colspan='2'><a style='display:none;' href='#' name='btnScript' class='link var' title='常用脚本' onclick='selectScript(this)'>常用脚本</a>");
  140. sb.append("<textarea name='defaultValue' cols='40' rows='3' ");
  141. sb.append(" style='display:none;' ");
  142. sb.append("></textarea></td>");
  143. sb.append("</tr>");
  144. return sb.toString();
  145. }
  146. function selectScript(obj) {
  147. var txtObj=$(obj).siblings("textarea")[0];
  148. ScriptDialog({
  149. callback : function(script) {
  150. $.insertText(txtObj,script);
  151. }
  152. });
  153. };
  154. function changeDefault(obj){
  155. var val=$(obj).val();
  156. var objTr=$(obj).parents("tr");
  157. var txtObj=$("textarea[name='defaultValue']",objTr);
  158. var linkObj=$("a[name='btnScript']",objTr);
  159. switch(val){
  160. case "1":
  161. txtObj.hide();
  162. linkObj.hide();
  163. break;
  164. case "2":
  165. txtObj.show();
  166. linkObj.hide();
  167. break;
  168. case "3":
  169. txtObj.show();
  170. linkObj.show();
  171. break;
  172. }
  173. }
  174. function getRtnField(fieldName,comment){
  175. var sb=new StringBuffer();
  176. sb.append("<tr id='rtn"+ fieldName +"' name='"+fieldName+"' comment='"+comment+"' >");
  177. sb.append("<td >"+fieldName+"</td>");
  178. sb.append("<td >"+comment+"</td>");
  179. sb.append("<td><a alt='上移' href='#' class='link moveup' onclick='sortTr(this,true)'>&nbsp;&nbsp;</a>");
  180. sb.append("<a alt='下移' href='#' class='link movedown' onclick='sortTr(this,false)'>&nbsp;&nbsp;</a>");
  181. sb.append("<a href='#' class='link del' onclick='delRow(this)' >删除</a></td>");
  182. sb.append("</tr>");
  183. return sb.toString();
  184. }
  185. function getConditionSelect(dbType,name,comment){
  186. var sb=new StringBuffer();
  187. sb.append("<select class='condition' name='"+name+"' dbType='"+dbType+"' comment='"+comment+"'>");
  188. switch(dbType){
  189. case "varchar":
  190. sb.append("<option value='='>等于</option>");
  191. sb.append("<option value='like'>LIKE</option>");
  192. sb.append("<option value='likeEnd'>LIKEEND</option>");
  193. break;
  194. case "number":
  195. sb.append("<option value='='>等于</option>");
  196. sb.append("<option value='!='>不等于</option>");
  197. sb.append("<option value='>='>大于等于</option>");
  198. sb.append("<option value='>'>大于</option>");
  199. sb.append("<option value='<'>小于</option>");
  200. sb.append("<option value='<='>小于等于</option>");
  201. break;
  202. case "date":
  203. sb.append("<option value='='>等于</option>");
  204. sb.append("<option value='between'>Between</option>");
  205. sb.append("<option value='>='>大于等于</option>");
  206. sb.append("<option value='<='>小于等于</option>");
  207. break;
  208. }
  209. sb.append("</select>");
  210. return sb;
  211. }
  212. function setField(){
  213. var divContents = $('div.content') ;
  214. var visibleDivContent = undefined;
  215. if(divContents==undefined) return ;
  216. for(var i=0;i<divContents.length;i++){
  217. if($(divContents[i]).css('display')!='none'){
  218. visibleDivContent = divContents[i] ;
  219. break ;
  220. }
  221. }
  222. if(visibleDivContent == undefined){
  223. $.ligerDialog.error('请先展开右边目标区域','提示信息');
  224. return ;
  225. }
  226. var divParent = $(visibleDivContent).closest('.panel-detail') ;
  227. if(divParent.attr('class').indexOf('condition')>=0){
  228. if($('.javaField').css('display')!='none'){
  229. //java脚本区域
  230. $("input[name='fieldName']:checked").each(function(){
  231. var trObj=$(this).closest("tr");
  232. var fieldName=$(this).val(); //id
  233. var comment=$("input[name='comment']",trObj).val();
  234. var dbType=$(this).attr("dbType");
  235. var fnBtns = $('div.fieldBtnDiv').children('[name="'+fieldName+'"]') ;
  236. if(fnBtns==undefined || fnBtns.length<1){
  237. var btn = $('div.fieldBtnDiv').children('.button:last').clone(true).css('display','') ;
  238. var delBtn = $('div.fieldBtnDiv').children('.divX:last').clone(true) ;
  239. btn.attr('name',fieldName) ;
  240. btn.attr('dbType',dbType) ;
  241. btn.children('span:first').text(comment) ;
  242. $('div .fieldBtnDiv').append(btn).append(delBtn) ;
  243. javaFieldSelected(true);
  244. }
  245. });
  246. }else if($('.trConditionField').css('display')!='none'){
  247. if($('.btnTree')!=undefined && $('.btnTree').length>0){
  248. setConditionField(false) ;
  249. }else
  250. setConditionField(true) ;
  251. }
  252. return ;
  253. }
  254. if(divParent.attr('class').indexOf('return')>=0){
  255. setReturnField() ;
  256. return ;
  257. }
  258. if(divParent.attr('class').indexOf('sort')>=0){
  259. setSortField() ;
  260. return ;
  261. }
  262. }
  263. function setSortField(){
  264. var objContainer=$("#trSortField");
  265. $("input:checkbox[name='fieldName']:checked").each(function(){
  266. var trObj=$(this).closest("tr");
  267. var fieldName=$(this).val(); //id
  268. var obj=$("#sort" + fieldName);
  269. if(obj.length==0){
  270. var tr=$('tr#sortTrTemplate').clone(true);
  271. tr.attr('id','sort'+fieldName);
  272. tr.attr('name',fieldName);
  273. tr.css('display','');
  274. $('td#fieldName',tr).text(fieldName);
  275. objContainer.append(tr);
  276. }
  277. });
  278. }
  279. function setConditionField(isList){
  280. var objContainer=$("#trConditionField");
  281. $("input[name='fieldName']:checked").each(function(){
  282. var trObj=$(this).closest("tr");
  283. var fieldName=$(this).val(); //id
  284. var comment=$("input[name='comment']",trObj).val();
  285. var dbType=$(this).attr("dbType");
  286. var obj = $("#condition"+fieldName);
  287. if(obj.length==0){
  288. var tr=getConditionField(fieldName,comment,dbType,isList);
  289. objContainer.append(tr);
  290. }
  291. });
  292. }
  293. function setReturnField(){
  294. var objContainer=$("#trRtnField");
  295. $("input:checkbox[name='fieldName']:checked").each(function(){
  296. var trObj=$(this).closest("tr");
  297. var fieldName=$(this).val(); //id
  298. var comment=$("input[name='comment']",trObj).val();
  299. var obj=$("#rtn" + fieldName);
  300. if(obj.length==0){
  301. var tr=getRtnField(fieldName,comment);
  302. objContainer.append(tr);
  303. }
  304. });
  305. }
  306. var displayStr="";
  307. var conditionStr="";
  308. var rtnStr="";
  309. var sortStr="";
  310. function buildTreeJson(){
  311. var aryRtnField=[];
  312. var rtn="";
  313. var treeId=$("#treeId").val();
  314. var parentId=$("#parentId").val();
  315. var displayName=$("#displayName").val();
  316. if(treeId=="" || parentId=="" || displayName==""){
  317. rtn+="请填写映射树的字段\r\n";
  318. }
  319. displayStr="{id:'"+treeId+"',pid:'"+parentId+"',displayName:'"+displayName+"'}";
  320. var result=getCondition();
  321. if(!result){
  322. rtn+="请填写条件字段的值\r\n";
  323. }
  324. //条件字段
  325. $("#trRtnField").children().each(function(){
  326. var fieldName=$(this).attr("name");
  327. var comment=$(this).attr("comment");
  328. var obj={};
  329. obj.field=fieldName;
  330. obj.comment=comment;
  331. aryRtnField.push(obj);
  332. });
  333. if(aryRtnField.length==0){
  334. rtn+="请选择返回字段";
  335. }
  336. rtnStr=JSON2.stringify(aryRtnField);
  337. return rtn;
  338. }
  339. //获取选择的条件。
  340. function getCondition(){
  341. var aryContion=[];
  342. var rtn=true;
  343. debugger;
  344. $('.fieldBtnDiv a.button').each(function(i){
  345. //跳过第一个隐藏的按钮
  346. if(i==0) return true ;
  347. var obj={};
  348. var btn = $(this) ;
  349. obj.field=btn.attr('name');
  350. obj.comment=btn.children('span:first').text();
  351. obj.condition="";
  352. obj.dbType="";
  353. obj.defaultType="5";
  354. obj.defaultValue="";
  355. if(InitMirror.editor!=null){
  356. obj.defaultValue=InitMirror.editor.getCode();
  357. }
  358. aryContion.push(obj);
  359. });
  360. if(aryContion.length == 0){
  361. obj.field="";
  362. obj.comment="";
  363. obj.condition="";
  364. obj.dbType="";
  365. obj.defaultType="5";
  366. obj.defaultValue=InitMirror.editor.getCode();
  367. var code =obj.defaultValue.replace(/(^\s*)|(\s*$)/g, "");
  368. if(code) aryContion.push(obj); // java 脚本为空则跳过添加该条件
  369. }
  370. $("#trConditionField").children("tr.trCondition").each(function(){
  371. var trObj=$(this);
  372. var trDefault=trObj.next();
  373. var selObj=$('select.condition',trObj);
  374. var fieldName=selObj.attr("name");
  375. var comment=selObj.attr("comment");
  376. var condition=selObj.attr("value");
  377. var dbType=selObj.attr("dbType");
  378. var obj={};
  379. obj.field=fieldName;
  380. obj.comment=comment;
  381. obj.condition=condition;
  382. obj.dbType=dbType;
  383. var selDefault=$("select[name='changeDefalut']",trDefault).val();
  384. var txtDefault=$("textarea[name='defaultValue']",trDefault).val();
  385. if(selDefault!="1" && txtDefault.trim()==""){
  386. rtn=false;
  387. }
  388. obj.defaultType=selDefault;
  389. if(selDefault=="1"){
  390. obj.defaultValue="";
  391. }
  392. else{
  393. obj.defaultValue=txtDefault;
  394. }
  395. aryContion.push(obj);
  396. });
  397. conditionStr=JSON2.stringify(aryContion);
  398. return rtn;
  399. }
  400. function buildListJson(){
  401. var rtn="";
  402. var aryDisplay=[];
  403. var aryRtnField=[];
  404. var arySortField=[];
  405. var result=getCondition();
  406. if(!result){
  407. rtn+="请填写条件字段的值\r\n";
  408. }
  409. $("#trRtnField").children().each(function(){
  410. var fieldName=$(this).attr("name");
  411. var comment=$(this).attr("comment");
  412. var obj={};
  413. obj.field=fieldName;
  414. obj.comment=comment;
  415. aryRtnField.push(obj);
  416. });
  417. if(aryRtnField.length==0){
  418. rtn+="请选择返回字段";
  419. }
  420. $("#trSortField").children().each(function(){
  421. var fieldName=$(this).attr("name");
  422. var comment='ASC' ;
  423. if($('#sort :checked',this).length==0){
  424. comment='DESC' ;
  425. }
  426. var obj={};
  427. obj.field=fieldName;
  428. obj.comment=comment;
  429. arySortField.push(obj);
  430. });
  431. displayStr=JSON2.stringify(aryDisplay);
  432. rtnStr=JSON2.stringify(aryRtnField);
  433. sortStr=JSON2.stringify(arySortField);
  434. return rtn;
  435. }
  436. function selectForm(){
  437. var rtn="";
  438. //如果是树状的只取不大于3个的返回值
  439. if($("input.treeField").length>0) {
  440. rtn=buildTreeJson();
  441. }
  442. else{
  443. rtn=buildListJson();
  444. }
  445. if(rtn!=""){
  446. $.ligerDialog.warn(rtn,'提示信息');
  447. return;
  448. }
  449. var rerurnlist= new Array(displayStr,conditionStr,rtnStr,sortStr);
  450. var call=dialog.get("sucCall");
  451. call(rerurnlist);
  452. dialog.close();
  453. }
  454. function sortTr(obj,isUp) {
  455. var thisTr = $(obj).parents("tr");
  456. if(isUp){
  457. var prevTr = $(thisTr).prev();
  458. if(prevTr){
  459. thisTr.insertBefore(prevTr);
  460. }
  461. }
  462. else{
  463. var nextTr = $(thisTr).next();
  464. if(nextTr){
  465. thisTr.insertAfter(nextTr);
  466. }
  467. }
  468. };
  469. function sortConditionTr(obj,isUp) {
  470. var thisTr = $(obj).closest("tr");
  471. var nextTr=thisTr.next();
  472. //向上
  473. if(isUp){
  474. var prevTr = thisTr.prev();
  475. if(prevTr.length==0) return;
  476. var targeTr=prevTr.prev();
  477. thisTr.insertBefore(targeTr)
  478. nextTr.insertBefore(targeTr);
  479. }
  480. else{
  481. var tmpTr =nextTr.next();
  482. if(tmpTr.length==0) return;
  483. var targeTr=tmpTr.next();
  484. nextTr.insertAfter(targeTr);
  485. thisTr.insertAfter(targeTr);
  486. }
  487. };
  488. $(function(){
  489. var headHei = $('.header').height() ;
  490. var siblingNum = $('.header').siblings().length ;
  491. var conditionTable = $('.conditionContainer').find('table') ;
  492. var settingContainerHei = $('.l-layout-right').height()-headHei ;
  493. $('.header').next('.content').hide() ;
  494. $(".header").hover(
  495. function ()
  496. {
  497. $(this).css("color","#ffffff");
  498. $(this).css("cursor","pointer");
  499. },
  500. function ()
  501. {
  502. $(this).css("color","#222222");
  503. $(this).css("cursor","pointer");
  504. }
  505. );
  506. //加载或关闭二级菜单
  507. $(".header").bind('click',
  508. function ()
  509. {
  510. settingContainerHei = $('.l-layout-right').height()-headHei ;
  511. var divContentObj = $(this).next('.content');
  512. var isHidden = $(divContentObj).css('display')=='none';
  513. $("div.content").hide();
  514. if(isHidden){
  515. divContentObj.show() ;
  516. divContentObj.css("height",settingContainerHei-(siblingNum+1)*headHei);
  517. }
  518. }
  519. );
  520. $("td[nowrap='nowrap']").dblclick(function(){
  521. var field = $(this).text().trim() ;
  522. if($('.javaField').css('display')!='none'){
  523. InitMirror.editor.insertCode(field) ;
  524. }
  525. });
  526.  
  527.   $("div.tab-content div.tab-layout").attr("id", function(){return "No"+ $("div.tab-content div.tab-layout").index(this)});
  528.   $("ul.tab-menu li").click(function(){
  529.       var c = $("ul.tab-menu li");
  530.       var index = c.index(this);
  531.       $('#No'+index).siblings().hide();
  532.       $('#No'+index).show() ;
  533.       c.eq(index).addClass("current").siblings('li').removeClass("current");
  534. if($('#No'+index).attr('class').indexOf('javaField')>=0){
  535. if($('div.fieldBtnDiv').children('a.button').length>1){
  536. $('div.fieldBtnDiv').show() ;
  537. }
  538. curConditionField = "javaField" ;
  539. }else{
  540. $('.fieldBtnDiv').hide() ;
  541. if($('#No'+index).attr('class').indexOf('helpField')<0)
  542. curConditionField = "" ;
  543. }
  544. });
  545. $('.fieldBtnDiv .button').live('click',function(){
  546. InitMirror.editor.insertCode($(this).attr('name')) ;
  547. });
  548. $('.fieldBtnDiv .button').mouseover(function(){
  549. var targetX = $(this).next('div.divX') ;
  550. if(targetX==null) return ;
  551. targetX.css({"left":$(this).width()+targetX.width()+$(this).position().left}) ;
  552. targetX.show() ;
  553. })
  554. $('.fieldBtnDiv .button').mouseleave(function(){
  555. if($(this).next('div.divX')==null) return ;
  556. $(this).next('div.divX').hide();
  557. })
  558. $('.divX').mouseenter(function(){
  559. $(this).show() ;
  560. })
  561. $('.divX').mouseleave(function(){
  562. $(this).hide();
  563. })
  564. $('.divX').click(function(){
  565. $(this).prev('a.button').remove() ;
  566. $(this).remove();
  567. })
  568. $('.l-layout-center .btnContainer').css('margin-top',$('.l-layout-content').height()/2+"px") ;
  569. })
  570. var curConditionField ;
  571. function javaFieldSelected(bool){
  572. $("ul.tab-menu li").removeClass("current");
  573. $("div.tab-content .tab-layout").hide();
  574. if(bool==true){
  575. $("ul.tab-menu li:nth-child(2)").addClass("current");
  576. $(".tab-content .javaField").show() ;
  577. if($('div.fieldBtnDiv').children('a.button').length>1){
  578. $('div.fieldBtnDiv').show() ;
  579. }
  580. curConditionField = "javaField" ;
  581. }else{
  582. $("ul.tab-menu li:first-child").addClass("current");
  583. $("div.tab-content .tab-layout:first-child").show() ;
  584. curConditionField = "" ;
  585. }
  586. }
  587. </script>
  588. <style type="text/css">
  589. body{ padding:2px; margin:0 0 0 0;overflow: hidden; }
  590. div.content{height:110px;overflow: auto;}
  591. ul.btnContainer{text-align: center;}
  592. .l-layout-content{width:100% !important;}
  593. .l-layout-right{left:350px;height:500px;}
  594. .l-layout-right .l-layout-header-inner {padding-left : 0px;}
  595. .l-layout-center{height:480px;}
  596. /* tab样式 */
  597. .tab-box {width:99%; height:99%; margin:1px;}
  598. .tagMenu {height:20px; line-height:20px; background:#efefef; position:relative; border-bottom:1px solid #999}
  599. .tab-content .table-grid{margin-top: 0px;}
  600. .tagMenu ul {position:absolute; left:5px; bottom:-1px; height:26px;}
  601. ul.tab-menu li {float:left; margin-bottom:1px; line-height:16px; height:14px; margin:5px 0 0 -1px; text-align:center; padding:0 12px; cursor:pointer}
  602. ul.tab-menu li.current {border:1px solid #999; border-bottom:none; background:#fff; height:25px; line-height:26px; margin:0}
  603. .javaField, .helpField {border: 3px solid #DDDDDD;height:200px;float:left;width:98%;}
  604. .helpField {padding:0 5px 0 10px;width:95%;display:none;}
  605. .fieldBtnDiv {float:left;display:none;}
  606. .fieldBtnDiv .button{margin:0 2px 2px 2px;}
  607. .divX {line-height:7px;width:7px;font-weight:bold;cursor:pointer;color:red;display: none;position:relative;float:left;}
  608. .table-detail .inputText {width:140px;}
  609. </style>
  610. </head>
  611. <body>
  612. <div id="defLayout" >
  613. <div position="left" title="获取字段列表" style="overflow: scroll;width: 270px;height:450px;">
  614. <table cellpadding="1" class="table-grid table-list" cellspacing="1">
  615. <tr>
  616. <th></th>
  617. <th>字段</th>
  618. <th>注释</th>
  619. </tr>
  620. <c:forEach var="col" items="${tableModel.columnList }" varStatus="status">
  621. <c:set var="clsName" ><c:choose><c:when test="${status.index%2==0}">odd</c:when><c:otherwise>even</c:otherwise></c:choose> </c:set>
  622. <tr class="${clsName}">
  623. <td>
  624. <c:choose>
  625. <c:when test="${style==0 }">
  626. <input type="checkbox" name="fieldName" class="pk" value="${col.name }" dbType="${col.columnType }">
  627. </c:when>
  628. <c:otherwise>
  629. <input type="checkbox" name="fieldName" class="pk" value="${col.name }" id="${col.name }" dbType="${col.columnType }">
  630. </c:otherwise>
  631. </c:choose>
  632. </td>
  633. <td nowrap="nowrap">
  634. ${col.name }
  635. </td>
  636. <td>
  637. <input type="text" name="comment" class="inputText" value="${col.comment }">
  638. </td>
  639. </tr>
  640. </c:forEach>
  641. </table>
  642. </div>
  643. <div position="center" >
  644. <ul class="btnContainer">
  645. <li class="btn">
  646. <a href='#' class='button' onclick="setField()" ><span >=></span></a>
  647. </li>
  648. </ul>
  649. </div>
  650. <div id="fieldSetting" position="right" title="字段设置">
  651. <div class="panel-detail conditionContainer">
  652. <div class="header" style="margin-top:5px;">
  653. 条件字段
  654. </div>
  655. <div class="content" style="height:210px;">
  656. <div class="tab-box">
  657.   <div class="tagMenu">
  658.       <ul class="tab-menu">
  659.           <li>条件选择</li>
  660.           <li>Java脚本</li>
  661.           <li>帮助</li>
  662.       </ul>
  663.   </div>
  664.   <div class="tab-content">
  665.    <div class="tab-layout trConditionField">
  666. <table cellpadding="1" class="table-grid table-list" cellspacing="1">
  667. <tr>
  668. <th>
  669. 字段名
  670. </th>
  671. <th>
  672. 条件
  673. </th>
  674. <th>
  675. 显示名
  676. </th>
  677. <th>
  678. 管理
  679. </th>
  680. </tr>
  681. <tbody id="trConditionField">
  682. <c:forEach items="${ bpmFormDialog.conditionList}" var="field">
  683. <tr class='trCondition' id='condition${field.fieldName}' name='${field.fieldName}' comment='${field.comment}'>
  684. <td>${field.fieldName}</td>
  685. <td>
  686. <select class='condition' name='${field.fieldName}' dbType='${field.fieldType}' comment='${field.comment}' >
  687. <c:choose>
  688. <c:when test="${field.fieldType=='varchar'}">
  689. <option value='=' <c:if test="${field.condition=='='}">selected</c:if> >等于</option>
  690. <option value='like' <c:if test="${field.condition=='like'}">selected</c:if>>LIKE</option>
  691. <option value='likeEnd' <c:if test="${field.condition=='likeEnd'}">selected</c:if>>LIKEEND</option>
  692. </c:when>
  693. <c:when test="${field.fieldType=='number'}">
  694. <option value='=' <c:if test="${field.condition=='='}">selected</c:if>>等于</option>
  695. <option value='>=' <c:if test="${field.condition=='>='}">selected</c:if> >大于等于</option>
  696. <option value='>' <c:if test="${field.condition=='>'}">selected</c:if> >大于</option>
  697. <option value='<' <c:if test="${field.condition=='<'}">selected</c:if> >小于</option>
  698. <option value='<=' <c:if test="${field.condition=='<='}">selected</c:if>>小于等于</option>
  699. </c:when>
  700. <c:otherwise>
  701. <option value='=' <c:if test="${field.condition=='='}">selected</c:if>>等于</option>
  702. <option value='between' <c:if test="${field.condition=='between'}">selected</c:if> >between</option>
  703. <option value='>=' <c:if test="${field.condition=='>='}">selected</c:if> >大于等于</option>
  704. <option value='<=' <c:if test="${field.condition=='<='}">selected</c:if> >小于等于</option>
  705. </c:otherwise>
  706. </c:choose>
  707. </select>
  708. </td>
  709. <td>${field.comment}</td>
  710. <td>
  711. <a alt='上移' href='#' class='link moveup' onclick='sortConditionTr(this,true)'></a>
  712. <a alt='下移' href='#' class='link movedown' onclick='sortConditionTr(this,false)'></a>
  713. <a href='#' class='link del' onclick='delConditionTr(this)' >删除</a>
  714. </td>
  715. </tr>
  716. <tr id='conditionVal${field.fieldName}'>
  717. <td>默认值</td>
  718. <td>
  719. <select name='changeDefalut' onchange='changeDefault(this)'>
  720. <option value="2" <c:if test="${field.defaultType=='2'}">selected</c:if>>固定值</option>
  721. <option value="3" <c:if test="${field.defaultType=='3'}">selected</c:if>>脚本</option>
  722. </select>
  723. </td>
  724. <td colspan="2">
  725. <a <c:if test="${ field.defaultType=='2'}">style='display:none;'</c:if> href='#' name='btnScript'
  726. class='link var' title='常用脚本' onclick='selectScript(this)'>常用脚本</a><br>
  727. <textarea name='defaultValue' cols='40' rows='3' >${field.defaultValue}</textarea></td>
  728. </tr>
  729. </c:forEach>
  730. </tbody>
  731. </table>
  732. </div>
  733. <div class="fieldBtnDiv" name="fieldBtnDiv">
  734. <a href="javascript:;" class="button" onclick="" style="display:none;">
  735. <span></span>
  736. </a>
  737. <div class="divX" id="DIV" title="删除">×</div>
  738. </div>
  739.       <div class="tab-layout javaField">
  740. <textarea id="script" name="defaultValue" codemirror="true" mirrorheight="200px" name="script" rows="26" cols="70"></textarea>
  741. </div>
  742.       <div class="tab-layout helpField">
  743. <span>
  744. 例:if(map.get("ACTDEFID")!=null)<br>&nbsp;&nbsp;return " and ACTDEFID like '%"+map.get("ACTDEFID")+"%'" ;<br>
  745. 其中的map为系统所封装的一个参数<br>
  746. 在脚本中使用map.get("ACTDEFID")可以获取表单提交时所携带的ACTDEFID参数值,脚本应拼接并返回任意的可执行的sql语句
  747. </span>
  748. </div>
  749. </div>
  750. </div>
  751. </div>
  752. </div>
  753. <div class="panel-detail returnContainer">
  754. <div class="header">
  755. 返回字段
  756. </div>
  757. <div class="content">
  758. <div style="overflow: auto;">
  759. <table cellpadding="1" class="table-grid table-list" cellspacing="1">
  760. <tr>
  761. <th>
  762. 字段名
  763. </th>
  764. <th>
  765. 显示名
  766. </th>
  767. <th>
  768. 管理
  769. </th>
  770. </tr>
  771. <tbody id="trRtnField">
  772. <c:forEach items="${ bpmFormDialog.returnList}" var="field">
  773. <tr id='rtn${field.fieldName}' name='${field.fieldName}' comment='${field.comment}'>
  774. <td>${field.fieldName}</td>
  775. <td>${field.comment}</td>
  776. <td>
  777. <a alt='上移' href='#' class='link moveup' onclick='sortTr(this,true)'>&nbsp;</a>
  778. <a alt='下移' href='#' class='link movedown' onclick='sortTr(this,true)'>&nbsp;</a>
  779. <a href='#' class='link del' onclick='delRow(this)' >删除</a>
  780. </td>
  781. </tr>
  782. </c:forEach>
  783. </tbody>
  784. </table>
  785. </div>
  786. </div>
  787. </div>
  788. <div class="panel-detail sortContainer">
  789. <div class="header">
  790. 排序字段
  791. </div>
  792. <div class="content">
  793. <div style="overflow: auto;">
  794. <table cellpadding="1" class="table-grid table-list" cellspacing="1">
  795. <tr>
  796. <th>
  797. 字段名
  798. </th>
  799. <th>
  800. 排序
  801. </th>
  802. <th>
  803. 管理
  804. </th>
  805. </tr>
  806. <tbody id="trSortField">
  807. <c:forEach items="${ bpmFormDialog.sortList}" var="field">
  808. <tr id="sort${field.fieldName}" name="${field.fieldName}">
  809. <td id="fieldName">${field.fieldName}</td>
  810. <td id="sort">
  811. <input type="checkbox" name="sort" id="ASC" <c:if test="${field.comment == 'ASC'}">checked="checked"</c:if> />
  812. &nbsp;升序(不勾选则为降序)
  813. </td>
  814. <td>
  815. <a alt='上移' href='#' class='link moveup' onclick='sortTr(this,true)'>&nbsp;</a>
  816. <a alt='下移' href='#' class='link movedown' onclick='sortTr(this,false)'>&nbsp;</a>
  817. <a href='#' class='link del' onclick='delRow(this)' >删除</a>
  818. </td>
  819. </tr>
  820. </c:forEach>
  821. </tbody>
  822. <tr id="sortTrTemplate" style="display:none;">
  823. <td id="fieldName"></td>
  824. <td id="sort">
  825. <input type="checkbox" name="sort" id="ASC" checked="checked" />&nbsp;升序(不勾选则为降序)
  826. </td>
  827. <td>
  828. <a alt='上移' href='#' class='link moveup' onclick='sortTr(this,true)'>&nbsp;</a>
  829. <a alt='下移' href='#' class='link movedown' onclick='sortTr(this,false)'>&nbsp;</a>
  830. <a href='#' class='link del' onclick='delRow(this)' >删除</a>
  831. </td>
  832. </tr>
  833. </table>
  834. </div>
  835. </div>
  836. </div>
  837. </div>
  838. <div position="bottom" class="bottom" style="padding-top: 15px;">
  839. <a href='#' class='button' onclick="selectForm()" ><span class="icon ok"></span><span >确定</span></a>
  840. <a href='#' class='button' style='margin-left:10px;' onclick="dialog.close();"><span class="icon cancel"></span><span >取消</span></a>
  841. </div>
  842. <input type="hidden" name="resultfield" id="resultfield" value="${bpmFormDialog.resultfield}"/>
  843. <input type="hidden" name="id" id="id" value="${bpmFormDialog.id}"/>
  844. </div>
  845. </body>
  846. </html>