rpt_tpl_main.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669
  1. 'use strict'
  2. let rptTplObj = {
  3. iniPage: function() {
  4. zTreeOprObj.iniEngineerIdList();
  5. zTreeOprObj.getCompilationList();
  6. // zTreeOprObj.getReportTemplateTree(RT.GrpType.CONSTRUCT);
  7. bandTreeOprObj.getReportTplCfg();
  8. selectableFiledTreeOprObj.iniTree();
  9. preview_util.drawBorder($("#tplCanvas")[0]);
  10. }
  11. }
  12. let zTreeOprObj = {
  13. treeObj: null,
  14. currentNode: null,
  15. iniEngineerIdList: function() {
  16. for (let item of engineeringList) {
  17. $("#engineerIds").append("<option value='" + item.value + "'>" + item.name + "</option>");
  18. }
  19. },
  20. getCompilationList: function(){
  21. let me = zTreeOprObj, params = {};
  22. CommonAjax.postEx("report_tpl_api/getCompilationList", params, 20000, true, function(result){
  23. //console.log(result);
  24. for (let item of result) {
  25. if (item.is_release) {
  26. $("#compilations").append("<option value='" + item._id + "'>" + item.name + "</option>");
  27. }
  28. }
  29. me.getReportTemplateTree($("#compilations").get(0));
  30. }, null, null
  31. );
  32. },
  33. refreshNodes: function() {
  34. let me = this;
  35. let private_setupIsParent = function(node){
  36. if (node.nodeType === RT.NodeType.NODE || node.level === 0) {
  37. node.isParent = true;
  38. } else {
  39. node.isParent = false;
  40. }
  41. if (node.items && node.items.length) {
  42. for (let i = 0; i < node.items.length; i++) {
  43. private_setupIsParent(node.items[i]);
  44. }
  45. }
  46. };
  47. let topNodes = me.treeObj.getNodes();
  48. for (let i = 0; i < topNodes.length; i++) {
  49. private_setupIsParent(topNodes[i]);
  50. }
  51. me.treeObj.refresh();
  52. },
  53. updateNodes: function(nodes){
  54. if (nodes && nodes.length > 0) {
  55. let me = this;
  56. for (let i = 0; i < nodes.length; i++) {
  57. if (nodes[i].__v != null) node.__v = nodes[i].__v + 1
  58. else nodes[i].__v = 0;
  59. }
  60. let params = {};
  61. params.nodes = nodes;
  62. CommonAjax.postEx("report_tpl_api/updateRptTplNodes", params, 5000, true, null, null, null);
  63. }
  64. },
  65. removeTreeRootNode: function(rawNode, isSync, callback, failCallback) {
  66. let params = {};
  67. params.compilationId = rawNode.compilationId;
  68. params.engineerId = rawNode.engineerId;
  69. params.userId = rawNode.userId;
  70. params.isPhysically = true;
  71. CommonAjax.postEx("report_tpl_api/removeTreeRootNode", params, 5000, isSync, callback, failCallback, null);
  72. },
  73. updateTreeRootNode: function(rawNode, isSync, callback, failCallback) {
  74. let params = {};
  75. params.doc = rawNode;
  76. CommonAjax.postEx("report_tpl_api/updateTreeRootNode", params, 5000, isSync, callback, failCallback, null);
  77. },
  78. createIniNode: function() {
  79. let rst = {
  80. nodeType: RT.NodeType.TEMPLATE,
  81. refId: -1,
  82. name: "",
  83. items: null
  84. };
  85. return rst;
  86. },
  87. buildRootNodeDoc: function(topNode, excludeNode) {
  88. let me = this, rst = null;
  89. let private_build_items = function (items) {
  90. let itemRst = null;
  91. if (items && items.length > 0) {
  92. itemRst = [];
  93. for (let item of items) {
  94. if (item !== excludeNode) {
  95. let ir = {};
  96. ir.nodeType = item.nodeType;
  97. ir.refId = item.refId;
  98. ir.name = item.name;
  99. ir.items = private_build_items(item.items);
  100. itemRst.push(ir);
  101. }
  102. }
  103. }
  104. return itemRst;
  105. }
  106. if (topNode) {
  107. rst = {
  108. compilationId: topNode.compilationId,
  109. engineerId: topNode.engineerId,
  110. userId: topNode.userId,
  111. properties: topNode.properties,
  112. released: topNode.released,
  113. isDeleted: topNode.isDeleted,
  114. items: private_build_items(topNode.items),
  115. name: topNode.name
  116. };
  117. }
  118. return rst;
  119. },
  120. createNodeFromZTreeNode: function(treeNode) {
  121. let rst = {};
  122. rst.ID = treeNode.ID;
  123. rst.ParentID = treeNode.ParentID;
  124. rst.NextSiblingID = treeNode.NextSiblingID;
  125. rst.grpType = treeNode.grpType;
  126. rst.nodeType = treeNode.nodeType;
  127. rst.tplType = treeNode.tplType;
  128. rst.userId = treeNode.userId;
  129. rst.refId = treeNode.refId;
  130. rst.name = treeNode.name;
  131. return rst;
  132. },
  133. //*
  134. addHoverDom: function(treeId, treeNode) {
  135. let me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
  136. if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || treeNode.nodeType == RT.NodeType.TEMPLATE) return;
  137. let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
  138. sObj.after(addStr);
  139. let btn = $("#addBtn_"+treeNode.tId);
  140. if (btn) btn.bind("click", function(){
  141. let rawNode = me.createIniNode();
  142. rawNode.nodeType = RT.NodeType.NODE;
  143. rawNode.name = "新增子节点";
  144. let newNodes = [], isSilent = false;
  145. newNodes.push(rawNode);
  146. if (me.treeObj) {
  147. let insertIdx = -1;
  148. if (treeNode.items.length > 0) {
  149. for (let i = treeNode.items.length - 1; i >= 0; i--) {
  150. if (treeNode.items[i].nodeType === RT.NodeType.NODE) {
  151. insertIdx = i + 1;
  152. break;
  153. } else {
  154. insertIdx = i;
  155. }
  156. }
  157. }
  158. me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent);
  159. let tn = me.getTopNodeByCurrentNode(treeNode);
  160. let newTopNode = me.buildRootNodeDoc(tn);
  161. me.updateTreeRootNode(newTopNode, true, function(rst){
  162. if (rst) {
  163. //
  164. } else {
  165. alert("新增节点失败!");
  166. }
  167. me.refreshNodes();
  168. }, null);
  169. }
  170. });
  171. },
  172. removeHoverDom: function(treeId, treeNode) {
  173. $("#addBtn_"+treeNode.tId).unbind().remove();
  174. },
  175. addNewNodeEx: function(rawNode, callback, failCallback) {
  176. let params = {};
  177. params.doc = rawNode;
  178. CommonAjax.postEx("report_tpl_api/createTreeRootNode", params, 5000, true, callback, failCallback, null);
  179. },
  180. moveUpNode: function() {
  181. let me = this;
  182. if (me.currentNode && me.currentNode.getPreNode() && me.currentNode.level > 0) {
  183. let preNode = me.currentNode.getPreNode();
  184. if (preNode.nodeType === me.currentNode.nodeType) {
  185. me.treeObj.moveNode(preNode, me.currentNode, "prev", true);
  186. //then update the db
  187. let topPNode = me.getTopNodeByCurrentNode(preNode);
  188. me.updateTreeRootNode(topPNode, true, function(rst){
  189. if (!(rst)) {
  190. alert("移动请求失败!");
  191. }
  192. });
  193. }
  194. }
  195. },
  196. moveDownNode: function() {
  197. let me = this;
  198. if (me.currentNode && me.currentNode.getNextNode() && me.currentNode.level > 0) {
  199. let nextNode = me.currentNode.getNextNode();
  200. if (nextNode.nodeType === me.currentNode.nodeType) {
  201. me.treeObj.moveNode(nextNode, me.currentNode, "next", true);
  202. //then update the db
  203. let topPNode = me.getTopNodeByCurrentNode(nextNode);
  204. me.updateTreeRootNode(topPNode, true, function(rst){
  205. if (!(rst)) {
  206. alert("移动请求失败!");
  207. }
  208. });
  209. }
  210. }
  211. },
  212. getReportTemplateTree: function(compilationSelect) {
  213. let me = zTreeOprObj, params = {};
  214. params.compilationId = compilationSelect.value;
  215. params.userId = (userAccount === 'admin')?(parseInt(-100)):parseInt(userID);
  216. let allEngIds = [];
  217. for (let item of engineeringList) {
  218. allEngIds.push(item.value);
  219. }
  220. params.engineerId = allEngIds;
  221. CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
  222. result.sort(function(item1, item2){
  223. let rst = 0;
  224. if (item1.userId < item2.userId) {
  225. rst = 1
  226. } else if (item1.userId > item2.userId) {
  227. rst = -1;
  228. } else {
  229. rst = (item1.engineerId > item2.engineerId)?1:((item1.engineerId < item2.engineerId)?-1:0);
  230. }
  231. return rst;
  232. });
  233. zTreeHelper.createTreeDirectly(result, setting, "rptTplTree", me);
  234. me.refreshNodes();
  235. }, null, null);
  236. },
  237. addTplNode: function (){
  238. let me = this;
  239. if (me.currentNode && me.currentNode.nodeType === RT.NodeType.NODE || me.currentNode.level === 0) {
  240. let rawNode = me.createIniNode();
  241. rawNode.nodeType = RT.NodeType.TEMPLATE;
  242. rawNode.name = "新增报表模板";
  243. let newNodes = [], isSilent = false;
  244. newNodes.push(rawNode);
  245. if (me.treeObj) {
  246. me.treeObj.addNodes(me.currentNode, -1, newNodes, isSilent);
  247. let rawNode = me.buildRootNodeDoc(me.currentNode);
  248. me.updateTreeRootNode(rawNode, true, function(rst){
  249. if (rst) {
  250. //
  251. } else {
  252. //
  253. }
  254. me.refreshNodes();
  255. }, null);
  256. }
  257. }
  258. },
  259. addRootNode: function() {
  260. let me = this, rawNode = me.createIniRootNode();
  261. if (!me.chkIfDupRootNode(rawNode)) {
  262. me.addNewNodeEx(rawNode, function(rst){
  263. if (rst) {
  264. let newNodes = [], isSilent = false;
  265. rawNode.isParent = true;
  266. newNodes.push(rawNode);
  267. if (me.treeObj) {
  268. let insertIdx = -1;
  269. let nodes = me.treeObj.getNodes();
  270. for (let i = 0; i < nodes.length; i++) {
  271. if (nodes[i].compilationId === rawNode.compilationId) {
  272. if (nodes[i].engineerId > rawNode.engineerId) {
  273. insertIdx = i;
  274. break;
  275. }
  276. }
  277. }
  278. me.treeObj.addNodes(null, insertIdx, newNodes, isSilent);
  279. } else {
  280. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  281. }
  282. } else {
  283. alert("创建失败,请确认是否有重复类型跟节点!")
  284. }
  285. }, null);
  286. } else {
  287. alert("有重复编办及工程类型!");
  288. }
  289. },
  290. chkIfDupRootNode: function (rawNode) {
  291. let me = this, rst = false;
  292. if (me.treeObj) {
  293. let nodes = me.treeObj.getNodes();
  294. for (let node of nodes) {
  295. if (node.compilationId === rawNode.compilationId && node.engineerId === rawNode.engineerId && node.userId === rawNode.userId) {
  296. rst = true;
  297. break;
  298. }
  299. }
  300. }
  301. return rst;
  302. },
  303. createIniRootNode: function() {
  304. let rst = {
  305. compilationId: $("#compilations").get(0).selectedOptions[0].value,
  306. engineerId: parseInt($("#engineerIds").get(0).selectedOptions[0].value),
  307. userId: (userAccount === 'admin')?(-100):userID,
  308. properties: [],
  309. released: true,
  310. isDeleted: false,
  311. items: [],
  312. name: $("#compilations").get(0).selectedOptions[0].innerText + $("#engineerIds").get(0).selectedOptions[0].innerText
  313. };
  314. return rst;
  315. },
  316. onBeforeRemove: function(treeId, treeNode){
  317. let canRemove = false;
  318. if (!(treeNode.items) || treeNode.items.length < 1) {
  319. canRemove = true;
  320. } else {
  321. alert("含有子项,不能删除!");
  322. }
  323. return canRemove;
  324. },
  325. onRemove: function(e, treeId, treeNode){
  326. let me = zTreeOprObj, topPNode = me.getTopNodeByCurrentNode(treeNode);
  327. let rawNode = me.buildRootNodeDoc(topPNode, treeNode);
  328. if (treeNode.level === 0) rawNode.isDeleted = true;
  329. me.removeTreeRootNode(rawNode, true, function(rst){
  330. if (!(rst)) {
  331. alert("删除请求失败!");
  332. }
  333. });
  334. me.refreshNodes();
  335. },
  336. beforeRename: function(treeId, treeNode, newName, isCancel) {
  337. if (newName.length === 0) {
  338. return false;
  339. }
  340. return true;
  341. },
  342. onRename : function(e, treeId, treeNode, isCancel) {
  343. if (!isCancel) {
  344. let me = zTreeOprObj, topPNode = me.getTopNodeByCurrentNode(treeNode);
  345. let rawNode = me.buildRootNodeDoc(topPNode);
  346. me.updateTreeRootNode(rawNode, true, function(rst){
  347. if (rst) {
  348. //
  349. } else {
  350. alert('修改名称请求失败!');
  351. }
  352. });
  353. }
  354. },
  355. /*/
  356. addHoverDom: function(treeId, treeNode) {
  357. let me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
  358. if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || treeNode.nodeType == RT.NodeType.TEMPLATE) return;
  359. let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
  360. sObj.after(addStr);
  361. let btn = $("#addBtn_"+treeNode.tId);
  362. if (btn) btn.bind("click", function(){
  363. let rawNode = me.createIniRootNode(), lastNodeId = -1, insertIdx = -1, lastNode = null;
  364. rawNode.ParentID = treeNode.ID;
  365. rawNode.name = "新增子节点";
  366. if (treeNode.items.length > 0) {
  367. for (let i = treeNode.items.length - 1; i >= 0; i--) {
  368. if (treeNode.items[i].nodeType == RT.NodeType.NODE) {
  369. lastNodeId = treeNode.items[i].ID;
  370. lastNode = treeNode.items[i];
  371. rawNode.NextSiblingID = treeNode.items[i].NextSiblingID;
  372. insertIdx = i + 1;
  373. break;
  374. } else {
  375. rawNode.NextSiblingID = treeNode.items[i].ID;
  376. insertIdx = i;
  377. }
  378. }
  379. }
  380. zTreeOprObj.addNewNode(rawNode, lastNodeId, function(rst){
  381. let newNodes = [], isSilent = false;
  382. if (lastNode) {
  383. lastNode.NextSiblingID = rst.ID;
  384. }
  385. rawNode.ID = rst.ID;
  386. rawNode.NextSiblingID = rst.NextSiblingID;
  387. rawNode.isParent = true;
  388. rawNode.items = [];
  389. newNodes.push(rawNode);
  390. treeNode.isParent = true;
  391. if (me.treeObj) {
  392. me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent);
  393. } else {
  394. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  395. }
  396. }, null);
  397. });
  398. },
  399. removeHoverDom: function(treeId, treeNode) {
  400. $("#addBtn_"+treeNode.tId).unbind().remove();
  401. },
  402. addNewNode: function(rawNode, lastNodeId, callback, failCallback) {
  403. let params = {};
  404. params.lastNodeId = lastNodeId;
  405. params.rawNodeData = rawNode;
  406. CommonAjax.postEx("report_tpl_api/createTplTreeNode", params, 5000, true, callback, failCallback, null);
  407. },
  408. moveUpNode: function() {
  409. let me = this, nodes = [];
  410. if (me.currentNode && me.currentNode.getPreNode()) {
  411. let preNode = me.currentNode.getPreNode(), pre_preNode = preNode.getPreNode();
  412. me.treeObj.moveNode(preNode, me.currentNode, "prev", true);
  413. //then update the db
  414. if (pre_preNode) {
  415. pre_preNode.NextSiblingID = me.currentNode.ID;
  416. nodes.push(me.createNodeFromZTreeNode(pre_preNode));
  417. }
  418. preNode.NextSiblingID = me.currentNode.NextSiblingID;
  419. me.currentNode.NextSiblingID = preNode.ID;
  420. nodes.push(me.createNodeFromZTreeNode(me.currentNode));
  421. nodes.push(me.createNodeFromZTreeNode(preNode));
  422. me.updateNodes(nodes);
  423. }
  424. },
  425. moveDownNode: function() {
  426. let me = this, nodes = [];
  427. if (me.currentNode && me.currentNode.getNextNode()) {
  428. let preNode = me.currentNode.getPreNode(), nextNode = me.currentNode.getNextNode();
  429. me.treeObj.moveNode(nextNode, me.currentNode, "next", true);
  430. //then update the db
  431. if (preNode) {
  432. preNode.NextSiblingID = nextNode.ID;
  433. nodes.push(me.createNodeFromZTreeNode(preNode));
  434. }
  435. me.currentNode.NextSiblingID = nextNode.NextSiblingID;
  436. nextNode.NextSiblingID = me.currentNode.ID;
  437. nodes.push(me.createNodeFromZTreeNode(me.currentNode));
  438. nodes.push(me.createNodeFromZTreeNode(nextNode));
  439. me.updateNodes(nodes);
  440. }
  441. },
  442. getReportTemplateTree: function(grpType) {
  443. let me = zTreeOprObj, params = {};
  444. params.grpType = grpType;
  445. params.userId = (userAccount === 'admin')?('-100'):userID;
  446. params.tplType = RT.TplType.ALL;
  447. CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
  448. zTreeHelper.createTree(result, setting, "rptTplTree", me);
  449. me.refreshNodes();
  450. }, null, null
  451. );
  452. },
  453. addTplNode: function (){
  454. let me = this;
  455. if (me.currentNode && me.currentNode.nodeType === RT.NodeType.NODE) {
  456. let rawNode = me.createIniRootNode(), lastNodeId = -1, lastNode = null;
  457. rawNode.nodeType = RT.NodeType.TEMPLATE;
  458. rawNode.ParentID = me.currentNode.ID;
  459. rawNode.name = "新增报表模板";
  460. if (me.treeObj) {
  461. let nodes = me.currentNode.items;
  462. if (nodes.length > 0) {
  463. lastNodeId = nodes[nodes.length - 1].ID;
  464. lastNode = nodes[nodes.length - 1];
  465. }
  466. me.addNewNode(rawNode, lastNodeId, function(rst){
  467. let newNodes = [], isSilent = false;
  468. if (lastNode) {
  469. lastNode.NextSiblingID = rst.ID;
  470. }
  471. rawNode.ID = rst.ID;
  472. rawNode.isParent = false;
  473. rawNode.items = [];
  474. newNodes.push(rawNode);
  475. if (me.treeObj) {
  476. me.treeObj.addNodes(me.currentNode, -1, newNodes, isSilent);
  477. } else {
  478. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  479. }
  480. }, null);
  481. }
  482. }
  483. },
  484. addRootNode: function() {
  485. let me = this, rawNode = me.createIniRootNode(), lastNodeId = -1, lastNode = null;
  486. if (me.treeObj) {
  487. let rootNodes = me.treeObj.getNodes();
  488. if (rootNodes.length > 0) {
  489. lastNodeId = rootNodes[rootNodes.length - 1].ID;
  490. lastNode = rootNodes[rootNodes.length - 1];
  491. }
  492. me.addNewNode(rawNode, lastNodeId, function(rst){
  493. let newNodes = [], isSilent = false;
  494. if (lastNode) {
  495. lastNode.NextSiblingID = rst.ID;
  496. }
  497. rawNode.ID = rst.ID;
  498. rawNode.isParent = true;
  499. rawNode.items = [];
  500. newNodes.push(rawNode);
  501. if (me.treeObj) {
  502. me.treeObj.addNodes(null, -1, newNodes, isSilent);
  503. } else {
  504. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  505. }
  506. }, null);
  507. }
  508. },
  509. createIniRootNode: function() {
  510. let rst = {
  511. ID: -1,
  512. ParentID: -1,
  513. NextSiblingID: -1,
  514. grpType: RT.GrpType.CONSTRUCT,
  515. nodeType: RT.NodeType.NODE,
  516. tplType: RT.TplType.ALL,
  517. userId: (userAccount === 'admin')?('-100'):userID,
  518. refId: -1,
  519. name: '新增节点'
  520. };
  521. return rst;
  522. },
  523. onBeforeRemove: function(treeId, treeNode){
  524. let nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1, canRemove = false, params = {};
  525. if (preNode) {
  526. preNodeId = preNode.ID;
  527. }
  528. let private_fetchAllSubItems = function(pItem){
  529. nodeIds.push(pItem.ID);
  530. if (pItem.items && pItem.items.length > 0) {
  531. for (let i = 0; i < pItem.items.length; i++) {
  532. private_fetchAllSubItems(pItem.items[i]);
  533. }
  534. }
  535. };
  536. nodeIds.push(treeNode.ID);
  537. for (let i = 0; i < treeNode.items.length; i++) {
  538. private_fetchAllSubItems(treeNode.items[i]);
  539. }
  540. params.nodeIds = nodeIds;
  541. params.preNodeId = preNodeId;
  542. params.preNodeNextId = treeNode.NextSiblingID;
  543. CommonAjax.postEx("report_tpl_api/deleteRptTplNodes", params, 5000, false, function(data){
  544. canRemove = true;
  545. }, null, null);
  546. return canRemove;
  547. },
  548. onRemove: function(e, treeId, treeNode){
  549. let me = zTreeOprObj, pNode = me.treeObj.getNodeByTId(treeNode.parentTId);
  550. if (pNode && pNode.items && pNode.items.length === 0) {
  551. if (pNode.nodeType === RT.NodeType.NODE) pNode.isParent = true
  552. else pNode.isParent = false;
  553. me.treeObj.refresh();
  554. }
  555. },
  556. beforeRename: function(treeId, treeNode, newName, isCancel) {
  557. if (newName.length === 0) {
  558. return false;
  559. }
  560. return true;
  561. },
  562. onRename : function(e, treeId, treeNode, isCancel) {
  563. let me = zTreeOprObj, nodes = [];
  564. nodes.push(me.createNodeFromZTreeNode(treeNode));
  565. me.updateNodes(nodes);
  566. if (treeNode.nodeType === RT.NodeType.TEMPLATE && treeNode.refId >= 0) {
  567. if (treeNode.rptTpl !== null) {
  568. treeNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = treeNode.name;
  569. $("#rptTplName")[0].value = treeNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME];
  570. } else {
  571. me.onClick(e, treeId, treeNode);
  572. }
  573. }
  574. },
  575. //*/
  576. onClick: function(event,treeId,treeNode) {
  577. let me = zTreeOprObj;
  578. me.currentNode = treeNode;
  579. bandTreeOprObj.currentNode = null;
  580. if (treeNode.nodeType === RT.NodeType.NODE) {
  581. $("#rpt_tpl_display_label")[0].innerText = "...";
  582. } else if (treeNode.nodeType === RT.NodeType.TEMPLATE) {
  583. let showText = treeNode.name, parentNode = treeNode.getParentNode();
  584. while (parentNode !== null) {
  585. showText = parentNode.name + ' > ' + showText;
  586. parentNode = parentNode.getParentNode();
  587. }
  588. $("#rpt_tpl_display_label")[0].innerText = showText;
  589. if (treeNode.refId < 0) {
  590. //创建新报表模板
  591. $('#rptTypeSelectionModal').modal('show');
  592. } else {
  593. //显示报表模板
  594. me.chkAndRreshRefTpl();
  595. }
  596. }
  597. },
  598. createNewTpl: function () {
  599. let me = zTreeOprObj, params = {};
  600. if (me.currentNode && me.currentNode.nodeType === RT.NodeType.TEMPLATE) {
  601. params.treeNodeId = me.currentNode.ID;
  602. let rptTypeId = common_rpt_type_ids.flow;
  603. if ($("#crossTypeOpt")[0].checked) rptTypeId = common_rpt_type_ids.cross;
  604. if ($("#billTypeOpt")[0].checked) rptTypeId = common_rpt_type_ids.bill;
  605. params.rptDftTplId = rptTypeId;
  606. CommonAjax.postEx("report_tpl_api/createDftRptTpl", params, 20000, true, function(result){
  607. me.currentNode.rptTpl = result;
  608. }, null, null
  609. );
  610. }
  611. },
  612. chkAndRreshRefTpl: function() {
  613. let me = zTreeOprObj, params = {};
  614. if (me.currentNode && me.currentNode.nodeType === RT.NodeType.TEMPLATE && me.currentNode.refId > 0) {
  615. if (!(me.currentNode.rptTpl)) {
  616. params.rptTplId = me.currentNode.refId;
  617. CommonAjax.postEx("report_tpl_api/getRefRptTpl", params, 20000, true, function(result){
  618. me.currentNode.rptTpl = result;
  619. me.currentNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = me.currentNode.name;
  620. tplHelper.refreshTplView(me.currentNode.rptTpl);
  621. }, null, null
  622. );
  623. } else {
  624. me.currentNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = me.currentNode.name;
  625. tplHelper.refreshTplView(me.currentNode.rptTpl);
  626. }
  627. }
  628. },
  629. getRefTpl: function() {
  630. let me = zTreeOprObj, rst = null;
  631. if (me.currentNode && me.currentNode.nodeType === RT.NodeType.TEMPLATE && me.currentNode.refId > 0) {
  632. rst = me.currentNode.rptTpl
  633. }
  634. return rst;
  635. },
  636. extractMainInfo: function (rptTpl) {
  637. //模板信息
  638. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = $("#rptTplName")[0].value;
  639. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = JV.PAGES_SIZE_STR[$("#rptTplPageSize")[0].selectedIndex];
  640. if ($("#rptTplPageOrientation")[0].selectedIndex === 1) {
  641. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = JV.ORIENTATION_PORTRAIT;
  642. } else {
  643. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = JV.ORIENTATION_LANDSCAPE;
  644. }
  645. if (rptTpl[JV.NODE_FLOW_INFO]) {
  646. rptTpl[JV.NODE_FLOW_INFO][JV.PROP_MULTI_COLUMN] = parseInt($("#rptTplMultiCols")[0].value);
  647. }
  648. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_LEFT] = $("#rptTplMarginLeft")[0].value;
  649. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_RIGHT] = $("#rptTplMarginRight")[0].value;
  650. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_TOP] = $("#rptTplMarginTop")[0].value;
  651. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_BOTTOM] = $("#rptTplMarginBottom")[0].value;
  652. },
  653. getTopNodeByCurrentNode: function (currentNode) {
  654. let topPNode = currentNode, pNode = currentNode.getParentNode();
  655. while (pNode !== null) {
  656. topPNode = pNode;
  657. pNode = pNode.getParentNode();
  658. }
  659. return topPNode;
  660. }
  661. };