rpt_tpl_pre_handle.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. /**
  2. * Created by Tony on 2017/12/26.
  3. */
  4. const sort_types = ["normal", "tree", "accord_to_parent", "self_define"];
  5. const exposed_bills_properties = [
  6. {Name: "清单_ID", Title: "", Key: "ID"},
  7. {Name: "清单_所属项目ID", Title: "", Key: "projectID"},
  8. {Name: "清单_项目编码", Title: "", Key: "code"},
  9. {Name: "清单_项目名称", Title: "", Key: "name"},
  10. {Name: "清单_项目特征", Title: "", Key: "itemCharacterText"},
  11. {Name: "清单_计量单位", Title: "", Key: "unit"},
  12. {Name: "清单_工程量", Title: "", Key: "quantity"},
  13. {Name: "清单_综合单价", Title: "", Key: "unitFee"},
  14. {Name: "清单_综合合价", Title: "", Key: "totalFee"},
  15. {Name: "清单_暂估价", Title: "", Key: "tenderUnitFee"}
  16. ];
  17. const exposed_ration_properties = [
  18. {Name: "定额_工程内部ID", Title: "", Key: "ID"},
  19. {Name: "定额_所属清单ID", Title: "", Key: "billsItemID"},
  20. {Name: "定额_所属项目ID", Title: "", Key: "projectID"},
  21. {Name: "定额_编号", Title: "", Key: "code"},
  22. {Name: "定额_项目名称", Title: "", Key: "caption"},
  23. {Name: "定额_单位", Title: "", Key: "unit"},
  24. {Name: "定额_数量", Title: "", Key: "quantity"},
  25. {Name: "定额_人工费", Title: "", Key: "labour"},
  26. {Name: "定额_材料费", Title: "", Key: "material"},
  27. {Name: "定额_机械费", Title: "", Key: "machine"},
  28. {Name: "定额_机上人工费", Title: "", Key: "machineLabour"},
  29. {Name: "定额_人工费调整", Title: "", Key: "adjustLabour"},
  30. {Name: "定额_材料费调整", Title: "", Key: "'adjustMaterial'"},
  31. {Name: "定额_机械费调整", Title: "", Key: "adjustMachine"},
  32. {Name: "定额_机上人工费调整", Title: "", Key: "adjustMachineLabour"},
  33. {Name: "定额_人工价差", Title: "", Key: "labourDiff"},
  34. {Name: "定额_材料价差", Title: "", Key: "materialDiff"},
  35. {Name: "定额_机械价差", Title: "", Key: "machineDiff"},
  36. {Name: "定额_风险费用", Title: "", Key: "risk"}
  37. // {Name: "定额_管理费率", Title: "", Key: ""}
  38. ];
  39. const exposed_prj_glj_properties = [
  40. {Name: "工料机_ID", Title: "", Key: "ID"},
  41. {Name: "工料机_所属定额ID", Title: "", Key: "rationID"},
  42. {Name: "工料机_所属清单ID", Title: "", Key: "billsItemID"},
  43. {Name: "工料机_所属工程ID", Title: "", Key: "projectID"},
  44. {Name: "工料机_代码", Title: "", Key: "code"},
  45. {Name: "工料机_名称", Title: "", Key: "name"},
  46. {Name: "工料机_单位", Title: "", Key: "unit"},
  47. {Name: "工料机_数量", Title: "", Key: "quantity"}
  48. ];
  49. let preHandleObj = {
  50. treeObj: null,
  51. typeTreeObj: null,
  52. currentNode: null,
  53. iniTree: function(rptTpl) {
  54. let me = this;
  55. me.buildData(rptTpl);
  56. },
  57. buildData: function(rptTpl) {
  58. let me = this, handles = [];
  59. if (rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
  60. for (let item of rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
  61. let hd = {Name: "预处理环节"};
  62. me.private_copy_node(item, hd);
  63. me.private_set_title(hd);
  64. hd.Operations = []; //考虑到用户可能会换来换去,这样会有冗余的属性出现
  65. handles.push(hd);
  66. }
  67. }
  68. me.treeObj = $.fn.zTree.init($("#pre_handle_data_info_reversed"), preHandleSetting, handles);
  69. },
  70. buildTypeData: function () {
  71. let me = this, types = [];
  72. types.push({Name: JV.PROP_HANDLE_TYPE_SORT, Title: ""});
  73. types.push({Name: JV.PROP_HANDLE_TYPE_FILTER, Title: ""});
  74. types.push({Name: JV.PROP_HANDLE_TYPE_SUM, Title: ""});
  75. types.push({Name: JV.PROP_HANDLE_TYPE_ADJUST, Title: ""});
  76. types.push({Name: JV.PROP_HANDLE_TYPE_ADD_DUMMY, Title: ""});
  77. // types.push({Name: "纯手工填写", Title: ""});
  78. me.typeTreeObj = $.fn.zTree.init($("#pre_handle_type_reversed"), preHandleTypeSetting, types);
  79. me.setDisabledBandSelect(true);
  80. },
  81. setDisabledBandSelect: function(disabled) {
  82. let me = this;
  83. if (me.typeTreeObj) {
  84. let nodes = me.typeTreeObj.getNodes();
  85. for (let node of nodes) {
  86. me.typeTreeObj.setChkDisabled(node, disabled, true, true);
  87. }
  88. }
  89. },
  90. addNewNode: function() {
  91. let me = this, item = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": "排序", "排序方式": "normal", Operations : []};
  92. me.private_set_title(item);
  93. me.treeObj.addNodes(null, -1, [item], true);
  94. },
  95. private_copy_node: function(src, dest) {
  96. let me = this;
  97. dest[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY];
  98. dest[JV.PROP_HANDLE_TYPE] = src[JV.PROP_HANDLE_TYPE];
  99. if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_SORT) {
  100. preHandleSortObj.copyNode(src, dest);
  101. } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_FILTER) {
  102. preHandleFilterObj.copyNode(src, dest);
  103. } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_SUM) {
  104. preHandleSummaryObj.copyNode(src, dest);
  105. } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_ADJUST) {
  106. preHandleAdjustObj.copyNode(src, dest);
  107. } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_ADD_DUMMY) {
  108. preHandleAddDummyObj.copyNode(src, dest);
  109. }
  110. // if (src[JV.PROP_SORT_TYPE]) dest[JV.PROP_SORT_TYPE] = src[JV.PROP_SORT_TYPE];
  111. // if (src[JV.PROP_PARENT_DATA_KEY]) dest[JV.PROP_PARENT_DATA_KEY] = src[JV.PROP_PARENT_DATA_KEY];
  112. // if (src[JV.PROP_PARENT_CHILD_SORT_KEY]) dest[JV.PROP_PARENT_CHILD_SORT_KEY] = src[JV.PROP_PARENT_CHILD_SORT_KEY];
  113. // if (src[JV.PROP_PARENT_SORT_KEYS]) dest[JV.PROP_PARENT_SORT_KEYS] = src[JV.PROP_PARENT_SORT_KEYS];
  114. // if (src[JV.PROP_CHILD_SORT_KEYS]) dest[JV.PROP_CHILD_SORT_KEYS] = src[JV.PROP_CHILD_SORT_KEYS];
  115. // if (src[JV.PROP_OTHER_SUB_SORT]) dest[JV.PROP_OTHER_SUB_SORT] = src[JV.PROP_OTHER_SUB_SORT];
  116. // if (src[JV.PROP_FILTER_KEY]) dest[JV.PROP_FILTER_KEY] = src[JV.PROP_FILTER_KEY];
  117. // if (src[JV.PROP_FILTER_COMPARE_OBJ]) dest[JV.PROP_FILTER_COMPARE_OBJ] = src[JV.PROP_FILTER_COMPARE_OBJ];
  118. // if (src[JV.PROP_FILTER_COMPARE_OBJ_KEY]) dest[JV.PROP_FILTER_COMPARE_OBJ_KEY] = src[JV.PROP_FILTER_COMPARE_OBJ_KEY];
  119. // if (src[JV.PROP_FILTER_COMPARE_VAL]) dest[JV.PROP_FILTER_COMPARE_VAL] = src[JV.PROP_FILTER_COMPARE_VAL];
  120. // if (src[JV.PROP_FILTER_CONDITION]) dest[JV.PROP_FILTER_CONDITION] = src[JV.PROP_FILTER_CONDITION];
  121. // if (src[JV.PROP_HANDLE_TYPE_SUM]) dest[JV.PROP_HANDLE_TYPE_SUM] = src[JV.PROP_HANDLE_TYPE_SUM];
  122. // if (src[JV.PROP_HANDLE_TYPE_SORT]) dest[JV.PROP_HANDLE_TYPE_SORT] = src[JV.PROP_HANDLE_TYPE_SORT];
  123. // if (src[JV.PROP_HANDLE_TYPE_ADD_DUMMY]) dest[JV.PROP_HANDLE_TYPE_ADD_DUMMY] = src[JV.PROP_HANDLE_TYPE_ADD_DUMMY];
  124. // if (src[JV.PROP_HANDLE_TYPE_ADJUST]) dest[JV.PROP_HANDLE_TYPE_ADJUST] = src[JV.PROP_HANDLE_TYPE_ADJUST];
  125. // if (src[JV.PROP_PARENT_DATA_KEY]) dest[JV.PROP_PARENT_DATA_KEY] = src[JV.PROP_PARENT_DATA_KEY];
  126. },
  127. private_set_title: function(node) {
  128. let nameStr = node[JV.PROP_NAME], idx = nameStr.indexOf("(");
  129. if (idx >= 0) {
  130. nameStr = nameStr.slice(0, idx);
  131. }
  132. node[JV.PROP_NAME] = nameStr + "(" + node["预处理类型"] + ")";
  133. node.Title = "映射数据对象:" + node["映射数据对象"] + " | " + node["预处理类型"];
  134. },
  135. refreshByNode: function(treeNode) {
  136. let me = preHandleObj;
  137. if (me.typeTreeObj) {
  138. let nodes = me.typeTreeObj.getNodes();
  139. let typeNode = null;
  140. for (let node of nodes) {
  141. if (treeNode[JV.PROP_NAME].indexOf(node[JV.PROP_NAME]) > 0) {
  142. me.typeTreeObj.checkNode(node, true, false, false);
  143. typeNode = node;
  144. break;
  145. }
  146. }
  147. let md = $("#select_mapping_data")[0];
  148. for (let i = 0; i < md.children.length; i++) {
  149. if (treeNode[JV.PROP_DATA_KEY] === md.children[i].value) {
  150. md.selectedIndex = i;
  151. break;
  152. }
  153. }
  154. if (typeNode) {
  155. me.private_hide_all();
  156. if (typeNode[JV.PROP_NAME] === "排序") {
  157. preHandleSortObj.refresh_node();
  158. } else if (typeNode[JV.PROP_NAME] === "过滤") {
  159. preHandleFilterObj.refresh_node();
  160. } else if (typeNode[JV.PROP_NAME] === "合计") {
  161. preHandleSummaryObj.refresh_node();
  162. } else if (typeNode[JV.PROP_NAME] === "数据调整") {
  163. preHandleAdjustObj.refresh_node();
  164. } else if (typeNode[JV.PROP_NAME] === "增加Dummy数据") {
  165. preHandleAddDummyObj.refresh_node();
  166. }
  167. }
  168. }
  169. },
  170. private_hide_all: function() {
  171. $("#div_sort_type")[0].style.display = "none";
  172. $("#div_sort_type_normal")[0].style.display = "none";
  173. $("#div_filter_type")[0].style.display = "none";
  174. $("#div_summary_type")[0].style.display = "none";
  175. $("#div_adjust_type")[0].style.display = "none";
  176. $("#div_add_dummy_type")[0].style.display = "none";
  177. },
  178. onPreHandleClick: function(event,treeId,treeNode) {
  179. let me = preHandleObj;
  180. me.currentNode = treeNode;
  181. me.setDisabledBandSelect(false);
  182. me.refreshByNode(treeNode);
  183. },
  184. onTypeClick: function(event,treeId,treeNode) {
  185. //
  186. },
  187. onChangeDataMappingObj: function(dom) {
  188. //
  189. },
  190. onSortTypeChange: function(dom) {
  191. // alert(dom.selectedIndex);
  192. // alert(dom[dom.selectedIndex].value);
  193. },
  194. onBeforeDrop: function(treeId, treeNodes, targetNode, moveType){
  195. //
  196. },
  197. onBeforeRemove: function(treeId, treeNode){
  198. let rst = true;
  199. if (treeNode.isParent) {
  200. rst = false;
  201. } else {
  202. //
  203. }
  204. return rst;
  205. },
  206. extractTabFields: function (rptTpl) {
  207. //
  208. }
  209. };
  210. let preHandleSortObj = {
  211. copyNode: function (src, dest) {
  212. dest[JV.PROP_SORT_TYPE] = src[JV.PROP_SORT_TYPE];
  213. switch (sort_types.indexOf(src[JV.PROP_SORT_TYPE])) {
  214. case -1:
  215. //unknown!
  216. break;
  217. case 0 :
  218. //normal
  219. break;
  220. case 1 :
  221. //tree
  222. break;
  223. case 2 :
  224. //according to parent
  225. break;
  226. case 3 :
  227. //self define
  228. break;
  229. default:
  230. break;
  231. }
  232. },
  233. refresh_node: function () {
  234. $("#div_sort_type")[0].style.display = "";
  235. if (preHandleObj.currentNode) {
  236. let sel = $("#select_sort_types")[0];
  237. let sortTypeIdx = sort_types.indexOf(preHandleObj.currentNode[JV.PROP_SORT_TYPE]);
  238. sel.selectedIndex = sortTypeIdx;
  239. switch (sortTypeIdx) {
  240. case -1:
  241. //unknown!
  242. break;
  243. case 0 :
  244. //normal
  245. $("#div_sort_type_normal")[0].style.display = "";
  246. let sortKeyRoot = {Name: JV.PROP_SORT_KEYS, items: [], isParent: true};
  247. let sortKeys = [];
  248. // me.treeObj = $.fn.zTree.init($("#pre_handle_sort_keys_reversed"), preHandleSetting, handles);
  249. break;
  250. case 1 :
  251. //tree
  252. break;
  253. case 2 :
  254. //according to parent
  255. break;
  256. case 3 :
  257. //self define
  258. break;
  259. default:
  260. break;
  261. }
  262. }
  263. }
  264. };
  265. let preHandleFilterObj = {
  266. copyNode: function (src, dest) {
  267. //
  268. },
  269. refresh_node: function () {
  270. $("#div_filter_type")[0].style.display = "";
  271. if (preHandleObj.currentNode) {
  272. }
  273. }
  274. };
  275. let preHandleSummaryObj = {
  276. copyNode: function (src, dest) {
  277. //
  278. },
  279. refresh_node: function () {
  280. $("#div_summary_type")[0].style.display = "";
  281. if (preHandleObj.currentNode) {
  282. }
  283. }
  284. };
  285. let preHandleAdjustObj = {
  286. copyNode: function (src, dest) {
  287. //
  288. },
  289. refresh_node: function () {
  290. $("#div_adjust_type")[0].style.display = "";
  291. if (preHandleObj.currentNode) {
  292. }
  293. }
  294. };
  295. let preHandleAddDummyObj = {
  296. copyNode: function (src, dest) {
  297. //
  298. },
  299. refresh_node: function () {
  300. $("#div_add_dummy_type")[0].style.display = "";
  301. if (preHandleObj.currentNode) {
  302. }
  303. }
  304. };