rpt_tpl_cfg_helper.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. /**
  2. * Created by Tony on 2017/12/8.
  3. */
  4. let rpt_tpl_cfg_helper = {
  5. reportCfg: null,
  6. getReportTplCfg: function() {
  7. let me = this, params = {};
  8. params.userId = userID;
  9. CommonAjax.postEx("report_tpl_api/getUserRptCfg", params, 20000, true, function(result){
  10. me.reportCfg = result;
  11. me.refreshRptCfgs();
  12. }, null, null
  13. );
  14. },
  15. refreshRptCfgs: function () {
  16. let me = this;
  17. if (me.reportCfg) {
  18. me.reportCfg.borderArr = [];
  19. for (let style of me.reportCfg.styles) {
  20. me.reportCfg.borderArr.push(style.ID);
  21. $("#borderStyles").append("<option value='" + style.ID + "'>" + style.CfgDispName + "</option>");
  22. $("#elementBorders").append("<option value='" + style.ID + "'>" + style.CfgDispName + "</option>");
  23. }
  24. me.reportCfg.fontArr = [];
  25. for (let font of me.reportCfg.fonts) {
  26. if (font.CfgDispName) {
  27. me.reportCfg.fontArr.push(font.ID);
  28. $("#elementFonts").append("<option value='" + font.ID + "'>" + font.CfgDispName + "</option>");
  29. $("#visElementFonts").append("<option value='" + font.ID + "'>" + font.CfgDispName + "</option>");
  30. } else {
  31. // me.reportCfg.fontArr.push("dummy font");
  32. }
  33. }
  34. me.reportCfg.fontArr.push('自定义');
  35. $("#elementFonts").append("<option value='自定义'>自定义</option>");
  36. $("#visElementFonts").append("<option value='自定义'>自定义</option>");
  37. me.reportCfg.controlArr = [];
  38. for (let control of me.reportCfg.ctrls) {
  39. if (control.CfgDispName) {
  40. me.reportCfg.controlArr.push(control.ID);
  41. $("#elementControls").append("<option value='" + control.ID + "'>" + control.CfgDispName + "</option>");
  42. } else {
  43. me.reportCfg.controlArr.push("dummy control");
  44. }
  45. }
  46. }
  47. let pf = $("#pageFrequency");
  48. pf.append("<option value='" + JV.PAGE_STATUS[0] + "'>每页</option>");
  49. pf.append("<option value='" + JV.PAGE_STATUS[1] + "'>首页</option>");
  50. pf.append("<option value='" + JV.PAGE_STATUS[2] + "'>尾页</option>");
  51. pf.append("<option value='" + JV.PAGE_STATUS[3] + "'>章首页</option>");
  52. pf.append("<option value='" + JV.PAGE_STATUS[4] + "'>章尾页</option>");
  53. pf.append("<option value='" + JV.PAGE_STATUS[5] + "'>分组</option>");
  54. pf.append("<option value='" + JV.PAGE_STATUS[6] + "'>交叉行尾页</option>");
  55. pf.append("<option value='" + JV.PAGE_STATUS[7] + "'>交叉列尾页</option>");
  56. let ba = $("#bandAlignment");
  57. ba.append("<option value='" + JV.LAYOUT[0] + "'>上</option>");
  58. ba.append("<option value='" + JV.LAYOUT[1] + "'>下</option>");
  59. ba.append("<option value='" + JV.LAYOUT[2] + "'>左</option>");
  60. ba.append("<option value='" + JV.LAYOUT[3] + "'>右</option>");
  61. ba.append("<option value='" + JV.LAYOUT[4] + "'>填充</option>");
  62. let ha = $("#elementAlignmentHorizon");
  63. ha.append("<option value='" + JV.OUTPUT_ALIGN.H[0] + "'>左</option>");
  64. ha.append("<option value='" + JV.OUTPUT_ALIGN.H[1] + "'>中</option>");
  65. ha.append("<option value='" + JV.OUTPUT_ALIGN.H[2] + "'>右</option>");
  66. let va = $("#elementAlignmentVertical");
  67. va.append("<option value='" + JV.OUTPUT_ALIGN.V[0] + "'>上</option>");
  68. va.append("<option value='" + JV.OUTPUT_ALIGN.V[1] + "'>中</option>");
  69. va.append("<option value='" + JV.OUTPUT_ALIGN.V[2] + "'>下</option>");
  70. },
  71. checkAndSetSelectedNodeCfg: function (treeNode) {
  72. let me = rpt_tpl_cfg_helper;
  73. if (treeNode[JV.PROP_AREA]) {
  74. $("#element_hidden")[0].style.display = "";
  75. $("#element_font")[0].style.display = "";
  76. $("#element_border")[0].style.display = "";
  77. $("#element_control")[0].style.display = "";
  78. $("#element_area_1")[0].style.display = "";
  79. $("#element_visual_div1")[0].style.display = "none";
  80. $("#element_visual_div2")[0].style.display = "none";
  81. $("#element_visual_div3")[0].style.display = "none";
  82. // $("#element_area_2")[0].style.display = "";
  83. if (treeNode[JV.PROP_FIELD_ID] || treeNode[JV.PROP_PARAM_ID]) {
  84. $("#element_pre_suff")[0].style.display = "";
  85. if (treeNode[JV.PROP_PREFIX]) {
  86. $("#elePrefix").get(0).value = treeNode[JV.PROP_PREFIX];
  87. } else {
  88. $("#elePrefix").get(0).value = "";
  89. }
  90. if (treeNode[JV.PROP_SUFFIX]) {
  91. $("#eleSuffix").get(0).value = treeNode[JV.PROP_SUFFIX];
  92. } else {
  93. $("#eleSuffix").get(0).value = "";
  94. }
  95. if (treeNode[JV.PROP_FORMAT]) {
  96. $("#eleFormat").get(0).value = treeNode[JV.PROP_FORMAT];
  97. } else {
  98. $("#eleFormat").get(0).value = "";
  99. }
  100. if (treeNode[JV.PROP_DFT_VALUE]) {
  101. $("#eleDftValue").get(0).value = treeNode[JV.PROP_DFT_VALUE];
  102. } else {
  103. $("#eleDftValue").get(0).value = "";
  104. }
  105. } else {
  106. $("#element_pre_suff")[0].style.display = "none";
  107. $("#element_hidden")[0].style.display = "none";
  108. }
  109. //setup auto height
  110. if (treeNode[JV.PROP_IS_AUTO_HEIGHT]) {
  111. $("#eleAutoHeight").get(0).checked = true;
  112. } else {
  113. $("#eleAutoHeight").get(0).checked = false;
  114. }
  115. //setup hidden
  116. if (treeNode[JV.PROP_HIDDEN]) {
  117. $("#eleFieldHidden").get(0).checked = true;
  118. } else {
  119. $("#eleFieldHidden").get(0).checked = false;
  120. }
  121. //setup cross-row serial
  122. if (treeNode[JV.PROP_IS_SERIAL]) {
  123. $("#eleFieldSerial").get(0).checked = true;
  124. } else {
  125. $("#eleFieldSerial").get(0).checked = false;
  126. }
  127. //setup font
  128. let fontDom = $("#elementFonts").get(0);
  129. fontDom.removeAttribute("disabled");
  130. let fontAttr = treeNode[JV.PROP_FONT];
  131. if (typeof treeNode[JV.PROP_FONT] !== "string") {
  132. fontAttr = "自定义";
  133. }
  134. let idx = me.reportCfg.fontArr.indexOf(fontAttr);
  135. fontDom.selectedIndex = idx;
  136. me.fontChange(fontDom);
  137. //setup border
  138. let borderDom = $("#elementBorders").get(0);
  139. let borderAttr = treeNode[JV.PROP_STYLE];
  140. idx = me.reportCfg.borderArr.indexOf(borderAttr);
  141. borderDom.selectedIndex = idx;
  142. me.borderChange(borderDom);
  143. //setup control
  144. let ctrlDom = $("#elementControls").get(0);
  145. let ctrlAttr = treeNode[JV.PROP_CONTROL];
  146. idx = me.reportCfg.controlArr.indexOf(ctrlAttr);
  147. ctrlDom.selectedIndex = idx;
  148. me.controlChange(ctrlDom);
  149. //setup area
  150. me.private_setup_area(treeNode);
  151. } else {
  152. $("#elementFonts").get(0).disabled = "disabled" ;
  153. $("#element_hidden")[0].style.display = "none";
  154. $("#element_font")[0].style.display = "none";
  155. $("#element_border")[0].style.display = "none";
  156. $("#element_control")[0].style.display = "none";
  157. $("#element_area_1")[0].style.display = "none";
  158. // $("#element_area_2")[0].style.display = "none";
  159. $("#element_pre_suff")[0].style.display = "none";
  160. if (treeNode[JV.PROP_NAME] === JV.NODE_FLOW_COLUMN || treeNode[JV.PROP_NAME] === JV.NODE_FLOW_CONTENT) {
  161. //一些可视化操作
  162. $("#element_visual_div1")[0].style.display = "";
  163. $("#element_visual_div2")[0].style.display = "none";
  164. $("#element_visual_div3")[0].style.display = "none";
  165. let columnParentNode = null;
  166. let contentParentNode = null;
  167. if (treeNode[JV.PROP_NAME] === JV.NODE_FLOW_CONTENT) {
  168. contentParentNode = treeNode;
  169. columnParentNode = treeNode.getPreNode();
  170. } else {
  171. columnParentNode = treeNode;
  172. contentParentNode = treeNode.getNextNode();
  173. }
  174. let rptTpl = (zTreeOprObj.currentNode)?zTreeOprObj.currentNode.rptTpl:null;
  175. fieldLocationOprObj.iniSpreadJs(columnParentNode, contentParentNode);
  176. fieldLocationOprObj.setupColumn(rptTpl, columnParentNode, contentParentNode);
  177. } else if (treeNode[JV.PROP_NAME].indexOf("统计信息") > 0) {
  178. $("#element_visual_div1")[0].style.display = "none";
  179. $("#element_visual_div2")[0].style.display = "";
  180. $("#element_visual_div3")[0].style.display = "none";
  181. let rptTpl = (zTreeOprObj.currentNode)?zTreeOprObj.currentNode.rptTpl:null;
  182. virtualSummaryOprObj.iniSpreadJs(treeNode);
  183. virtualSummaryOprObj.setupSummary(rptTpl, treeNode);
  184. } else if (treeNode[JV.PROP_NAME] === `子项`) {
  185. $("#element_visual_div1")[0].style.display = "none";
  186. $("#element_visual_div2")[0].style.display = "none";
  187. $("#element_visual_div3")[0].style.display = "";
  188. } else {
  189. $("#element_visual_div1")[0].style.display = "none";
  190. $("#element_visual_div2")[0].style.display = "none";
  191. $("#element_visual_div3")[0].style.display = "none";
  192. }
  193. }
  194. if (!zTreeOprObj.isCrossTpl()) {
  195. $("#element_hidden")[0].style.display = "none";
  196. }
  197. },
  198. hiddenChange: function (dom) {
  199. dataInfoMapTreeOprObj.currentNode[JV.PROP_HIDDEN] = dom.checked;
  200. },
  201. crossRowIsSerialChange: function (dom) {
  202. dataInfoMapTreeOprObj.currentNode[JV.PROP_IS_SERIAL] = dom.checked;
  203. },
  204. fontChange: function(dom) {
  205. let me = rpt_tpl_cfg_helper, fontAttr = dom.value;
  206. //dataInfoMapTreeOprObj.currentNode
  207. if (fontAttr === "自定义") {
  208. fontAttr = dataInfoMapTreeOprObj.currentNode[JV.PROP_FONT];
  209. if (typeof fontAttr === "string") {
  210. fontAttr = {};
  211. fontAttr[JV.FONT_PROPS[0]] = "宋体";
  212. fontAttr[JV.FONT_PROPS[1]] = 12;
  213. fontAttr[JV.FONT_PROPS[2]] = "BLACK";
  214. fontAttr[JV.FONT_PROPS[3]] = "F"; //bold
  215. fontAttr[JV.FONT_PROPS[4]] = "F"; //italic
  216. fontAttr[JV.FONT_PROPS[5]] = "F"; //underline
  217. fontAttr[JV.FONT_PROPS[6]] = "F"; //strikeout
  218. fontAttr[JV.FONT_PROPS[7]] = 0; //angle
  219. dataInfoMapTreeOprObj.currentNode[JV.PROP_FONT] = fontAttr;
  220. }
  221. } else {
  222. dataInfoMapTreeOprObj.currentNode[JV.PROP_FONT] = fontAttr;
  223. }
  224. me.private_setup_font(fontAttr);
  225. },
  226. private_setup_font: function(fontAttr) {
  227. let me = rpt_tpl_cfg_helper;
  228. if (typeof fontAttr === "string" && fontAttr !== "自定义") {
  229. $("#eleFontName").get(0).disabled = "disabled" ;
  230. $("#eleFontSize").get(0).disabled = "disabled" ;
  231. $("#eleFontBold").get(0).disabled = "disabled" ;
  232. $("#eleFontItalic").get(0).disabled = "disabled" ;
  233. $("#eleFontUnderline").get(0).disabled = "disabled" ;
  234. let idx = me.reportCfg.fontArr.indexOf(fontAttr);
  235. $("#elementFonts").get(0).selectedIndex = idx;
  236. let font = me.reportCfg.fonts[idx];
  237. $("#eleFontName").get(0).value = font.Name;
  238. $("#eleFontSize").get(0).value = parseInt(font.FontHeight);
  239. $("#eleFontBold").get(0).checked = stringUtil.convertStrToBoolean(font.FontBold);
  240. $("#eleFontItalic").get(0).checked = stringUtil.convertStrToBoolean(font.FontItalic);
  241. $("#eleFontUnderline").get(0).checked = stringUtil.convertStrToBoolean(font.FontUnderline);
  242. } else {
  243. //$("#elementFonts").get(0).selectedIndex = idx;
  244. $("#eleFontName").get(0).removeAttribute("disabled");
  245. $("#eleFontSize").get(0).removeAttribute("disabled");
  246. $("#eleFontBold").get(0).removeAttribute("disabled");
  247. $("#eleFontItalic").get(0).removeAttribute("disabled");
  248. $("#eleFontUnderline").get(0).removeAttribute("disabled");
  249. $("#eleFontName").get(0).value = fontAttr.Name;
  250. $("#eleFontSize").get(0).value = parseInt(fontAttr.FontHeight);
  251. $("#eleFontBold").get(0).checked = stringUtil.convertStrToBoolean(fontAttr.FontBold);
  252. $("#eleFontItalic").get(0).checked = stringUtil.convertStrToBoolean(fontAttr.FontItalic);
  253. $("#eleFontUnderline").get(0).checked = stringUtil.convertStrToBoolean(fontAttr.FontUnderline);
  254. }
  255. },
  256. private_setup_area: function (treeNode) {
  257. $("#elementArea_Left").get(0).value = parseFloat(treeNode[JV.PROP_AREA][JV.PROP_LEFT]);
  258. $("#elementArea_Right").get(0).value = parseFloat(treeNode[JV.PROP_AREA][JV.PROP_RIGHT]);
  259. $("#elementArea_Top").get(0).value = parseFloat(treeNode[JV.PROP_AREA][JV.PROP_TOP]);
  260. $("#elementArea_Bottom").get(0).value = parseFloat(treeNode[JV.PROP_AREA][JV.PROP_BOTTOM]);
  261. if (typeof treeNode[JV.PROP_AREA][JV.PROP_H_CALCULATION] === "string") {
  262. $("#isPercentage_Left").get(0).checked = treeNode[JV.PROP_AREA][JV.PROP_H_CALCULATION] === "percentage";
  263. $("#isPercentage_Right").get(0).checked = treeNode[JV.PROP_AREA][JV.PROP_H_CALCULATION] === "percentage";
  264. } else {
  265. $("#isPercentage_Left").get(0).checked = treeNode[JV.PROP_AREA][JV.PROP_H_CALCULATION][JV.PROP_LEFT] === "percentage";
  266. $("#isPercentage_Right").get(0).checked = treeNode[JV.PROP_AREA][JV.PROP_H_CALCULATION][JV.PROP_RIGHT] === "percentage";
  267. }
  268. if (typeof treeNode[JV.PROP_AREA][JV.PROP_V_CALCULATION] === "string") {
  269. $("#isPercentage_Top").get(0).checked = treeNode[JV.PROP_AREA][JV.PROP_V_CALCULATION] === "percentage";
  270. $("#isPercentage_Bottom").get(0).checked = treeNode[JV.PROP_AREA][JV.PROP_V_CALCULATION] === "percentage";
  271. } else {
  272. $("#isPercentage_Top").get(0).checked = treeNode[JV.PROP_AREA][JV.PROP_V_CALCULATION][JV.PROP_TOP] === "percentage";
  273. $("#isPercentage_Bottom").get(0).checked = treeNode[JV.PROP_AREA][JV.PROP_V_CALCULATION][JV.PROP_BOTTOM] === "percentage";
  274. }
  275. },
  276. fontNameChange: function(dom){
  277. let font = dataInfoMapTreeOprObj.currentNode[JV.PROP_FONT];
  278. font[JV.FONT_PROPS[0]] = dom.value;
  279. },
  280. fontSizeChange: function(dom) {
  281. let font = dataInfoMapTreeOprObj.currentNode[JV.PROP_FONT];
  282. font[JV.FONT_PROPS[1]] = dom.value;
  283. },
  284. fontBoldChange: function(dom) {
  285. let font = dataInfoMapTreeOprObj.currentNode[JV.PROP_FONT];
  286. font[JV.FONT_PROPS[3]] = dom.checked?'T':'F';
  287. },
  288. fontItalicChange: function(dom) {
  289. let font = dataInfoMapTreeOprObj.currentNode[JV.PROP_FONT];
  290. font[JV.FONT_PROPS[4]] = dom.checked?'T':'F';
  291. },
  292. fontUnderlineChange: function(dom) {
  293. let font = dataInfoMapTreeOprObj.currentNode[JV.PROP_FONT];
  294. font[JV.FONT_PROPS[5]] = dom.checked?'T':'F';
  295. },
  296. borderChange: function(dom) {
  297. if (dataInfoMapTreeOprObj.currentNode) {
  298. let me = this, borderAttr = dom.value;
  299. let idx = me.reportCfg.borderArr.indexOf(borderAttr);
  300. let border = me.reportCfg.styles[idx];
  301. dataInfoMapTreeOprObj.currentNode[JV.PROP_STYLE] = borderAttr;
  302. $("#eleBorderLeft").get(0).value = border[JV.PROP_BORDER_STYLE][JV.IDX_LEFT][JV.PROP_LINE_WEIGHT];
  303. $("#eleBorderRight").get(0).value = border[JV.PROP_BORDER_STYLE][JV.IDX_RIGHT][JV.PROP_LINE_WEIGHT];
  304. $("#eleBorderTop").get(0).value = border[JV.PROP_BORDER_STYLE][JV.IDX_TOP][JV.PROP_LINE_WEIGHT];
  305. $("#eleBorderBottom").get(0).value = border[JV.PROP_BORDER_STYLE][JV.IDX_BOTTOM][JV.PROP_LINE_WEIGHT];
  306. }
  307. },
  308. controlChange: function(dom) {
  309. if (dataInfoMapTreeOprObj.currentNode) {
  310. let me = this, ctrlAttr = dom.value;
  311. let idx = me.reportCfg.controlArr.indexOf(ctrlAttr);
  312. let ctrl = me.reportCfg.ctrls[idx];
  313. dataInfoMapTreeOprObj.currentNode[JV.PROP_CONTROL] = ctrlAttr;
  314. $("#elementAlignmentHorizon").get(0).selectedIndex = JV.OUTPUT_ALIGN.H.indexOf(ctrl[JV.CONTROL_PROPS[2]]);
  315. $("#elementAlignmentVertical").get(0).selectedIndex = JV.OUTPUT_ALIGN.V.indexOf(ctrl[JV.CONTROL_PROPS[3]]);
  316. $("#eleShrink").get(0).checked = stringUtil.convertStrToBoolean(ctrl[JV.CONTROL_PROPS[0]]);
  317. $("#eleShowZero").get(0).checked = stringUtil.convertStrToBoolean(ctrl[JV.CONTROL_PROPS[1]]);
  318. $("#eleAutoWrap").get(0).checked = stringUtil.convertStrToBoolean(ctrl[JV.CONTROL_PROPS[4]]);
  319. }
  320. },
  321. changeAlignment: function(dom, type) {
  322. let ctrl = dataInfoMapTreeOprObj.currentNode[JV.PROP_CONTROL];
  323. if (type === "horizon") {
  324. ctrl[JV.CONTROL_PROPS[2]] = JV.OUTPUT_ALIGN[dom.selectedIndex];
  325. } else {
  326. ctrl[JV.CONTROL_PROPS[3]] = JV.OUTPUT_ALIGN[dom.selectedIndex];
  327. }
  328. },
  329. changeArea: function(dom, typeStr) {
  330. if (dataInfoMapTreeOprObj.currentNode) {
  331. dataInfoMapTreeOprObj.currentNode[JV.PROP_AREA][typeStr] = dom.value;
  332. }
  333. },
  334. changeAreaCalcType: function (dom, typeStr) {
  335. if (dataInfoMapTreeOprObj.currentNode) {
  336. let otherSideStr = "", caclStr = "";
  337. switch (typeStr) {
  338. case JV.PROP_LEFT:
  339. caclStr = JV.PROP_H_CALCULATION;
  340. otherSideStr = JV.PROP_RIGHT;
  341. break;
  342. case JV.PROP_RIGHT:
  343. caclStr = JV.PROP_H_CALCULATION;
  344. otherSideStr = JV.PROP_LEFT;
  345. break;
  346. case JV.PROP_TOP:
  347. caclStr = JV.PROP_V_CALCULATION;
  348. otherSideStr = JV.PROP_BOTTOM;
  349. break;
  350. case JV.PROP_BOTTOM:
  351. caclStr = JV.PROP_V_CALCULATION;
  352. otherSideStr = JV.PROP_TOP;
  353. break;
  354. }
  355. if (typeof dataInfoMapTreeOprObj.currentNode[JV.PROP_AREA][caclStr] === "string") {
  356. let bk_type = dataInfoMapTreeOprObj.currentNode[JV.PROP_AREA][caclStr];
  357. dataInfoMapTreeOprObj.currentNode[JV.PROP_AREA][caclStr] = {};
  358. dataInfoMapTreeOprObj.currentNode[JV.PROP_AREA][caclStr][typeStr] = dom.checked?JV.CAL_TYPE[0]:JV.CAL_TYPE[1];
  359. dataInfoMapTreeOprObj.currentNode[JV.PROP_AREA][caclStr][otherSideStr] = bk_type;
  360. } else {
  361. dataInfoMapTreeOprObj.currentNode[JV.PROP_AREA][caclStr][typeStr] = dom.checked?JV.CAL_TYPE[0]:JV.CAL_TYPE[1];
  362. }
  363. }
  364. },
  365. changePreSuff: function (dom, typeStr) {
  366. if (dataInfoMapTreeOprObj.currentNode) {
  367. dataInfoMapTreeOprObj.currentNode[typeStr] = dom.value;
  368. }
  369. },
  370. changeFormat: function (dom) {
  371. if (dataInfoMapTreeOprObj.currentNode) {
  372. dataInfoMapTreeOprObj.currentNode[JV.PROP_FORMAT] = dom.value;
  373. }
  374. },
  375. changeDftValue: function (dom) {
  376. if (dataInfoMapTreeOprObj.currentNode) {
  377. dataInfoMapTreeOprObj.currentNode[JV.PROP_DFT_VALUE] = dom.value;
  378. }
  379. },
  380. changeAutoHeight: function(dom) {
  381. if (dataInfoMapTreeOprObj.currentNode) {
  382. dataInfoMapTreeOprObj.currentNode[JV.PROP_IS_AUTO_HEIGHT] = dom.checked;
  383. }
  384. }
  385. };