SysCustomDisplayEdit.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851
  1. var validateData=null;
  2. /**
  3. * 初始化第一步的页面
  4. * @param isAdd
  5. * @returns
  6. */
  7. function initPage(isAdd){
  8. initFirstStepLayout();
  9. initFirstStepTablesTree();
  10. if(!isAdd){
  11. $("a.sbutton").hide();
  12. }
  13. $("#first-next").click(function(){
  14. if(scriptEditor){
  15. scriptEditor.save();
  16. }
  17. var resultMsg = validateFirstStepSetting(isAdd);
  18. if(resultMsg.status){
  19. if(resultMsg.message){
  20. $.ligerDialog.error(resultMsg.message);
  21. }
  22. return;
  23. }
  24. if(!isAdd){
  25. initSecondStepUpdate();
  26. }else{
  27. initSecondStepAdd();
  28. }
  29. });
  30. $("#second-prev").click(function(){
  31. $(".step-first").show();
  32. $(".step-second").hide();
  33. });
  34. }
  35. /**
  36. *第一步页面的布局
  37. */
  38. function initFirstStepLayout(){
  39. $("#firstLayout").ligerLayout( {
  40. leftWidth : 350,
  41. height: 500,
  42. onHeightChanged: heightChanged,
  43. allowLeftResize:false
  44. });
  45. }
  46. /**
  47. *加载表/视图 树
  48. *@return void
  49. */
  50. function initFirstStepTablesTree(){
  51. var dsName=$("#dsName").val();
  52. if(!dsName){
  53. return;
  54. }
  55. var setting = {
  56. async: {enable: false},
  57. data: {
  58. key:{name:"name"},
  59. simpleData: {
  60. enable: true,
  61. idKey: "id",
  62. pIdKey: "pid",
  63. rootPId: "0"
  64. }
  65. },
  66. callback:{
  67. onDblClick: zTreeOnDblClick
  68. }
  69. };
  70. var url=__ctx+"/platform/system/jdbcDb/getTables.ht?dsName="+dsName;
  71. url=url.getNewUrl();
  72. $.ligerDialog.waitting('正在加载数据,请等待...');
  73. $.post(url,{},function(data){
  74. var ztData =transDataToZtreeFormat(data);
  75. tablesTree=$.fn.zTree.init($("#tablesTree"), setting,ztData);
  76. //tablesTree.expandAll(true);
  77. $.ligerDialog.closeWaitting();
  78. });
  79. }
  80. /**
  81. * 第一步页面
  82. * @returns void
  83. */
  84. function initFirstStep(isAdd){
  85. $("#first-next").click(function(){
  86. if(!isAdd){
  87. initStepSecondUpdate();
  88. }else{
  89. initStepSecondAdd();
  90. }
  91. });
  92. }
  93. /**
  94. * Validate first step setting
  95. * @param isAdd
  96. * @returns object:{status,message}
  97. * status:error code,non-zero error occurred
  98. * message:error message.
  99. */
  100. function validateFirstStepSetting(isAdd){
  101. var resultMsg={
  102. status:0,
  103. message:""
  104. };
  105. var frm=$('#sysCustomDisplayForm').form();
  106. if(!frm.handValidResult("#name")){
  107. resultMsg.status=1;
  108. }
  109. if(isAdd){
  110. if(!frm.handValidResult("#script")){
  111. resultMsg.status=2;
  112. }
  113. if($("[name='dsName']").val()==""){
  114. resultMsg.status=3;
  115. resultMsg.message="请选择数据源!";
  116. return resultMsg;
  117. }
  118. validateData = validateScript();
  119. if(!validateData.status){
  120. resultMsg.status=4;
  121. resultMsg.message=validateData.resultMsg;
  122. return resultMsg;
  123. }
  124. if(!validateData.supportSubSelect){
  125. resultMsg.status=5;
  126. resultMsg.message="脚本执行的结果必须能够作为子查询!";
  127. return resultMsg;
  128. }
  129. }
  130. return resultMsg;
  131. }
  132. /**
  133. * Validate second step setting
  134. * @param isAdd
  135. * @returns object:{status,message}
  136. * status:error code,non-zero error occurred
  137. * message:error message.
  138. */
  139. function validateSecondStepSetting(isAdd){
  140. var resultMsg = {
  141. status : 0,
  142. message : ""
  143. };
  144. var template = $("#template").val();
  145. if (!template) {
  146. resultMsg.status = 1;
  147. resultMsg.message = "请设置模板!";
  148. return resultMsg;
  149. }
  150. var setting = $("#setting").val();
  151. if (!setting) {
  152. resultMsg.status = 2;
  153. resultMsg.message = "请设置模板参数!";
  154. return resultMsg;
  155. }
  156. return resultMsg;
  157. }
  158. /**初始化第二步页面----更新
  159. * @returns
  160. */
  161. function initSecondStepUpdate(){
  162. //initial selected columns
  163. var fields = $("#fieldSetting").val();
  164. if(!fields){
  165. fields=$("#fields").val();
  166. }
  167. initColumns($.parseJSON(fields));
  168. //initial condition setting
  169. var conditions = $("#conditionField").val();
  170. initConditions($.parseJSON(conditions));
  171. $(".step-first").hide();
  172. $(".step-second").show();
  173. }
  174. /**
  175. * 始化第二步页面----添加
  176. */
  177. function initSecondStepAdd(){
  178. var fields=validateData.sqlFields;
  179. //initial selected columns
  180. initColumns(fields);
  181. initConditions([]);
  182. $(".step-first").hide();
  183. $(".step-second").show();
  184. $("#fields").val(JSON2.stringify(fields));
  185. };
  186. /**
  187. *验证Script的有效性
  188. */
  189. function validateScript(){
  190. var dsName=$("[name='dsName']").val();
  191. var script=$("[name='script']").val();
  192. var url=__ctx+ "/platform/system/sysCustomDisplay/validateScript.ht";
  193. var params={
  194. dsName:dsName,
  195. script:script
  196. };
  197. var rtn;
  198. $.ajax({
  199. url:url,
  200. data:params,
  201. async:false
  202. }).done(function(data){
  203. rtn=data;
  204. });
  205. return rtn;
  206. }
  207. /**
  208. *更改模板
  209. */
  210. function templateChangeHandler(obj){
  211. $("#conditionField").val('');
  212. $("#setting").val('');
  213. }
  214. /**
  215. *设置模板参数
  216. */
  217. function settingTemplate(){
  218. var file=$("#template").val();
  219. if(!file){
  220. $.ligerDialog.error("请先选择一个模板!");
  221. return;
  222. }
  223. var settings = getAllSetting();
  224. $("#fieldSetting").val(JSON2.stringify(settings.fieldSetting));
  225. $("#conditionField").val(JSON2.stringify(settings.conditionField));
  226. var setting = $.parseJSON($("#setting").val());
  227. var fields = settings.fieldSetting;
  228. if(!fields){
  229. fields=$.parseJSON($("#fields").val());
  230. }
  231. var params={
  232. fields:fields,
  233. setting:setting
  234. };
  235. openSettingTemplateDialog(params)
  236. }
  237. /**
  238. *打开设置模板对话框
  239. */
  240. function openSettingTemplateDialog(params){
  241. var setting = $("#template").find("option:selected").attr("setting");
  242. var winArgs="dialogWidth=900px;dialogHeight=600px;help=0;status=0;scroll=0;center=1";
  243. var url=__ctx+setting;
  244. url=url.getNewUrl();
  245. var rtn = window.showModalDialog(url,params,winArgs);
  246. if(rtn){
  247. // $("#fieldSetting").val(JSON2.stringify(rtn.fieldSetting));
  248. $("#setting").val(JSON2.stringify(rtn.setting));
  249. }
  250. }
  251. /*
  252. *自定义外部表单并提交
  253. */
  254. function customFormSubmit(options){
  255. var id=$("#id").val();
  256. var name=$("#name").val();
  257. var script=$("#script").val();
  258. var scriptType=$("#scirptType").val();
  259. var description=$("#description").val();
  260. var fieldSetting=$("#fieldSetting").val();
  261. var setting=$("#setting").val();
  262. var conditionField=$("#conditionField").val();
  263. var dsName=$("#dsName").val();
  264. var dsAlias=$("#dsAlias").val();
  265. var template=$("#template").val();
  266. // var dspTemplate=$("#dspTemplate").val();
  267. var paged=$("input[name='paged']:checked").val();
  268. var pageSize=$("#pageSize").val();
  269. var json={
  270. id:id,
  271. name:name,
  272. description:description,
  273. script:script,
  274. scriptType:scriptType,
  275. setting:setting ,
  276. fieldSetting:fieldSetting,
  277. conditionField:conditionField ,
  278. dsName:dsName ,
  279. dsAlias:dsAlias,
  280. template:template,
  281. // dspTemplate:dspTemplate,
  282. paged:paged,
  283. pageSize:pageSize
  284. };
  285. var form = $('<form method="post" action="save.ht"></form>');
  286. var input = $("<input type='hidden' name='json'/>");
  287. input.val(JSON2.stringify(json));
  288. form.append(input);
  289. form.ajaxForm(options);
  290. form.submit();
  291. }
  292. /**布局大小改变的时候通知tab,面板改变大小
  293. * @param options
  294. * @returns
  295. */
  296. function heightChanged(options){
  297. $("#tablesTree").height(options.middleHeight -90);
  298. };
  299. /**
  300. *TablesTree 树节点双击元事件
  301. */
  302. function zTreeOnDblClick(event, treeId, treeNode) {
  303. if(treeNode.id=='table'||treeNode.id=='view'||treeNode.id=='0'){
  304. return;
  305. }
  306. if(treeNode.isParent){
  307. return;
  308. }
  309. var text=treeNode.name;
  310. var pos=scriptEditor.getCursor();
  311. scriptEditor.replaceRange(text,pos);
  312. // var textArea=document.getElementById("script");
  313. // $.insertText(textArea,treeNode.name);
  314. };
  315. /**
  316. *将从__ctx+"/platform/system/jdbcDb/getTables.ht返回的数据转换成ztree SimpleData接受的数据格式
  317. */
  318. function transDataToZtreeFormat(data){
  319. //节点的Type字段: 1-表父节点;2-视图的父节点;3-表;4-视图;5-表列;6-视图列
  320. var tables = data.tables;
  321. var views=data.views;
  322. var ztData=[
  323. {name:"数据表",id:"table",pid:"0",type:1},
  324. {name:"视图",id:"view",pid:"0",type:2}
  325. ];
  326. for(var i=0;i<tables.length;i++){
  327. var table=tables[i];
  328. var tableObj={
  329. id:table.name,
  330. pid:"table",
  331. name:table.name,
  332. comment:table.comment,
  333. type:3
  334. };
  335. ztData.push(tableObj);
  336. var columns=table.columnList;
  337. for(var j=0;j<columns.length;j++){
  338. var column=columns[j];
  339. var columnObj={
  340. id:column.tableName+"."+column.name,
  341. pid:column.tableName,
  342. name:column.name,
  343. comment:column.comment,
  344. type:5
  345. };
  346. ztData.push(columnObj);
  347. }
  348. }
  349. for(var i=0;i<views.length;i++){
  350. var view=views[i];
  351. var viewObj={
  352. id:view.name,
  353. pid:"view",
  354. name:view.name,
  355. comment:view.comment,
  356. type:4
  357. };
  358. ztData.push(viewObj);
  359. var columns=view.columnList;
  360. for(var j=0;j<columns.length;j++){
  361. var column=columns[j];
  362. var columnObj={
  363. id:column.tableName+"."+column.name,
  364. pid:column.tableName,
  365. name:column.name,
  366. comment:column.comment,
  367. type:5
  368. };
  369. ztData.push(columnObj);
  370. }
  371. }
  372. return ztData;
  373. }
  374. /**
  375. *更改数据源响应事件
  376. */
  377. function changeDataSource(){
  378. initFirstStepTablesTree();
  379. }
  380. /**
  381. *树节点选择操作:选择
  382. */
  383. function treeSelect(type){
  384. if(!tablesTree){
  385. return;
  386. }
  387. var nodes = tablesTree.getSelectedNodes();
  388. var text="";
  389. switch(type){
  390. case 1:
  391. for(var i=0;i<nodes.length;i++){
  392. //Skip None Table ,None Column Nodes
  393. if(nodes[i].id=='table'||nodes[i].id=='view'||nodes[i].id=='0'){
  394. continue;
  395. }
  396. text+=" ,"+nodes[i].name;
  397. }
  398. if(text){
  399. text=text.substring(2);
  400. // $.insertText(document.getElementById("script"),text);
  401. var pos=scriptEditor.getCursor();
  402. scriptEditor.replaceRange(text,pos);
  403. }
  404. break;
  405. case 2:
  406. var selectItems=[];
  407. var fromItems=[];
  408. for(var k=0;k<nodes.length;k++){
  409. var node = nodes[k]
  410. //Skip None Table ,None Column Nodes
  411. if(node.id=='table'||node.id=='view'||node.id=='0'){
  412. continue;
  413. }
  414. //get fromItems
  415. if(node.type==3||node.type==4){
  416. fromItems.push(node.name);
  417. var children = node.children;
  418. //if one of table/view's columns, skip;else,push all table/view's columns to selectItem
  419. var flag2=false;
  420. for(var i=0;i<children.length;i++){
  421. var childId=children[i].id;
  422. var flag=false;
  423. for(var j=0;j<nodes.length;j++){
  424. if(nodes[j].id==childId){
  425. flag=true;
  426. break;
  427. }
  428. }
  429. if(flag==true){
  430. flag2=true;
  431. break;
  432. }
  433. }
  434. if(flag2==false){
  435. for(var i=0;i<children.length;i++){
  436. selectItems.push(children[i].name);
  437. }
  438. }
  439. continue;
  440. }
  441. //get selectItems
  442. if(node.type==5||node.type==6){
  443. selectItems.push(node.name);
  444. var parent = node.getParentNode();
  445. var flag = false;
  446. for(var j=0;j<nodes.length;j++){
  447. if(nodes[j].id==parent.id){
  448. flag=true;
  449. break;
  450. }
  451. }
  452. if(flag==false){
  453. fromItems.push(parent.name);
  454. }
  455. continue;
  456. }
  457. }
  458. //insert text into script textarea
  459. text="SELECT\n\t";
  460. var select =selectItems.join(",\n\t")||"<选择的列>\n\t";
  461. text+=select;
  462. text+="\nFROM\n\t";
  463. var from =fromItems.join(",\n\t")||"<选择的表>\n\t";
  464. text+=from;
  465. text+="\nWHERE\n\t<条件>";
  466. // $.insertText(document.getElementById("script"),text);
  467. var pos=scriptEditor.getCursor();
  468. scriptEditor.replaceRange(text,pos);
  469. break;
  470. }
  471. }
  472. /**
  473. *初始化数据列的表
  474. */
  475. function initColumns(fields){
  476. var columnsTbl = $("#columnsTbl tbody").html("");
  477. for(var i=0;i<fields.length;i++){
  478. var field=fields[i];
  479. var tr = constructColumnTr(field);
  480. columnsTbl.append(tr);
  481. }
  482. }
  483. /**
  484. *初始化条件设置
  485. */
  486. function initConditions(confitionFields){
  487. if(!confitionFields){
  488. return false;
  489. }
  490. $("#conditionTbl tbody").html("");
  491. for(var i=0;i<confitionFields.length;i++){
  492. var field=confitionFields[i];
  493. var joinType=field.joinType;
  494. var name = field.name;
  495. var qualifiedName = field.qualifiedName;
  496. var type=field.type;
  497. var comment=field.comment;
  498. var operate=field.cond;
  499. var value=field.value;
  500. var valueFrom=field.valueFrom;
  501. var condition={
  502. joinType:joinType,
  503. name:name,
  504. qualifiedName:qualifiedName,
  505. type:type,
  506. comment:comment,
  507. operate:operate,
  508. value:value,
  509. valueFrom:valueFrom
  510. };
  511. var tr = constructConditionTr(condition);
  512. $("#conditionTbl tbody").append(tr);
  513. }
  514. }
  515. /*
  516. *构造SQL语句选择的列的<tr>///////////////
  517. */
  518. function constructColumnTr(field){
  519. var index = field.index;
  520. var type = field.type;
  521. var name = field.name;
  522. var qualifiedName=field.qualifiedName;
  523. var label=field.label;
  524. var comment = field.comment;
  525. if(!comment){
  526. comment=label;
  527. }
  528. // var display=false;
  529. // if(typeof(field.display)!='undefined'){
  530. // display = field.display;
  531. // }
  532. //first td checkbox
  533. var $tdChk = $("<td></td>");
  534. var $inputChk = $("<input></input>")
  535. $inputChk.attr("name","fieldCheckBox");
  536. $inputChk.attr("type","checkbox");
  537. $tdChk.append($inputChk);
  538. $inputHidden=$("<input type='hidden'/>")
  539. $inputHidden.val(JSON2.stringify(field));
  540. $tdChk.append($inputHidden);
  541. //second td field name
  542. var $tdName = $("<td></td>");
  543. $tdName.append(name);
  544. //third td field comment
  545. var $tdComment = $("<td style='width:80px;'></td>");
  546. var $inputComment=$("<input style='width:80px;'></input>");
  547. $inputComment.attr("name","fieldComment");
  548. $inputComment.val(comment);
  549. $tdComment.append($inputComment);
  550. //four td column select checkedbox
  551. // var $tdSelect = $("<td></td>");
  552. // var $checkbox=$("<input></input>");
  553. // $checkbox.attr("name","fieldDisplay");
  554. // $checkbox.attr("type","checkbox");
  555. // $checkbox.attr("fieldName",name);
  556. // $tdSelect.append($checkbox);
  557. //Tr
  558. var $tr=$("<tr></tr>");
  559. $tr.append($tdChk);
  560. $tr.append($tdName);
  561. $tr.append($tdComment);
  562. // $tr.append($tdSelect);
  563. return $tr;
  564. }
  565. /**
  566. *绑定选择条件点击事件
  567. */
  568. function selectCondition(){
  569. $("#columnsTbl input:[name='fieldCheckBox']:checked").each(function(){
  570. var field=$.parseJSON($(this).closest("tr").find("input[type='hidden']").val());
  571. var $fieldComment = $(this).closest("tr").find("input[name='fieldComment']");
  572. var name = field.name;
  573. var type = field.type;
  574. var label = field.label;
  575. var index = field.index;
  576. var qualifiedName=field.qualifiedName;
  577. var comment = $fieldComment.val();
  578. // var qualifiedName = $fieldComment.attr("fieldQualifiedName");
  579. var condition={
  580. joinType:"AND",
  581. name:name,
  582. qualifiedName:qualifiedName,
  583. label:label,
  584. type:type,
  585. operate:'=',
  586. comment:comment,
  587. value:"",
  588. valueFrom:1
  589. };
  590. var tr = constructConditionTr(condition);
  591. $("#conditionTbl tbody").append(tr);
  592. });
  593. };
  594. /*
  595. *构造条件列的<tr>
  596. */
  597. function constructConditionTr(condition) {
  598. var joinType = condition.joinType;
  599. var type = condition.type;
  600. var name = condition.name;
  601. var qualifiedName = condition.qualifiedName;
  602. var label = condition.lebel;
  603. var comment = condition.comment;
  604. var cond = condition.operate;
  605. var value = condition.value;
  606. var valueFrom = condition.valueFrom;
  607. var constructOption = function(cond1, cond2, text) {
  608. if (!text) {
  609. text = cond2;
  610. }
  611. var $option = $("<option></option");
  612. $option.text(text);
  613. $option.val(cond2);
  614. if (cond1 == cond2) {
  615. $option.attr("selected", "selected");
  616. }
  617. return $option;
  618. };
  619. //联合类型
  620. var $tdJoinType = $("<td></td>");
  621. var $selectJoinType = $("<select name='conditionJoinType'></select>");
  622. $selectJoinType.append(constructOption(joinType, "AND"));
  623. $selectJoinType.append(constructOption(joinType, "OR"));
  624. $tdJoinType.append($selectJoinType);
  625. $hiddenInput = $("<input type='hidden'/>");
  626. $hiddenInput.val(JSON2.stringify(condition));
  627. $tdJoinType.append($hiddenInput);
  628. //名称
  629. var $tdName = $("<td></td>");
  630. $tdName.append(name);
  631. //条件
  632. var $tdCond = $("<td></td>");
  633. var $select = $("<select name='conditionOperate'></select>");
  634. $select.css("width", "100%");
  635. switch (type) {
  636. case 'varchar':
  637. $select.append(constructOption(cond, "="));
  638. $select.append(constructOption(cond, "likeEnd"));
  639. $select.append(constructOption(cond, "like"));
  640. break;
  641. case 'number':
  642. $select.append(constructOption(cond, "="));
  643. $select.append(constructOption(cond, ">"));
  644. $select.append(constructOption(cond, "<"));
  645. $select.append(constructOption(cond, ">="));
  646. $select.append(constructOption(cond, "<="));
  647. break;
  648. case 'int':
  649. $select.append(constructOption(cond, "="));
  650. $select.append(constructOption(cond, ">"));
  651. $select.append(constructOption(cond, "<"));
  652. $select.append(constructOption(cond, ">="));
  653. $select.append(constructOption(cond, "<="));
  654. break;
  655. default:
  656. $select.append(constructOption(cond, "="));
  657. $select.append(constructOption(cond, ">="));
  658. $select.append(constructOption(cond, "<="));
  659. $select.append(constructOption(cond, "between"));
  660. }
  661. $tdCond.append($select);
  662. //注解
  663. var $tdComment = $("<td style='width:80px;'></td>");
  664. var $inputComment = $("<input style='width:80px;' name='conditionComment' type='text'/>");
  665. $inputComment.val(comment);
  666. $tdComment.append($inputComment);
  667. //值来源
  668. var $tdValueFrom = $("<td></td>");
  669. var $valueFrom = $("<select name='conditionValueFrom' onchange='selectValueFrom(this)'></select>");
  670. $valueFrom.append(constructOption(valueFrom, 1, "输入"));
  671. $valueFrom.append(constructOption(valueFrom, 2, "固定值"));
  672. $valueFrom.append(constructOption(valueFrom, 3, "脚本"));
  673. $tdValueFrom.append($valueFrom);
  674. //值
  675. var $tdValue = $("<td style='width:150px;'></td>");
  676. $a = $("<a style='display:none;' href='#' name='btnScript' class='link var' title='常用脚本' onclick='selectScript(this)'>常用脚本</a>");
  677. var $value;
  678. if (valueFrom == 1) {
  679. $value = $("<input class='hide' name='conditionValue' type='text'/>");
  680. $value.attr("readonly", "readonly")
  681. } else if (valueFrom == 2) {
  682. $value = $("<input style='width:150px;' name='conditionValue' type='text'/>");
  683. } else {
  684. $a.show();
  685. $value = $("<textarea style='width:150px;' name='conditionValue'></textarea>");
  686. }
  687. $value.val(value);
  688. $tdValue.append($a);
  689. $tdValue.append($value);
  690. //管理
  691. var $tdManage = $("<td></td>");
  692. var $aDelete = $("<a onclick='delConditionTr(this)'>删除</a>");
  693. $aDelete.attr("href", "#");
  694. $aDelete.addClass("link del");
  695. $tdManage.append($aDelete);
  696. $tr = $("<tr></tr>");
  697. $tr.append($tdJoinType);
  698. $tr.append($tdName);
  699. $tr.append($tdCond);
  700. $tr.append($tdComment);
  701. $tr.append($tdValueFrom);
  702. $tr.append($tdValue);
  703. $tr.append($tdManage);
  704. return $tr;
  705. }
  706. /**删除选择的条件所有的表格的行
  707. * @param obj
  708. * @returns
  709. */
  710. function delConditionTr(obj){
  711. $(obj).closest("tr").remove();
  712. }
  713. /**
  714. * 取得参数设置
  715. */
  716. function getAllSetting(){
  717. var settings={
  718. fieldSetting:new Array(),
  719. conditionField:new Array()
  720. };
  721. //get field setting
  722. var fields = getFieldSetting();
  723. settings.fieldSetting=fields;
  724. //取条件字段
  725. var conditions=getConditionSetting();
  726. settings.conditionField=conditions;
  727. return settings;
  728. }
  729. /**
  730. *获取Select 字段的设置
  731. */
  732. function getFieldSetting(){
  733. var setting=[];
  734. $("#columnsTbl input:[type='hidden']").each(function(){
  735. $this=$(this);
  736. var fieldSetting=$.parseJSON($this.val());
  737. var comment = $this.closest("tr").find("input[name='fieldComment']").val();
  738. fieldSetting.comment=comment;
  739. setting.push(fieldSetting);
  740. });
  741. return setting;
  742. }
  743. /**
  744. *获取条件 字段设置
  745. */
  746. function getConditionSetting(){
  747. var setting=[];
  748. $("#conditionTbl input[type='hidden']").each(function(){
  749. var $this=$(this);
  750. var $tr=$this.closest('tr');
  751. var field=$.parseJSON($this.val());
  752. var joinType=$tr.find("select:[name='conditionJoinType']").val();
  753. var operate =$tr.find("select:[name='conditionOperate']").val();
  754. var valueFrom =parseInt($tr.find("select:[name='conditionValueFrom']").val());
  755. var value =$tr.find("[name='conditionValue']").val();
  756. var comment =$tr.find("input:[name='conditionComment']").val();
  757. field.joinType=joinType;
  758. field.operate=operate;
  759. field.valueFrom=valueFrom;
  760. field.value=value;
  761. field.comment=comment;
  762. field.valueFrom=valueFrom;
  763. setting.push(field);
  764. });
  765. return setting;
  766. }
  767. /**
  768. *值来源更改事件处理
  769. */
  770. function selectValueFrom(obj){
  771. var $tr = $(obj).closest("tr");
  772. var $a = $tr.find("a:[name='btnScript']");
  773. $a.hide();
  774. var valueFrom = $(obj).val();
  775. var $value;
  776. if(valueFrom==1){
  777. $value=$("<input class='hide' type='text'/>");
  778. $value.attr("readonly","readonly")
  779. }else if(valueFrom==2){
  780. $value=$("<input style='width:150px;' type='text'/>");
  781. }else{
  782. $a.show();
  783. $value=$("<textarea></textarea>");
  784. $value.css("width","150px");
  785. }
  786. $value.attr("name","conditionValue");
  787. $tr.find("[name='conditionValue']").replaceWith($value);
  788. }
  789. /**选择脚本
  790. * @param obj
  791. * @returns
  792. */
  793. function selectScript(obj) {
  794. var linkObj=$(obj);
  795. var txtObj=linkObj.next()[0];
  796. ScriptDialog({
  797. callback : function(script) {
  798. $.insertText(txtObj,script);
  799. }
  800. });
  801. };