rpt_tpl_pre_handle.js 64 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897
  1. /**
  2. * Created by Tony on 2017/12/26.
  3. */
  4. const sort_types = ["normal", "tree", "accord_to_parent", "self_define"];
  5. const condition_types = [
  6. "==",
  7. "===",
  8. ">",
  9. ">=",
  10. "<",
  11. "<=",
  12. "!=",
  13. "in",
  14. "not in",
  15. ];
  16. const pre_handle_data_objects = ["bills", "ration", "ration_glj", "projectGLJ"];
  17. const pre_handle_data_objects_name = [
  18. "清单",
  19. "定额",
  20. "定额人材机",
  21. "项目人材机",
  22. ];
  23. //供货方式
  24. const fixed_supply_types = [
  25. { Name: "自行采购(0)", Title: "", Value: 0 },
  26. { Name: "部分甲供(1)", Title: "", Value: 1 },
  27. { Name: "完全甲供(2)", Title: "", Value: 2 },
  28. { Name: "甲定乙供(3)", Title: "", Value: 3 },
  29. ];
  30. //三材类别
  31. const fixed_material_types = [
  32. { Name: "钢材(1)", Title: "", Value: 1 },
  33. { Name: "钢筋(2)", Title: "", Value: 2 },
  34. { Name: "木材(3)", Title: "", Value: 3 },
  35. { Name: "水泥(4)", Title: "", Value: 4 },
  36. { Name: "标准砖(5)", Title: "", Value: 5 },
  37. ];
  38. //工料机来源
  39. const fixed_glj_from_types = [
  40. { Name: "标准(std)", Title: "", Value: "std" },
  41. { Name: "补充(cpt)", Title: "", Value: "cpt" },
  42. ];
  43. // const fixed_glj_types = [
  44. // {Name: "人工(1)", Title: "", Value: 1},
  45. // {Name: "普通材料(201)", Title: "", Value: 201},
  46. // {Name: "混凝土(202)", Title: "", Value: 202},
  47. // {Name: "砂浆(203)", Title: "", Value: 203},
  48. // {Name: "配合比(204)", Title: "", Value: 204},
  49. // {Name: "商品混凝土(205)", Title: "", Value: 205},
  50. // {Name: "商品砂浆(206)", Title: "", Value: 206},
  51. // {Name: "其他材料(207)", Title: "", Value: 207},
  52. // {Name: "普通机械(301)", Title: "", Value: 301},
  53. // {Name: "机械组成物(302)", Title: "", Value: 302},
  54. // {Name: "机上人工(303)", Value: 303},
  55. // {Name: "仪器仪表(304)", Value: 304},
  56. // {Name: "燃料动力费(305)", Value: 305},
  57. // {Name: "折旧费(306)", Value: 306},
  58. // {Name: "检修费(307)", Value: 307},
  59. // {Name: "维护费(308)", Value: 308},
  60. // {Name: "安拆费及场外运费(309)", Value: 309},
  61. // {Name: "校验费(310)", Value: 310},
  62. // {Name: "其他费用(311)", Value: 311},
  63. // {Name: "其他施工机具使用费(312)", Value: 312},
  64. // {Name: "主材(4)", Title: "", Value: 4},
  65. // {Name: "设备(5)", Title: "", Value: 5},
  66. // {Name: "企业管理费(6)", Title: "", Value: 6},
  67. // {Name: "利润(7)", Title: "", Value: 7},
  68. // {Name: "一般风险费(8)", Title: "", Value: 8}
  69. // ];
  70. const fixed_glj_types = [
  71. { Name: "人工(1)", Title: "", Value: 1 },
  72. { Name: "普通材料(201)", Title: "", Value: 201 },
  73. { Name: "混凝土(202)", Title: "", Value: 202 },
  74. { Name: "砂浆(203)", Title: "", Value: 203 },
  75. { Name: "配合比(204)", Title: "", Value: 204 },
  76. { Name: "商品混凝土(205)", Title: "", Value: 205 },
  77. { Name: "商品砂浆(206)", Title: "", Value: 206 },
  78. { Name: "其他材料(207)", Title: "", Value: 207 },
  79. { Name: "机械台班(301)", Title: "", Value: 301 },
  80. { Name: "机械组成物(302)", Title: "", Value: 302 },
  81. { Name: "机上人工(303)", Value: 303 },
  82. { Name: "仪器仪表(304)", Value: 304 },
  83. { Name: "燃料动力费(305)", Value: 305 },
  84. { Name: "折旧费(306)", Value: 306 },
  85. { Name: "检修费(307)", Value: 307 },
  86. { Name: "维护费(308)", Value: 308 },
  87. { Name: "安拆费及场外运费(309)", Value: 309 },
  88. { Name: "校验费(310)", Value: 310 },
  89. { Name: "其他费用(311)", Value: 311 },
  90. { Name: "其他施工机具使用费(312)", Value: 312 },
  91. { Name: "主材(4)", Title: "", Value: 4 },
  92. { Name: "设备(5)", Title: "", Value: 5 },
  93. { Name: "企业管理费(6)", Title: "", Value: 6 },
  94. { Name: "利润(7)", Title: "", Value: 7 },
  95. { Name: "一般风险费(8)", Title: "", Value: 8 },
  96. ];
  97. // const fixed_top_bills_nodes = [
  98. // {Name: "分部分项工程(1)", Title: "", Value: 1}
  99. // ,{Name: "措施项目(2)", Title: "", Value: 2}
  100. // ,{Name: "其他项目(7)", Title: "", Value: 7}
  101. // ,{Name: "规费(15)", Title: "", Value: 15}
  102. // ,{Name: "税金(18)", Title: "", Value: 18}
  103. // ,{Name: "工程造价(19)", Title: "", Value: 19}
  104. // ];
  105. const fixed_top_bills_nodes = [
  106. { Name: "建筑安装工程费(1)", Title: "", Value: 1 },
  107. { Name: "土地使用及拆迁补偿费(2)", Title: "", Value: 2 },
  108. { Name: "养护工程其他费用(3)", Title: "", Value: 3 },
  109. { Name: "预备费(4)", Title: "", Value: 4 },
  110. { Name: "一二三四部分合计(7)", Title: "", Value: 7 },
  111. { Name: "贷款利息(8)", Title: "", Value: 8 },
  112. { Name: "总造价(9)", Title: "", Value: 9 },
  113. { Name: "第100章至700章清单(19)", Title: "", Value: 19 },
  114. ];
  115. // const fixed_other_bills_types = [
  116. // {Name: "施工技术措施项目(3)", Title: "", Value: 3}
  117. // ,{Name: "安全文明施工按实计算费用(4)", Title: "", Value: 4}
  118. // ,{Name: "施工组织措施专项费用(5)", Title: "", Value: 5}
  119. // ,{Name: "安全文明施工专项费用(6)", Title: "", Value: 6}
  120. // ,{Name: "暂列金额(8)", Title: "", Value: 8}
  121. // ,{Name: "暂估价(9)", Title: "", Value: 9}
  122. // ,{Name: "材料(工程设备)暂估价(10)", Title: "", Value: 10}
  123. // ,{Name: "专业工程暂估价(11)", Title: "", Value: 11}
  124. // ,{Name: "计日工(12)", Title: "", Value: 12}
  125. // ,{Name: "总承包服务费(13)", Title: "", Value: 13}
  126. // ,{Name: "索赔与现场签证(14)", Title: "", Value: 14}
  127. // ,{Name: "社会保险费及住房公积金(16)", Title: "", Value: 16}
  128. // ,{Name: "工程排污费(17)", Title: "", Value: 17}
  129. // ,{Name: "增值税(20)", Title: "", Value: 20}
  130. // ];
  131. const fixed_other_bills_types = [
  132. { Name: "基本预备费(5)", Title: "", Value: 5 },
  133. { Name: "价差预备费(6)", Title: "", Value: 6 },
  134. { Name: "设备购置费(10)", Title: "", Value: 10 },
  135. { Name: "专项费用(11)", Title: "", Value: 11 },
  136. { Name: "施工场地建设费(12)", Title: "", Value: 12 },
  137. { Name: "养护单位(业主)管理费(13)", Title: "", Value: 13 },
  138. { Name: "信息化费", Title: "", Value: 14 },
  139. { Name: "工程监理费(15)", Title: "", Value: 15 },
  140. { Name: "设计文件审查费(16)", Title: "", Value: 16 },
  141. { Name: "勘察设计费(17)", Title: "", Value: 17 },
  142. { Name: "招标代理及标底编制费(18)", Title: "", Value: 18 },
  143. { Name: "第100章至700章清单(19)", Title: "", Value: 19 },
  144. { Name: "专项暂定合计(20)", Title: "", Value: 20 },
  145. { Name: "清单合计扣除专项暂定合计(21)", Title: "", Value: 21 },
  146. { Name: "计日工(22)", Title: "", Value: 22 },
  147. { Name: "劳务(23)", Title: "", Value: 23 },
  148. { Name: "材料(24)", Title: "", Value: 24 },
  149. { Name: "施工机械(25)", Title: "", Value: 25 },
  150. { Name: "暂列金额(26)", Title: "", Value: 26 },
  151. { Name: "安全生产费(27)", Title: "", Value: 27 },
  152. { Name: "100章清单(28)", Title: "", Value: 28 },
  153. ];
  154. // const fixed_bills_flags = [
  155. // {Name: "分部分项工程(1)", Title: "", Value: 1},
  156. // {Name: "措施项目(2)", Title: "", Value: 2},
  157. // {Name: "施工技术措施项目(3)", Title: "", Value: 3},
  158. // {Name: "安全文明施工按实计算费用(4)", Title: "", Value: 4},
  159. // {Name: "施工组织措施专项费用(5)", Title: "", Value: 5},
  160. // {Name: "安全文明施工专项费用(6)", Title: "", Value: 6},
  161. // {Name: "其他项目(7)", Title: "", Value: 7},
  162. // {Name: "暂列金额(8)", Title: "", Value: 8},
  163. // {Name: "暂估价(9)", Title: "", Value: 9},
  164. // {Name: "材料(工程设备)暂估价(10)", Title: "", Value: 10},
  165. // {Name: "专业工程暂估价(11)", Title: "", Value: 11},
  166. // {Name: "计日工(12)", Title: "", Value: 12},
  167. // {Name: "总承包服务费(13)", Title: "", Value: 13},
  168. // {Name: "索赔与现场签证(14)", Title: "", Value: 14},
  169. // {Name: "规费(15)", Title: "", Value: 15},
  170. // {Name: "社会保险费及住房公积金(16)", Title: "", Value: 16},
  171. // {Name: "工程排污费(17)", Title: "", Value: 17},
  172. // {Name: "税金(18)", Title: "", Value: 18},
  173. // {Name: "工程造价(19)", Title: "", Value: 19},
  174. // {Name: "增值税(20)", Title: "", Value: 20}
  175. // ];
  176. const fixed_bills_flags = [
  177. { Name: "建筑安装工程费(1)", Title: "", Value: 1 },
  178. { Name: "土地使用及拆迁补偿费(2)", Title: "", Value: 2 },
  179. { Name: "养护工程其他费用(3)", Title: "", Value: 3 },
  180. { Name: "预备费(4)", Title: "", Value: 4 },
  181. { Name: "基本预备费(5)", Title: "", Value: 5 },
  182. { Name: "价差预备费(6)", Title: "", Value: 6 },
  183. { Name: "一二三四部分合计(7)", Title: "", Value: 7 },
  184. { Name: "贷款利息(8)", Title: "", Value: 8 },
  185. { Name: "总造价(9)", Title: "", Value: 9 },
  186. { Name: "设备购置费(10)", Title: "", Value: 10 },
  187. { Name: "专项费用(11)", Title: "", Value: 11 },
  188. { Name: "施工场地建设费(12)", Title: "", Value: 12 },
  189. { Name: "养护单位(业主)管理费(13)", Title: "", Value: 13 },
  190. { Name: "信息化费", Title: "", Value: 14 },
  191. { Name: "工程监理费(15)", Title: "", Value: 15 },
  192. { Name: "设计文件审查费(16)", Title: "", Value: 16 },
  193. { Name: "勘察设计费(17)", Title: "", Value: 17 },
  194. { Name: "招标代理及标底编制费(18)", Title: "", Value: 18 },
  195. { Name: "第100章至700章清单(19)", Title: "", Value: 19 },
  196. { Name: "专项暂定合计(20)", Title: "", Value: 20 },
  197. { Name: "清单合计扣除专项暂定合计(21)", Title: "", Value: 21 },
  198. { Name: "计日工(22)", Title: "", Value: 22 },
  199. { Name: "劳务(23)", Title: "", Value: 23 },
  200. { Name: "材料(24)", Title: "", Value: 24 },
  201. { Name: "施工机械(25)", Title: "", Value: 25 },
  202. { Name: "暂列金额(26)", Title: "", Value: 26 },
  203. { Name: "安全生产费(27)", Title: "", Value: 27 },
  204. { Name: "100章清单(28)", Title: "", Value: 28 },
  205. ];
  206. const fixed_bills_types = [
  207. { Name: "大项费用(1)", Title: "", Value: 1 },
  208. { Name: "分部(2)", Title: "", Value: 2 },
  209. { Name: "分项(3)", Title: "", Value: 3 },
  210. { Name: "清单(4)", Title: "", Value: 4 },
  211. { Name: "补项(5)", Title: "", Value: 5 },
  212. ];
  213. const fixed_bills_special_provisional_types = [
  214. { Name: "材料", Title: "", Value: "材料" },
  215. { Name: "工程设备", Title: "", Value: "工程设备" },
  216. { Name: "专业工程", Title: "", Value: "专业工程" },
  217. ];
  218. const exposed_bills_properties = [
  219. { Name: "清单_所属项目ID", Title: "", Key: "projectID", Order: "ascend" },
  220. { Name: "清单_ID", Title: "", Key: "ID", Order: "ascend" },
  221. {
  222. Name: "顶层父清单_标记",
  223. Title: "",
  224. Key: "topBillID",
  225. Order: "ascend",
  226. individualType: fixed_top_bills_nodes,
  227. },
  228. { Name: "清单_层次", Title: "", Key: "treeLevel", Order: "ascend" },
  229. {
  230. Name: "清单_类别",
  231. Title: "",
  232. Key: "type",
  233. Order: "ascend",
  234. individualType: fixed_bills_types,
  235. },
  236. {
  237. Name: "清单_标记",
  238. Title: "",
  239. Key: "flags.flag",
  240. Order: "ascend",
  241. individualType: fixed_bills_flags,
  242. },
  243. {
  244. Name: "清单_顺序号",
  245. Title: "",
  246. Key: "treeFlatSerialOrder",
  247. Order: "ascend",
  248. },
  249. {
  250. Name: "清单_专项类型",
  251. Title: "",
  252. Key: "specialProvisional",
  253. Order: "ascend",
  254. individualType: fixed_bills_special_provisional_types,
  255. },
  256. ];
  257. const exposed_ration_properties = [
  258. { Name: "定额_工程内部ID", Title: "", Key: "ID", Order: "ascend" },
  259. { Name: "定额_所属项目ID", Title: "", Key: "projectID", Order: "ascend" },
  260. { Name: "定额_所属清单ID", Title: "", Key: "billsItemID", Order: "ascend" },
  261. { Name: "定额_清单内顺序", Title: "", Key: "serialNo", Order: "ascend" },
  262. { Name: "定额_类型", Title: "", Key: "type", Order: "ascend" },
  263. { Name: "定额_工程量", Title: "", Key: "quantity", Order: "ascend" },
  264. ];
  265. const exposed_ration_glj_properties = [
  266. { Name: "定额人材机_ID", Title: "", Key: "ID" },
  267. {
  268. Name: "定额人材机_项目人材机映射ID",
  269. Title: "",
  270. Key: "projectGLJID",
  271. Order: "ascend",
  272. },
  273. {
  274. Name: "定额人材机_所属定额ID",
  275. Title: "",
  276. Key: "rationID",
  277. Order: "ascend",
  278. },
  279. {
  280. Name: "定额人材机_所属清单ID",
  281. Title: "",
  282. Key: "billsItemID",
  283. Order: "ascend",
  284. },
  285. {
  286. Name: "定额人材机_所属工程ID",
  287. Title: "",
  288. Key: "projectID",
  289. Order: "ascend",
  290. },
  291. { Name: "定额人材机_代码", Title: "", Key: "code", Order: "ascend" },
  292. {
  293. Name: "定额人材机_类型",
  294. Title: "",
  295. Key: "type",
  296. Order: "ascend",
  297. individualType: fixed_glj_types,
  298. },
  299. { Name: "定额人材机_数量", Title: "", Key: "quantity", Order: "ascend" },
  300. {
  301. Name: "定额人材机_是否暂估",
  302. Title: "",
  303. Key: "ref_join(projectGLJID,projectGLJ,id).is_evaluate",
  304. Order: "ascend",
  305. isBoolean: true,
  306. booleanOptions: [1, 0],
  307. },
  308. {
  309. Name: "定额人材机_是否主要材料",
  310. Title: "",
  311. Key: "ref_join(projectGLJID,projectGLJ,id).is_main_material",
  312. Order: "ascend",
  313. isBoolean: true,
  314. booleanOptions: [1, 0],
  315. },
  316. {
  317. Name: "定额人材机_供货方式",
  318. Title: "",
  319. Key: "ref_join(projectGLJID,projectGLJ,id).supply",
  320. Order: "ascend",
  321. individualType: fixed_supply_types,
  322. },
  323. {
  324. Name: "定额人材机_三材类别",
  325. Title: "",
  326. Key: "ref_join(projectGLJID,projectGLJ,id).materialType",
  327. Order: "ascend",
  328. individualType: fixed_material_types,
  329. },
  330. ];
  331. const exposed_prj_glj_properties = [
  332. { Name: "项目人材机_ID", Title: "", Key: "id" },
  333. {
  334. Name: "项目人材机_所属工程ID",
  335. Title: "",
  336. Key: "projectID",
  337. Order: "ascend",
  338. },
  339. { Name: "项目人材机_代码", Title: "", Key: "code", Order: "ascend" },
  340. {
  341. Name: "项目人材机_类型",
  342. Title: "",
  343. Key: "type",
  344. Order: "ascend",
  345. individualType: fixed_glj_types,
  346. },
  347. { Name: "项目人材机_数量", Title: "", Key: "quantity", Order: "ascend" },
  348. {
  349. Name: "项目人材机_是否暂估",
  350. Title: "",
  351. Key: "is_evaluate",
  352. Order: "ascend",
  353. isBoolean: true,
  354. booleanOptions: [1, 0],
  355. },
  356. {
  357. Name: "项目人材机_是否主要材料",
  358. Title: "",
  359. Key: "is_main_material",
  360. Order: "ascend",
  361. isBoolean: true,
  362. booleanOptions: [1, 0],
  363. },
  364. {
  365. Name: "项目人材机_是否材料计算",
  366. Title: "",
  367. Key: "unit_price.calcMaterial",
  368. Order: "ascend",
  369. isBoolean: true,
  370. booleanOptions: [1, 0],
  371. },
  372. {
  373. Name: "项目人材机_供货方式",
  374. Title: "",
  375. Key: "supply",
  376. Order: "ascend",
  377. individualType: fixed_supply_types,
  378. },
  379. {
  380. Name: "项目人材机_三材类别",
  381. Title: "",
  382. Key: "materialType",
  383. Order: "ascend",
  384. individualType: fixed_material_types,
  385. },
  386. {
  387. Name: "项目人材机_来源",
  388. Title: "",
  389. Key: "from",
  390. Order: "ascend",
  391. individualType: fixed_glj_from_types,
  392. },
  393. ];
  394. const exposed_properties_arr = [
  395. exposed_bills_properties,
  396. exposed_ration_properties,
  397. exposed_ration_glj_properties,
  398. exposed_prj_glj_properties,
  399. ];
  400. let preHandleObj = {
  401. treeObj: null,
  402. typeTreeObj: null,
  403. currentNode: null,
  404. iniTree: function (rptTpl) {
  405. let me = this;
  406. me.buildData(rptTpl);
  407. },
  408. buildData: function (rptTpl) {
  409. let me = this,
  410. handles = [];
  411. if (rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
  412. for (let item of rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
  413. let hd = { Name: "预处理环节" };
  414. me.private_copy_node(item, hd);
  415. me.private_set_title(hd);
  416. hd.Operations = []; //考虑到用户可能会换来换去,这样会有冗余的属性出现
  417. handles.push(hd);
  418. }
  419. }
  420. me.treeObj = $.fn.zTree.init(
  421. $("#pre_handle_data_info_reversed"),
  422. preHandleSetting,
  423. handles
  424. );
  425. },
  426. build_handle_data_selection: function () {
  427. let sel = $("#select_mapping_data"),
  428. sel2 = $("#select_mapping_data_for_sort_type");
  429. for (let i = 0; i < pre_handle_data_objects.length; i++) {
  430. sel2.append(
  431. "<option value='" +
  432. pre_handle_data_objects[i] +
  433. "'>" +
  434. pre_handle_data_objects_name[i] +
  435. "</option>"
  436. );
  437. sel.append(
  438. "<option value='" +
  439. pre_handle_data_objects[i] +
  440. "'>" +
  441. pre_handle_data_objects_name[i] +
  442. "</option>"
  443. );
  444. }
  445. },
  446. buildTypeData: function () {
  447. let me = this,
  448. types = [];
  449. types.push({ Name: JV.PROP_HANDLE_TYPE_SORT, Title: "" });
  450. types.push({ Name: JV.PROP_HANDLE_TYPE_FILTER, Title: "" });
  451. types.push({ Name: JV.PROP_HANDLE_TYPE_BILLS_DATA_MOVE, Title: "" });
  452. types.push({ Name: JV.PROP_HANDLE_TYPE_COMPONENT_MOVE, Title: "" });
  453. types.push({ Name: JV.PROP_HANDLE_TYPE_SUM, Title: "" });
  454. types.push({ Name: JV.PROP_HANDLE_TYPE_ADJUST, Title: "" });
  455. types.push({ Name: JV.PROP_HANDLE_TYPE_ADD_DUMMY, Title: "" });
  456. types.push({
  457. Name: JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS,
  458. Title: "",
  459. });
  460. types.push({ Name: JV.PROP_HANDLE_TYPE_FX_GLJ, Title: "" });
  461. types.push({ Name: JV.PROP_HANDLE_TYPE_LAND_COMPS, Title: "" });
  462. types.push({ Name: JV.PROP_HANDLE_TYPE_COST_TREE_BU_GLJ, Title: "" });
  463. types.push({
  464. Name: JV.PROP_HANDLE_TYPE_FLITE_XMJ_IS_BILL_BUDGET,
  465. Title: "",
  466. });
  467. types.push({ Name: JV.PROP_HANDLE_TYPE_BIND_AID_REPORT, Title: "" });
  468. // types.push({Name: "纯手工填写", Title: ""});
  469. me.typeTreeObj = $.fn.zTree.init(
  470. $("#pre_handle_type_reversed"),
  471. preHandleTypeSetting,
  472. types
  473. );
  474. me.setDisabledBandSelect([0, 1, 2, 3, 4, 5, 6, 7, 8]);
  475. me.build_handle_data_selection();
  476. },
  477. setDisabledBandSelect: function (disabledIdxArr) {
  478. let me = this;
  479. if (me.typeTreeObj) {
  480. let nodes = me.typeTreeObj.getNodes();
  481. for (let idx = 0; idx < nodes.length; idx++) {
  482. if (disabledIdxArr.indexOf(idx) >= 0) {
  483. me.typeTreeObj.setChkDisabled(nodes[idx], true, true, true);
  484. } else {
  485. me.typeTreeObj.setChkDisabled(nodes[idx], false, true, true);
  486. }
  487. }
  488. }
  489. },
  490. createNewNode: function (nodeType) {
  491. let rst = null,
  492. preHandleType = nodeType;
  493. if (!nodeType) {
  494. preHandleType = JV.PROP_HANDLE_TYPE_SORT;
  495. }
  496. switch (nodeType) {
  497. case JV.PROP_HANDLE_TYPE_SORT:
  498. rst = {
  499. Name: "预处理环节",
  500. Title: "",
  501. 映射数据对象: "bills",
  502. 预处理类型: preHandleType,
  503. 排序方式: "normal",
  504. 排序键值集: [],
  505. };
  506. break;
  507. case JV.PROP_HANDLE_TYPE_FILTER:
  508. rst = {
  509. Name: "预处理环节",
  510. Title: "",
  511. 映射数据对象: "bills",
  512. 预处理类型: preHandleType,
  513. 过滤键值集: [],
  514. };
  515. break;
  516. case JV.PROP_HANDLE_TYPE_BILLS_DATA_MOVE:
  517. rst = {
  518. Name: "预处理环节",
  519. Title: "",
  520. 映射数据对象: "ration",
  521. 预处理类型: preHandleType,
  522. };
  523. break;
  524. case JV.PROP_HANDLE_TYPE_COMPONENT_MOVE:
  525. rst = {
  526. Name: "预处理环节",
  527. Title: "",
  528. 映射数据对象: "ration",
  529. 预处理类型: preHandleType,
  530. };
  531. break;
  532. case JV.PROP_HANDLE_TYPE_SUM:
  533. rst = {
  534. Name: "预处理环节",
  535. Title: "",
  536. 映射数据对象: "bills",
  537. 预处理类型: preHandleType,
  538. 分组键值集: [],
  539. 统计键值集: [],
  540. };
  541. break;
  542. case JV.PROP_HANDLE_TYPE_ADJUST:
  543. rst = {
  544. Name: "预处理环节",
  545. Title: "",
  546. 映射数据对象: "bills",
  547. 预处理类型: preHandleType,
  548. 数据调整集: [],
  549. };
  550. break;
  551. case JV.PROP_HANDLE_TYPE_ADD_DUMMY:
  552. rst = {
  553. Name: "预处理环节",
  554. Title: "",
  555. 映射数据对象: "bills",
  556. 预处理类型: preHandleType,
  557. Dummy数据集: [],
  558. };
  559. break;
  560. case JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS:
  561. rst = {
  562. Name: "预处理环节",
  563. Title: "",
  564. 映射数据对象: "bills",
  565. 预处理类型: preHandleType,
  566. };
  567. break;
  568. case JV.PROP_HANDLE_TYPE_FX_GLJ:
  569. rst = {
  570. Name: "预处理环节",
  571. Title: "",
  572. 映射数据对象: "",
  573. 预处理类型: preHandleType,
  574. };
  575. break;
  576. case JV.PROP_HANDLE_TYPE_LAND_COMPS:
  577. rst = {
  578. Name: "预处理环节",
  579. Title: "",
  580. 映射数据对象: "bills",
  581. 预处理类型: preHandleType,
  582. };
  583. break;
  584. case JV.PROP_HANDLE_TYPE_COST_TREE_BU_GLJ:
  585. rst = {
  586. Name: "预处理环节",
  587. Title: "",
  588. 映射数据对象: "",
  589. 预处理类型: preHandleType,
  590. };
  591. break;
  592. case JV.PROP_HANDLE_TYPE_FLITE_XMJ_IS_BILL_BUDGET:
  593. rst = {
  594. Name: "预处理环节",
  595. Title: "",
  596. 映射数据对象: "",
  597. 预处理类型: preHandleType,
  598. };
  599. break;
  600. case JV.PROP_HANDLE_TYPE_BIND_AID_REPORT:
  601. rst = {
  602. Name: "预处理环节",
  603. Title: "",
  604. 映射数据对象: "",
  605. 预处理类型: preHandleType,
  606. };
  607. break;
  608. default:
  609. rst = {
  610. Name: "预处理环节",
  611. Title: "",
  612. 映射数据对象: "bills",
  613. 预处理类型: "排序",
  614. 排序方式: "normal",
  615. 排序键值集: [],
  616. };
  617. break;
  618. }
  619. return rst;
  620. },
  621. addNewNode: function (nodeType) {
  622. let me = this,
  623. item = me.createNewNode(nodeType);
  624. me.private_set_title(item);
  625. me.treeObj.addNodes(null, -1, [item], true);
  626. },
  627. private_change_node_by_type: function (handleType, item) {
  628. let preHandleType = handleType;
  629. if (!handleType) {
  630. preHandleType = JV.PROP_HANDLE_TYPE_SORT;
  631. }
  632. item[JV.PROP_HANDLE_TYPE] = preHandleType;
  633. switch (handleType) {
  634. case JV.PROP_HANDLE_TYPE_SORT:
  635. item[JV.PROP_SORT_TYPE] = "normal";
  636. item[JV.PROP_SORT_KEYS] = [];
  637. break;
  638. case JV.PROP_HANDLE_TYPE_FILTER:
  639. item[JV.PROP_FILTER_KEYS] = [];
  640. break;
  641. case JV.PROP_HANDLE_TYPE_BILLS_DATA_MOVE:
  642. break;
  643. case JV.PROP_HANDLE_TYPE_COMPONENT_MOVE:
  644. break;
  645. case JV.PROP_HANDLE_TYPE_SUM:
  646. item[JV.PROP_SUM_GROUP_KEYS] = [];
  647. item[JV.PROP_SUM_SUM_KEYS] = [];
  648. break;
  649. case JV.PROP_HANDLE_TYPE_ADJUST:
  650. item[JV.PROP_ADJUST_COLLECTION] = [];
  651. break;
  652. case JV.PROP_HANDLE_TYPE_ADD_DUMMY:
  653. item[JV.PROP_DUMMY_COLLECTION] = [];
  654. break;
  655. case JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS:
  656. item[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE] = "all"; // 工程量清单排序
  657. item[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE] = "bills"; // 工程量清单输出级别
  658. break;
  659. case JV.PROP_HANDLE_TYPE_FX_GLJ:
  660. break;
  661. case JV.PROP_HANDLE_TYPE_LAND_COMPS:
  662. break;
  663. case JV.PROP_HANDLE_TYPE_COST_TREE_BU_GLJ:
  664. break;
  665. case JV.PROP_HANDLE_TYPE_FLITE_XMJ_IS_BILL_BUDGET:
  666. break;
  667. default:
  668. item[JV.PROP_HANDLE_TYPE] = JV.PROP_HANDLE_TYPE_SORT;
  669. item[JV.PROP_SORT_TYPE] = "normal";
  670. item[JV.PROP_SORT_KEYS] = [];
  671. break;
  672. }
  673. // return rst;
  674. },
  675. private_copy_node: function (src, dest) {
  676. let me = this;
  677. dest[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY];
  678. dest[JV.PROP_HANDLE_TYPE] = src[JV.PROP_HANDLE_TYPE];
  679. if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_SORT) {
  680. preHandleSortObj.copyNode(src, dest);
  681. } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_FILTER) {
  682. preHandleFilterObj.copyNode(src, dest);
  683. } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_SUM) {
  684. preHandleSummaryObj.copyNode(src, dest);
  685. } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_ADJUST) {
  686. preHandleAdjustObj.copyNode(src, dest);
  687. } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_ADD_DUMMY) {
  688. preHandleAddDummyObj.copyNode(src, dest);
  689. } else if (
  690. src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS
  691. ) {
  692. preHandleQuantitiesBillsSortObj.copyNode(src, dest);
  693. }
  694. },
  695. private_set_title: function (node) {
  696. let nameStr = node[JV.PROP_NAME],
  697. idx = nameStr.indexOf("(");
  698. if (idx >= 0) {
  699. nameStr = nameStr.slice(0, idx);
  700. }
  701. node[JV.PROP_NAME] = nameStr + "(" + node[JV.PROP_HANDLE_TYPE] + ")";
  702. node.Title =
  703. "映射数据对象:" +
  704. node[JV.PROP_DATA_KEY] +
  705. " | " +
  706. node[JV.PROP_HANDLE_TYPE];
  707. },
  708. refreshByNode: function (treeNode) {
  709. let me = preHandleObj;
  710. if (me.typeTreeObj) {
  711. let nodes = me.typeTreeObj.getNodes();
  712. let typeNode = null;
  713. for (let node of nodes) {
  714. if (treeNode[JV.PROP_NAME].indexOf(node[JV.PROP_NAME]) > 0) {
  715. me.typeTreeObj.checkNode(node, true, false, false);
  716. typeNode = node;
  717. break;
  718. }
  719. }
  720. let md = $("#select_mapping_data")[0];
  721. for (let i = 0; i < md.children.length; i++) {
  722. if (treeNode[JV.PROP_DATA_KEY] === md.children[i].value) {
  723. md.selectedIndex = i;
  724. break;
  725. }
  726. }
  727. if (typeNode) {
  728. me.hide_all_dom();
  729. $("#div_pre_handle_data")[0].style.display = "";
  730. if (typeNode[JV.PROP_NAME] === "排序") {
  731. preHandleSortObj.refresh_node();
  732. } else if (typeNode[JV.PROP_NAME] === "过滤") {
  733. preHandleFilterObj.refresh_node();
  734. } else if (typeNode[JV.PROP_NAME] === "合计") {
  735. preHandleSummaryObj.refresh_node();
  736. } else if (typeNode[JV.PROP_NAME] === "数据调整") {
  737. preHandleAdjustObj.refresh_node();
  738. } else if (typeNode[JV.PROP_NAME] === "增加Dummy数据") {
  739. preHandleAddDummyObj.refresh_node();
  740. } else if (typeNode[JV.PROP_NAME] === "转化工程量清单") {
  741. preHandleQuantitiesBillsSortObj.refresh_node();
  742. }
  743. }
  744. }
  745. },
  746. hide_all_dom: function () {
  747. $("#div_pre_handle_data")[0].style.display = "none";
  748. $("#div_sort_type")[0].style.display = "none";
  749. $("#div_sort_type_normal")[0].style.display = "none";
  750. $("#div_filter_type")[0].style.display = "none";
  751. $("#div_summary_type")[0].style.display = "none";
  752. $("#div_adjust_type")[0].style.display = "none";
  753. $("#div_add_dummy_type")[0].style.display = "none";
  754. $("#div_sort_type_according_to_parent")[0].style.display = "none";
  755. $("#div_sort_type_parent_data")[0].style.display = "none";
  756. $("#div_sort_tree")[0].style.display = "none";
  757. $("#div_sort_self_define")[0].style.display = "none";
  758. $("#div_quantities_bills_sort_bar")[0].style.display = "none";
  759. },
  760. onPreHandleClick: function (event, treeId, treeNode) {
  761. //点击预处理环节 节点
  762. let me = preHandleObj;
  763. me.currentNode = treeNode;
  764. me.setDisabledBandSelect([4, 5, 6]);
  765. // me.setDisabledBandSelect([]);
  766. me.refreshByNode(treeNode);
  767. },
  768. onTypeClick: function (event, treeId, treeNode) {
  769. //选择预处理类型(排序、过滤。。。)
  770. let me = preHandleObj;
  771. if (me.currentNode) {
  772. // me.currentNode[JV.PROP_HANDLE_TYPE] = treeNode[JV.PROP_NAME];
  773. me.private_change_node_by_type(treeNode[JV.PROP_NAME], me.currentNode);
  774. me.private_set_title(me.currentNode);
  775. me.treeObj.updateNode(me.currentNode, false);
  776. me.refreshByNode(me.currentNode);
  777. }
  778. },
  779. onChangeDataMappingObj: function (dom, oprType) {
  780. //更改(或选择)预处理环节中的 数据依据(就是说报表想预处理什么数据)
  781. let me = preHandleObj;
  782. if (oprType === "top") {
  783. preHandleObj.currentNode[JV.PROP_DATA_KEY] = dom.value;
  784. preHandleSortObj.childTreeObj = $.fn.zTree.init(
  785. $("#child_sorting_keys"),
  786. sortingKeysSetting,
  787. exposed_properties_arr[dom.selectedIndex]
  788. );
  789. preHandleSortObj.treeObj = $.fn.zTree.init(
  790. $("#pre_handle_sort_keys_reversed"),
  791. sortingKeysSetting,
  792. exposed_properties_arr[dom.selectedIndex]
  793. );
  794. preHandleFilterObj.treeObj = $.fn.zTree.init(
  795. $("#pre_handle_filter_keys_reversed"),
  796. filterKeysSetting,
  797. exposed_properties_arr[dom.selectedIndex]
  798. );
  799. } else if (oprType === "accord_to_parent") {
  800. preHandleSortObj.parentTreeObj = $.fn.zTree.init(
  801. $("#parent_sorting_keys"),
  802. sortingKeysSetting,
  803. exposed_properties_arr[dom.selectedIndex]
  804. );
  805. preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][
  806. JV.PROP_PARENT_DATA_KEY
  807. ] = dom.value;
  808. }
  809. },
  810. onBeforeDrag: function (treeId, treeNodes) {
  811. let rst = true;
  812. for (let node of treeNodes) {
  813. if (node.level > 0) {
  814. rst = false;
  815. break;
  816. }
  817. }
  818. return rst;
  819. },
  820. onBeforeDrop: function (treeId, treeNodes, targetNode, moveType) {
  821. let rst = false;
  822. if (targetNode.level === 0 && moveType !== "inner") {
  823. rst = true;
  824. }
  825. return rst;
  826. },
  827. onBeforeRemove: function (treeId, treeNode) {
  828. let rst = true;
  829. if (treeNode.isParent) {
  830. rst = false;
  831. } else {
  832. //
  833. }
  834. return rst;
  835. },
  836. addHoverDom: function (treeId, treeNode) {
  837. let me = preHandleObj,
  838. sObj = $("#" + treeNode.tId + "_span");
  839. if (
  840. (treeNode.level > 0 &&
  841. treeNode[JV.PROP_HANDLE_TYPE] !== JV.PROP_HANDLE_TYPE_FILTER) ||
  842. $("#addBtn_" + treeNode.tId).length > 0
  843. )
  844. return;
  845. if (
  846. treeNode[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_SORT &&
  847. treeNode[JV.PROP_SORT_TYPE] === "accord_to_parent"
  848. ) {
  849. let addStr =
  850. "<span class='button add' id='addBtn_" +
  851. treeNode.tId +
  852. "' title='新增子排序' onfocus='this.blur();'></span>";
  853. sObj.after(addStr);
  854. let btn = $("#addBtn_" + treeNode.tId);
  855. if (btn)
  856. btn.bind("click", function () {
  857. let newSubNodes = [];
  858. let newNode = me.createNewNode(treeNode[JV.PROP_HANDLE_TYPE]);
  859. newNode.Name = "子排序";
  860. newNode[JV.PROP_DATA_KEY] = treeNode[JV.PROP_DATA_KEY];
  861. me.private_set_title(newNode);
  862. newSubNodes.push(newNode);
  863. treeNode.isParent = true;
  864. me.treeObj.addNodes(treeNode, -1, newSubNodes, true);
  865. me.treeObj.expandNode(treeNode, true, false);
  866. });
  867. } else if (treeNode[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_FILTER) {
  868. let addStr =
  869. "<span class='button add' id='addBtn_" +
  870. treeNode.tId +
  871. "' title='新增子过滤' onfocus='this.blur();'></span>";
  872. sObj.after(addStr);
  873. let btn = $("#addBtn_" + treeNode.tId);
  874. if (btn)
  875. btn.bind("click", function () {
  876. let newSubNodes = [];
  877. let newNode = me.createNewNode(treeNode[JV.PROP_HANDLE_TYPE]);
  878. newNode.Name = "子过滤";
  879. newNode[JV.PROP_DATA_KEY] = treeNode[JV.PROP_DATA_KEY];
  880. newNode.Title = "";
  881. newNode[JV.PROP_HANDLE_TYPE] = JV.PROP_HANDLE_TYPE_FILTER;
  882. // me.private_set_title(newNode);
  883. newSubNodes.push(newNode);
  884. treeNode.isParent = true;
  885. me.treeObj.addNodes(treeNode, -1, newSubNodes, true);
  886. me.treeObj.expandNode(treeNode, true, false);
  887. });
  888. }
  889. },
  890. removeHoverDom: function (treeId, treeNode) {
  891. $("#addBtn_" + treeNode.tId)
  892. .unbind()
  893. .remove();
  894. },
  895. extractTabFields: function (rptTpl) {
  896. let me = this,
  897. nodes = me.treeObj.getNodes();
  898. let rst = [];
  899. if (nodes && nodes.length > 0) {
  900. for (let handleObj of nodes) {
  901. switch (handleObj[JV.PROP_HANDLE_TYPE]) {
  902. case JV.PROP_HANDLE_TYPE_SORT:
  903. rst.push(preHandleSortObj.extractTabFields(handleObj));
  904. break;
  905. case JV.PROP_HANDLE_TYPE_FILTER:
  906. rst.push(preHandleFilterObj.extractTabFields(handleObj));
  907. break;
  908. case JV.PROP_HANDLE_TYPE_SUM:
  909. rst.push(preHandleSummaryObj.extractTabFields(handleObj));
  910. break;
  911. case JV.PROP_HANDLE_TYPE_ADJUST:
  912. rst.push(preHandleAdjustObj.extractTabFields(handleObj));
  913. break;
  914. case JV.PROP_HANDLE_TYPE_ADD_DUMMY:
  915. rst.push(preHandleAddDummyObj.extractTabFields(handleObj));
  916. break;
  917. case JV.PROP_HANDLE_TYPE_BILLS_DATA_MOVE:
  918. rst.push(preHandleBillDataMoveObj.extractTabFields(handleObj));
  919. break;
  920. case JV.PROP_HANDLE_TYPE_COMPONENT_MOVE:
  921. rst.push(preHandleBillDataMoveObj.extractTabFields(handleObj));
  922. break;
  923. case JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS:
  924. rst.push(
  925. preHandleQuantitiesBillsSortObj.extractTabFields(handleObj)
  926. );
  927. break;
  928. case JV.PROP_HANDLE_TYPE_FX_GLJ:
  929. rst.push(preHandleBillDataMoveObj.extractTabFields(handleObj));
  930. break;
  931. case JV.PROP_HANDLE_TYPE_LAND_COMPS:
  932. rst.push(preHandleBillDataMoveObj.extractTabFields(handleObj));
  933. break;
  934. case JV.PROP_HANDLE_TYPE_COST_TREE_BU_GLJ:
  935. rst.push(preHandleBillDataMoveObj.extractTabFields(handleObj));
  936. break;
  937. case JV.PROP_HANDLE_TYPE_FLITE_XMJ_IS_BILL_BUDGET:
  938. rst.push(preHandleBillDataMoveObj.extractTabFields(handleObj));
  939. break;
  940. default:
  941. break;
  942. }
  943. }
  944. }
  945. rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO] = rst;
  946. },
  947. };
  948. let preHandleSortObj = {
  949. normalTreeObj: null,
  950. parentTreeObj: null,
  951. childTreeObj: null,
  952. topBillsTreeObj: null,
  953. otherBillsTreeObj: null,
  954. copyNode: function (src, dest) {
  955. let me = preHandleSortObj;
  956. dest[JV.PROP_SORT_TYPE] = src[JV.PROP_SORT_TYPE];
  957. switch (sort_types.indexOf(src[JV.PROP_SORT_TYPE])) {
  958. case -1:
  959. //unknown!
  960. break;
  961. case 0:
  962. //normal
  963. let keys = [];
  964. for (let sortKeyItem of src[JV.PROP_SORT_KEYS]) {
  965. let item = { key: sortKeyItem.key, order: sortKeyItem.order };
  966. keys.push(item);
  967. }
  968. dest[JV.PROP_SORT_KEYS] = keys;
  969. break;
  970. case 1:
  971. //tree
  972. let billKeys = [];
  973. if (
  974. src[JV.PROP_FILTER_TOP_BILLS_NODES] &&
  975. src[JV.PROP_FILTER_TOP_BILLS_NODES].length > 0
  976. ) {
  977. billKeys = billKeys.concat(src[JV.PROP_FILTER_TOP_BILLS_NODES]);
  978. }
  979. dest[JV.PROP_FILTER_TOP_BILLS_NODES] = billKeys;
  980. let otherBillKeys = [];
  981. if (
  982. src[JV.PROP_FILTER_OTHER_BILLS_NODES] &&
  983. src[JV.PROP_FILTER_OTHER_BILLS_NODES].length > 0
  984. ) {
  985. otherBillKeys = otherBillKeys.concat(
  986. src[JV.PROP_FILTER_OTHER_BILLS_NODES]
  987. );
  988. }
  989. dest[JV.PROP_FILTER_OTHER_BILLS_NODES] = otherBillKeys;
  990. break;
  991. case 2:
  992. //according to parent
  993. dest[JV.PROP_PARENT_CHILD_SORT_KEY] = {};
  994. dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_DATA_KEY] =
  995. src[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_DATA_KEY];
  996. dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_SORT_KEYS] = [];
  997. for (let item of src[JV.PROP_PARENT_CHILD_SORT_KEY][
  998. JV.PROP_PARENT_SORT_KEYS
  999. ]) {
  1000. dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_SORT_KEYS].push(
  1001. item
  1002. );
  1003. }
  1004. dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_CHILD_SORT_KEYS] = [];
  1005. for (let item of src[JV.PROP_PARENT_CHILD_SORT_KEY][
  1006. JV.PROP_CHILD_SORT_KEYS
  1007. ]) {
  1008. dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_CHILD_SORT_KEYS].push(
  1009. item
  1010. );
  1011. }
  1012. dest[JV.PROP_OTHER_SUB_SORT] = [];
  1013. if (
  1014. src[JV.PROP_OTHER_SUB_SORT] !== null &&
  1015. src[JV.PROP_OTHER_SUB_SORT] !== undefined
  1016. ) {
  1017. dest.items = [];
  1018. for (let subSort of src[JV.PROP_OTHER_SUB_SORT]) {
  1019. let destSubSort = { Name: "子排序" };
  1020. me.copyNode(subSort, destSubSort);
  1021. destSubSort[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY];
  1022. dest.items.push(destSubSort);
  1023. }
  1024. }
  1025. break;
  1026. case 3:
  1027. //self define
  1028. dest[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC] =
  1029. src[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC];
  1030. break;
  1031. default:
  1032. break;
  1033. }
  1034. },
  1035. refresh_node: function () {
  1036. let me = this;
  1037. $("#div_sort_type")[0].style.display = "";
  1038. if (preHandleObj.currentNode) {
  1039. let sel = $("#select_sort_types")[0];
  1040. let idx = -1;
  1041. let sortTypeIdx = sort_types.indexOf(
  1042. preHandleObj.currentNode[JV.PROP_SORT_TYPE]
  1043. );
  1044. sel.selectedIndex = sortTypeIdx;
  1045. switch (sortTypeIdx) {
  1046. case -1:
  1047. //unknown!
  1048. break;
  1049. case 0:
  1050. //normal
  1051. $("#div_sort_type_normal")[0].style.display = "";
  1052. idx = pre_handle_data_objects.indexOf(
  1053. preHandleObj.currentNode[JV.PROP_DATA_KEY]
  1054. );
  1055. me.normalTreeObj = $.fn.zTree.init(
  1056. $("#pre_handle_sort_keys_reversed"),
  1057. sortingKeysSetting,
  1058. exposed_properties_arr[idx]
  1059. );
  1060. let nodes = me.normalTreeObj.getNodes();
  1061. for (let sortItem of preHandleObj.currentNode[JV.PROP_SORT_KEYS]) {
  1062. for (let keyNode of nodes) {
  1063. if (sortItem.key === keyNode.Key) {
  1064. me.normalTreeObj.checkNode(keyNode, true, false, false);
  1065. break;
  1066. }
  1067. }
  1068. }
  1069. break;
  1070. case 1:
  1071. //tree
  1072. //tree排序是我们特有的数据结构方式,与数据结构有关,非common用
  1073. $("#div_sort_tree")[0].style.display = "";
  1074. me.topBillsTreeObj = $.fn.zTree.init(
  1075. $("#bills_top_nodes"),
  1076. sortingTreeSetting,
  1077. fixed_top_bills_nodes
  1078. );
  1079. let topBillnodes = me.topBillsTreeObj.getNodes();
  1080. if (preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES]) {
  1081. for (let topBillsNodeId of preHandleObj.currentNode[
  1082. JV.PROP_FILTER_TOP_BILLS_NODES
  1083. ]) {
  1084. for (let topBillsNode of topBillnodes) {
  1085. if (topBillsNode.Value === topBillsNodeId) {
  1086. me.topBillsTreeObj.checkNode(
  1087. topBillsNode,
  1088. true,
  1089. false,
  1090. false
  1091. );
  1092. break;
  1093. }
  1094. }
  1095. }
  1096. } else {
  1097. preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES] = [];
  1098. }
  1099. me.otherBillsTreeObj = $.fn.zTree.init(
  1100. $("#bills_other_nodes"),
  1101. sortingTreeSetting2,
  1102. fixed_other_bills_types
  1103. );
  1104. let otherBillnodes = me.otherBillsTreeObj.getNodes();
  1105. if (preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES]) {
  1106. for (let otherBillsNodeId of preHandleObj.currentNode[
  1107. JV.PROP_FILTER_OTHER_BILLS_NODES
  1108. ]) {
  1109. for (let otherBillsNode of otherBillnodes) {
  1110. if (otherBillsNode.Value === otherBillsNodeId) {
  1111. me.otherBillsTreeObj.checkNode(
  1112. otherBillsNode,
  1113. true,
  1114. false,
  1115. false
  1116. );
  1117. break;
  1118. }
  1119. }
  1120. }
  1121. } else {
  1122. preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES] = [];
  1123. }
  1124. break;
  1125. case 2:
  1126. //according to parent
  1127. $("#div_sort_type_according_to_parent")[0].style.display = "";
  1128. $("#div_sort_type_parent_data")[0].style.display = "";
  1129. sel = $("#select_mapping_data_for_sort_type")[0];
  1130. idx = pre_handle_data_objects.indexOf(
  1131. preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][
  1132. JV.PROP_PARENT_DATA_KEY
  1133. ]
  1134. );
  1135. sel.selectedIndex = idx;
  1136. me.parentTreeObj = $.fn.zTree.init(
  1137. $("#parent_sorting_keys"),
  1138. sortingKeysSetting,
  1139. exposed_properties_arr[idx]
  1140. );
  1141. me.checkupNode(
  1142. preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][
  1143. JV.PROP_PARENT_SORT_KEYS
  1144. ],
  1145. me.parentTreeObj
  1146. );
  1147. idx = pre_handle_data_objects.indexOf(
  1148. preHandleObj.currentNode[JV.PROP_DATA_KEY]
  1149. );
  1150. me.childTreeObj = $.fn.zTree.init(
  1151. $("#child_sorting_keys"),
  1152. sortingKeysSetting,
  1153. exposed_properties_arr[idx]
  1154. );
  1155. me.checkupNode(
  1156. preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][
  1157. JV.PROP_CHILD_SORT_KEYS
  1158. ],
  1159. me.childTreeObj
  1160. );
  1161. break;
  1162. case 3:
  1163. //self define
  1164. $("#div_sort_self_define")[0].style.display = "";
  1165. $("#selfDefineSort")[0].value =
  1166. preHandleObj.currentNode[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC];
  1167. break;
  1168. default:
  1169. break;
  1170. }
  1171. }
  1172. },
  1173. checkupNode: function (keysArr, treeObj) {
  1174. let nodes = treeObj.getNodes();
  1175. for (let key of keysArr) {
  1176. for (let node of nodes) {
  1177. if (node.Key === key) {
  1178. treeObj.checkNode(node, true, false, false);
  1179. break;
  1180. }
  1181. }
  1182. }
  1183. },
  1184. onCheck: function (event, treeId, treeNode) {
  1185. let me = preHandleSortObj;
  1186. if (treeId.indexOf("parent_sorting_keys") >= 0) {
  1187. me.resetParentSort();
  1188. } else if (treeId.indexOf("child_sorting_keys") >= 0) {
  1189. me.resetChildSort();
  1190. } else {
  1191. me.resetNormalSort();
  1192. }
  1193. },
  1194. onTopBillsNodeCheck: function (event, treeId, treeNode) {
  1195. let me = preHandleSortObj;
  1196. if (treeNode.checked) {
  1197. if (
  1198. preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES].indexOf(
  1199. treeNode.Value
  1200. ) < 0
  1201. ) {
  1202. preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES].push(
  1203. treeNode.Value
  1204. );
  1205. }
  1206. } else {
  1207. let idx = preHandleObj.currentNode[
  1208. JV.PROP_FILTER_TOP_BILLS_NODES
  1209. ].indexOf(treeNode.Value);
  1210. if (idx >= 0) {
  1211. preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES].splice(idx, 1);
  1212. }
  1213. }
  1214. },
  1215. onOtherBillsNodeCheck: function (event, treeId, treeNode) {
  1216. let me = preHandleSortObj;
  1217. if (treeNode.checked) {
  1218. if (
  1219. preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES].indexOf(
  1220. treeNode.Value
  1221. ) < 0
  1222. ) {
  1223. preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES].push(
  1224. treeNode.Value
  1225. );
  1226. }
  1227. } else {
  1228. let idx = preHandleObj.currentNode[
  1229. JV.PROP_FILTER_OTHER_BILLS_NODES
  1230. ].indexOf(treeNode.Value);
  1231. if (idx >= 0) {
  1232. preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES].splice(
  1233. idx,
  1234. 1
  1235. );
  1236. }
  1237. }
  1238. },
  1239. resetParentSort: function () {
  1240. let me = preHandleSortObj;
  1241. let nodes = me.parentTreeObj.getCheckedNodes();
  1242. let sortKeys = [];
  1243. for (let node of nodes) {
  1244. sortKeys.push(node.Key);
  1245. }
  1246. preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][
  1247. JV.PROP_PARENT_SORT_KEYS
  1248. ] = sortKeys;
  1249. },
  1250. resetChildSort: function () {
  1251. let me = preHandleSortObj;
  1252. let nodes = me.childTreeObj.getCheckedNodes();
  1253. let sortKeys = [];
  1254. for (let node of nodes) {
  1255. sortKeys.push(node.Key);
  1256. }
  1257. preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][
  1258. JV.PROP_CHILD_SORT_KEYS
  1259. ] = sortKeys;
  1260. },
  1261. resetNormalSort: function () {
  1262. let me = preHandleSortObj;
  1263. let nodes = me.normalTreeObj.getCheckedNodes();
  1264. let normalSortKeys = [];
  1265. for (let node of nodes) {
  1266. let keyObj = { key: node.Key, order: node.Order };
  1267. normalSortKeys.push(keyObj);
  1268. }
  1269. preHandleObj.currentNode[JV.PROP_SORT_KEYS] = normalSortKeys;
  1270. },
  1271. addDiyDom: function (treeId, treeNode) {
  1272. let aObj = $("#" + treeNode.tId + IDMark_A);
  1273. let editStr =
  1274. "<select class='selDemo' id='diySelect_" +
  1275. treeNode.tId +
  1276. "'><option value='ascend'>升序 </option><option value='descend'>降序 </option></select>";
  1277. aObj.after(editStr);
  1278. let sel = $("#diySelect_" + treeNode.tId);
  1279. if (sel) {
  1280. sel.bind("change", function () {
  1281. treeNode.Order = sel[0].value;
  1282. preHandleSortObj.resetNormalSort();
  1283. });
  1284. }
  1285. },
  1286. onSortTypeChange: function (dom) {
  1287. //排序类型的选择/更改
  1288. let me = preHandleObj;
  1289. me.hide_all_dom();
  1290. $("#div_pre_handle_data")[0].style.display = "";
  1291. $("#div_sort_type")[0].style.display = "";
  1292. let data_dom = $("#select_mapping_data")[0];
  1293. if (dom.selectedIndex === 2) {
  1294. $("#div_sort_type_according_to_parent")[0].style.display = "";
  1295. $("#div_sort_type_parent_data")[0].style.display = "";
  1296. preHandleSortObj.parentTreeObj = $.fn.zTree.init(
  1297. $("#parent_sorting_keys"),
  1298. sortingKeysSetting,
  1299. exposed_properties_arr[0]
  1300. );
  1301. preHandleSortObj.childTreeObj = $.fn.zTree.init(
  1302. $("#child_sorting_keys"),
  1303. sortingKeysSetting,
  1304. exposed_properties_arr[data_dom.selectedIndex]
  1305. );
  1306. me.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY] = {};
  1307. me.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_DATA_KEY] =
  1308. pre_handle_data_objects[0];
  1309. me.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_SORT_KEYS] =
  1310. [];
  1311. me.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_CHILD_SORT_KEYS] =
  1312. [];
  1313. me.currentNode[JV.PROP_OTHER_SUB_SORT] = [];
  1314. } else if (dom.selectedIndex === 0) {
  1315. $("#div_sort_type_normal")[0].style.display = "";
  1316. preHandleSortObj.normalTreeObj = $.fn.zTree.init(
  1317. $("#pre_handle_sort_keys_reversed"),
  1318. sortingKeysSetting,
  1319. exposed_properties_arr[data_dom.selectedIndex]
  1320. );
  1321. me.currentNode[JV.PROP_SORT_KEYS] = [];
  1322. } else if (dom.selectedIndex === 1) {
  1323. $("#div_sort_tree")[0].style.display = "";
  1324. preHandleSortObj.normalTreeObj = $.fn.zTree.init(
  1325. $("#bills_top_nodes"),
  1326. sortingTreeSetting,
  1327. fixed_top_bills_nodes
  1328. );
  1329. } else {
  1330. //自定义
  1331. $("#div_sort_self_define")[0].style.display = "";
  1332. $("#selfDefineSort")[0].value = "";
  1333. me.currentNode[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC] = "";
  1334. }
  1335. me.currentNode[JV.PROP_SORT_TYPE] = dom.value;
  1336. },
  1337. changeSelfDefineExpression: function (dom) {
  1338. let me = preHandleObj;
  1339. if (me.currentNode) {
  1340. me.currentNode[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC] = dom.value;
  1341. }
  1342. },
  1343. extractTabFields: function (handleObj) {
  1344. let me = this,
  1345. rst = {};
  1346. rst[JV.PROP_HANDLE_TYPE] = handleObj[JV.PROP_HANDLE_TYPE];
  1347. rst[JV.PROP_DATA_KEY] = handleObj[JV.PROP_DATA_KEY];
  1348. rst[JV.PROP_SORT_TYPE] = handleObj[JV.PROP_SORT_TYPE];
  1349. switch (sort_types.indexOf(handleObj[JV.PROP_SORT_TYPE])) {
  1350. case -1:
  1351. //unknown!
  1352. break;
  1353. case 0:
  1354. //normal
  1355. rst[JV.PROP_SORT_KEYS] = handleObj[JV.PROP_SORT_KEYS];
  1356. break;
  1357. case 1:
  1358. //tree
  1359. rst[JV.PROP_FILTER_TOP_BILLS_NODES] =
  1360. handleObj[JV.PROP_FILTER_TOP_BILLS_NODES];
  1361. rst[JV.PROP_FILTER_OTHER_BILLS_NODES] =
  1362. handleObj[JV.PROP_FILTER_OTHER_BILLS_NODES];
  1363. break;
  1364. case 2:
  1365. //according to parent
  1366. rst[JV.PROP_PARENT_CHILD_SORT_KEY] =
  1367. handleObj[JV.PROP_PARENT_CHILD_SORT_KEY];
  1368. rst[JV.PROP_OTHER_SUB_SORT] = [];
  1369. if (handleObj.items && handleObj.items.length > 0) {
  1370. for (let subSort of handleObj.items) {
  1371. let dtlRst = {};
  1372. me.copyNode(subSort, dtlRst);
  1373. delete dtlRst.Name;
  1374. delete dtlRst.PROP_DATA_KEY;
  1375. rst[JV.PROP_OTHER_SUB_SORT].push(dtlRst);
  1376. dtlRst = null;
  1377. }
  1378. }
  1379. break;
  1380. case 3:
  1381. //self define
  1382. rst[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC] =
  1383. handleObj[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC];
  1384. break;
  1385. default:
  1386. break;
  1387. }
  1388. return rst;
  1389. },
  1390. };
  1391. let preHandleFilterObj = {
  1392. treeObj: null,
  1393. copyNode: function (src, dest) {
  1394. let me = preHandleFilterObj,
  1395. keys = [];
  1396. for (let filterItem of src[JV.PROP_FILTER_KEYS]) {
  1397. let item = { key: filterItem.key };
  1398. item[JV.PROP_FILTER_CONDITION] = filterItem[JV.PROP_FILTER_CONDITION];
  1399. item[JV.PROP_FILTER_COMPARE_VAL] = filterItem[JV.PROP_FILTER_COMPARE_VAL];
  1400. if (filterItem[JV.PROP_FILTER_COMPARE_OBJ]) {
  1401. item[JV.PROP_FILTER_COMPARE_OBJ] =
  1402. filterItem[JV.PROP_FILTER_COMPARE_OBJ];
  1403. item[JV.PROP_FILTER_COMPARE_OBJ_KEY] =
  1404. filterItem[JV.PROP_FILTER_COMPARE_OBJ_KEY];
  1405. }
  1406. keys.push(item);
  1407. }
  1408. dest[JV.PROP_HANDLE_TYPE] = src[JV.PROP_HANDLE_TYPE];
  1409. dest[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY];
  1410. dest[JV.PROP_FILTER_KEYS] = keys;
  1411. if (
  1412. src[JV.PROP_OTHER_SUB_FILTER] &&
  1413. src[JV.PROP_OTHER_SUB_FILTER].length > 0
  1414. ) {
  1415. dest.items = [];
  1416. for (let subFilter of src[JV.PROP_OTHER_SUB_FILTER]) {
  1417. let dtlRst = { Name: "子过滤", Title: "" };
  1418. subFilter[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY];
  1419. me.copyNode(subFilter, dtlRst);
  1420. dtlRst[JV.PROP_HANDLE_TYPE] = src[JV.PROP_HANDLE_TYPE];
  1421. dtlRst[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY];
  1422. dest.items.push(dtlRst);
  1423. }
  1424. }
  1425. },
  1426. refresh_node: function () {
  1427. let me = this;
  1428. $("#div_filter_type")[0].style.display = "";
  1429. if (preHandleObj.currentNode) {
  1430. let idx = pre_handle_data_objects.indexOf(
  1431. preHandleObj.currentNode[JV.PROP_DATA_KEY]
  1432. );
  1433. me.treeObj = $.fn.zTree.init(
  1434. $("#pre_handle_filter_keys_reversed"),
  1435. filterKeysSetting,
  1436. exposed_properties_arr[idx]
  1437. );
  1438. let nodes = me.treeObj.getNodes();
  1439. for (let filterItem of preHandleObj.currentNode[JV.PROP_FILTER_KEYS]) {
  1440. for (let keyNode of nodes) {
  1441. if (filterItem.key === keyNode.Key) {
  1442. me.treeObj.checkNode(keyNode, true, false, false);
  1443. //and then others...
  1444. //过滤条件
  1445. keyNode[JV.PROP_FILTER_CONDITION] =
  1446. filterItem[JV.PROP_FILTER_CONDITION];
  1447. if (keyNode.isBoolean) {
  1448. keyNode[JV.PROP_FILTER_COMPARE_VAL] =
  1449. filterItem[JV.PROP_FILTER_COMPARE_VAL];
  1450. $("#diyCheck_" + keyNode.tId)[0].checked =
  1451. keyNode["booleanOptions"].indexOf(
  1452. filterItem["compareValue"]
  1453. ) === 0;
  1454. } else if (keyNode.hasOwnProperty("individualType")) {
  1455. $("#diySelect_" + keyNode.tId)[0].selectedIndex =
  1456. condition_types.indexOf(filterItem[JV.PROP_FILTER_CONDITION]);
  1457. //条件值
  1458. keyNode[JV.PROP_FILTER_COMPARE_VAL] =
  1459. filterItem[JV.PROP_FILTER_COMPARE_VAL];
  1460. $("#diyInput_" + keyNode.tId)[0].value =
  1461. filterItem[JV.PROP_FILTER_COMPARE_VAL];
  1462. for (let idx = 0; idx < keyNode["individualType"].length; idx++) {
  1463. let idType = keyNode["individualType"][idx];
  1464. if (
  1465. idType.Value.toString() ===
  1466. filterItem[JV.PROP_FILTER_COMPARE_VAL].toString()
  1467. ) {
  1468. $("#diyDataDetailSelect_" + keyNode.tId)[0].selectedIndex =
  1469. idx;
  1470. break;
  1471. }
  1472. }
  1473. } else {
  1474. $("#diySelect_" + keyNode.tId)[0].selectedIndex =
  1475. condition_types.indexOf(filterItem[JV.PROP_FILTER_CONDITION]);
  1476. //条件值
  1477. keyNode[JV.PROP_FILTER_COMPARE_VAL] =
  1478. filterItem[JV.PROP_FILTER_COMPARE_VAL];
  1479. $("#diyInput_" + keyNode.tId)[0].value =
  1480. filterItem[JV.PROP_FILTER_COMPARE_VAL];
  1481. //其他关联业务数据对象
  1482. if (filterItem[JV.PROP_FILTER_COMPARE_OBJ]) {
  1483. let cmpObjDom = $("#diyDataSelect_" + keyNode.tId)[0];
  1484. keyNode[JV.PROP_FILTER_COMPARE_OBJ] =
  1485. filterItem[JV.PROP_FILTER_COMPARE_OBJ];
  1486. let idx = pre_handle_data_objects.indexOf(
  1487. filterItem[JV.PROP_FILTER_COMPARE_OBJ]
  1488. );
  1489. cmpObjDom.selectedIndex = idx + 1;
  1490. me.private_setup_compare_obj(cmpObjDom);
  1491. let cmpObjIdDom = $("#diyDataDetailSelect_" + keyNode.tId)[0];
  1492. for (let i = 0; i < cmpObjIdDom.children.length; i++) {
  1493. let option = cmpObjIdDom.children[i];
  1494. if (
  1495. option.value === filterItem[JV.PROP_FILTER_COMPARE_OBJ_KEY]
  1496. ) {
  1497. keyNode[JV.PROP_FILTER_COMPARE_OBJ_KEY] =
  1498. filterItem[JV.PROP_FILTER_COMPARE_OBJ_KEY];
  1499. cmpObjIdDom.selectedIndex = i;
  1500. break;
  1501. }
  1502. }
  1503. }
  1504. }
  1505. break;
  1506. }
  1507. }
  1508. }
  1509. }
  1510. },
  1511. onCheck: function (event, treeId, treeNode) {
  1512. let me = preHandleFilterObj;
  1513. me.resetFilter();
  1514. },
  1515. resetFilter: function () {
  1516. let me = this;
  1517. let nodes = me.treeObj.getCheckedNodes();
  1518. let normalSortKeys = [];
  1519. for (let node of nodes) {
  1520. let keyObj = { key: node.Key };
  1521. if (!node[JV.PROP_FILTER_CONDITION]) {
  1522. node[JV.PROP_FILTER_CONDITION] = "==";
  1523. }
  1524. keyObj[JV.PROP_FILTER_CONDITION] = node[JV.PROP_FILTER_CONDITION];
  1525. keyObj[JV.PROP_FILTER_COMPARE_VAL] = node[JV.PROP_FILTER_COMPARE_VAL];
  1526. if (node[JV.PROP_FILTER_COMPARE_OBJ]) {
  1527. keyObj[JV.PROP_FILTER_COMPARE_OBJ] = node[JV.PROP_FILTER_COMPARE_OBJ];
  1528. keyObj[JV.PROP_FILTER_COMPARE_OBJ_KEY] =
  1529. node[JV.PROP_FILTER_COMPARE_OBJ_KEY];
  1530. }
  1531. normalSortKeys.push(keyObj);
  1532. }
  1533. preHandleObj.currentNode[JV.PROP_FILTER_KEYS] = normalSortKeys;
  1534. },
  1535. build_filter_handle_data_selection_str: function (treeId, treeNode) {
  1536. let rst = [];
  1537. rst.push(
  1538. "<select class='selDemo' id='diyDataSelect_" + treeNode.tId + "'>"
  1539. );
  1540. rst.push("<option value='empty'>无</option>");
  1541. for (let i = 0; i < pre_handle_data_objects.length; i++) {
  1542. rst.push(
  1543. "<option value='" +
  1544. pre_handle_data_objects[i] +
  1545. "'>" +
  1546. pre_handle_data_objects_name[i] +
  1547. "</option>"
  1548. );
  1549. }
  1550. rst.push("</select>");
  1551. return rst.join("");
  1552. },
  1553. build_filter_handle_data_detail_selection_str: function (treeId, treeNode) {
  1554. let rst = [];
  1555. rst.push(
  1556. "<select class='selDemo' id='diyDataDetailSelect_" + treeNode.tId + "'>"
  1557. );
  1558. rst.push("</select>");
  1559. return rst.join("");
  1560. },
  1561. build_individual_filter_selection_str: function (individualTypes, treeNode) {
  1562. let rst = [];
  1563. rst.push(
  1564. "<select class='selDemo' id='diyDataDetailSelect_" + treeNode.tId + "'>"
  1565. );
  1566. for (let i = 0; i < individualTypes.length; i++) {
  1567. rst.push(
  1568. "<option value='" +
  1569. individualTypes[i].Value +
  1570. "'>" +
  1571. individualTypes[i].Name +
  1572. "</option>"
  1573. );
  1574. }
  1575. rst.push("</select>");
  1576. return rst.join("");
  1577. },
  1578. addDiyDom: function (treeId, treeNode) {
  1579. let me = preHandleFilterObj;
  1580. let aObj = $("#" + treeNode.tId + IDMark_A);
  1581. if (treeNode.hasOwnProperty("isBoolean")) {
  1582. let checkStr =
  1583. "<input type='checkbox' id='diyCheck_" + treeNode.tId + "' />";
  1584. aObj.after(checkStr);
  1585. let sel = $("#diyCheck_" + treeNode.tId);
  1586. if (sel) {
  1587. sel.bind("change", me.filterConditionCheck);
  1588. }
  1589. } else if (treeNode.hasOwnProperty("individualType")) {
  1590. let dataDtlSelStr = me.build_individual_filter_selection_str(
  1591. treeNode.individualType,
  1592. treeNode
  1593. );
  1594. aObj.after(dataDtlSelStr);
  1595. let editStr =
  1596. "<input type='text' id='diyInput_" + treeNode.tId + "' width='10'/>";
  1597. aObj.after(editStr);
  1598. let selStr =
  1599. "<select class='selDemo' id='diySelect_" +
  1600. treeNode.tId +
  1601. "'><option value='=='>等于</option><option value='==='>全等于</option><option value='>'>大于</option><option value='>='>大于等于</option><option value='<'>小于</option><option value='<='>小于等于</option><option value='!='>不等于</option><option value='in'>在</option><option value='not in'>不在</option></select>";
  1602. aObj.after(selStr);
  1603. let sel = $("#diySelect_" + treeNode.tId);
  1604. if (sel) {
  1605. sel.bind("change", me.filterConditionChange);
  1606. }
  1607. sel = $("#diyInput_" + treeNode.tId);
  1608. if (sel) {
  1609. sel.bind("change", me.filterCompareValChange);
  1610. }
  1611. sel = $("#diyDataDetailSelect_" + treeNode.tId);
  1612. if (sel) {
  1613. sel.bind("change", me.filterIndividualCompareObjKeyChange);
  1614. }
  1615. } else {
  1616. //注意:这是后面的DOM先生成
  1617. let dataDtlSelStr = me.build_filter_handle_data_detail_selection_str(
  1618. treeId,
  1619. treeNode
  1620. );
  1621. aObj.after(dataDtlSelStr);
  1622. let dataSelStr = me.build_filter_handle_data_selection_str(
  1623. treeId,
  1624. treeNode
  1625. );
  1626. aObj.after(dataSelStr);
  1627. let editStr =
  1628. "<input type='text' id='diyInput_" + treeNode.tId + "' width='10'/>";
  1629. aObj.after(editStr);
  1630. let selStr =
  1631. "<select class='selDemo' id='diySelect_" +
  1632. treeNode.tId +
  1633. "'><option value='=='>等于</option><option value='==='>全等于</option><option value='>'>大于</option><option value='>='>大于等于</option><option value='<'>小于</option><option value='<='>小于等于</option><option value='!='>不等于</option><option value='in'>在</option><option value='not in'>不在</option></select>";
  1634. aObj.after(selStr);
  1635. let sel = $("#diySelect_" + treeNode.tId);
  1636. if (sel) {
  1637. sel.bind("change", me.filterConditionChange);
  1638. }
  1639. sel = $("#diyInput_" + treeNode.tId);
  1640. if (sel) {
  1641. sel.bind("change", me.filterCompareValChange);
  1642. }
  1643. sel = $("#diyDataSelect_" + treeNode.tId);
  1644. if (sel) {
  1645. sel.bind("change", me.filterCompareObjChange);
  1646. }
  1647. sel = $("#diyDataDetailSelect_" + treeNode.tId);
  1648. if (sel) {
  1649. sel.bind("change", me.filterCompareObjKeyChange);
  1650. }
  1651. }
  1652. },
  1653. filterCompareValChange(event) {
  1654. let me = preHandleFilterObj,
  1655. sel = event.currentTarget,
  1656. tId = sel.id.slice(9);
  1657. let node = me.treeObj.getNodeByTId(tId);
  1658. node[JV.PROP_FILTER_COMPARE_VAL] = sel.value;
  1659. me.resetFilter();
  1660. },
  1661. filterConditionCheck: function (event) {
  1662. let me = preHandleFilterObj,
  1663. sel = event.currentTarget,
  1664. tId = sel.id.slice(9);
  1665. let node = me.treeObj.getNodeByTId(tId);
  1666. node[JV.PROP_FILTER_CONDITION] = "===";
  1667. if (sel.checked === true) {
  1668. node[JV.PROP_FILTER_COMPARE_VAL] = node.booleanOptions[0];
  1669. } else {
  1670. node[JV.PROP_FILTER_COMPARE_VAL] = node.booleanOptions[1];
  1671. }
  1672. //注:这里虽然是boolean选项,但实际有可能是0,1的选择(非true,false),所以需要设置node节点的booleanOptions
  1673. me.resetFilter();
  1674. },
  1675. filterConditionChange: function (event) {
  1676. let me = preHandleFilterObj,
  1677. sel = event.currentTarget,
  1678. tId = sel.id.slice(10);
  1679. let node = me.treeObj.getNodeByTId(tId);
  1680. node[JV.PROP_FILTER_CONDITION] = sel.value;
  1681. me.resetFilter();
  1682. },
  1683. private_setup_compare_obj: function (dom) {
  1684. let me = this,
  1685. sel = dom,
  1686. tId = sel.id.slice(14);
  1687. let node = me.treeObj.getNodeByTId(tId);
  1688. node[JV.PROP_FILTER_COMPARE_OBJ] = sel.value;
  1689. let idx = pre_handle_data_objects.indexOf(sel.value);
  1690. let dtlKey = "diyDataDetailSelect_" + tId;
  1691. let dtlSel = document.getElementById(dtlKey);
  1692. dtlSel.length = 0;
  1693. if (idx >= 0) {
  1694. let jdtlSel = $("#" + dtlKey);
  1695. for (let item of exposed_properties_arr[idx]) {
  1696. jdtlSel.append(
  1697. "<option value='" + item.Key + "'>" + item.Name + "</option>"
  1698. );
  1699. }
  1700. node[JV.PROP_FILTER_COMPARE_OBJ_KEY] = sel.value;
  1701. } else {
  1702. //清除所有key选项
  1703. node[JV.PROP_FILTER_COMPARE_OBJ_KEY] = null;
  1704. }
  1705. },
  1706. filterCompareObjChange: function (event) {
  1707. let me = preHandleFilterObj,
  1708. sel = event.currentTarget;
  1709. me.private_setup_compare_obj(sel);
  1710. me.resetFilter();
  1711. },
  1712. filterIndividualCompareObjKeyChange: function (event) {
  1713. let me = preHandleFilterObj,
  1714. sel = event.currentTarget,
  1715. tId = sel.id.slice(20);
  1716. let inTxt = $("#diyInput_" + tId);
  1717. if (inTxt) {
  1718. inTxt[0].value = sel.value;
  1719. }
  1720. let node = me.treeObj.getNodeByTId(tId);
  1721. node[JV.PROP_FILTER_COMPARE_VAL] = sel.value;
  1722. me.resetFilter();
  1723. },
  1724. filterCompareObjKeyChange: function (event) {
  1725. let me = preHandleFilterObj,
  1726. sel = event.currentTarget,
  1727. tId = sel.id.slice(20);
  1728. let node = me.treeObj.getNodeByTId(tId);
  1729. node[JV.PROP_FILTER_COMPARE_OBJ_KEY] = sel.value;
  1730. me.resetFilter();
  1731. },
  1732. extractTabFields: function (handleObj) {
  1733. let me = preHandleFilterObj,
  1734. rst = {};
  1735. me.copyNode(handleObj, rst);
  1736. rst[JV.PROP_OTHER_SUB_FILTER] = [];
  1737. let private_extract_other_sub_filter = function (
  1738. parentFilter,
  1739. currentFilterNode
  1740. ) {
  1741. let dtlRst = {};
  1742. me.copyNode(currentFilterNode, dtlRst);
  1743. parentFilter[JV.PROP_OTHER_SUB_FILTER].push(dtlRst);
  1744. if (currentFilterNode.items && currentFilterNode.items.length > 0) {
  1745. dtlRst[JV.PROP_OTHER_SUB_FILTER] = [];
  1746. for (let subFilterNode of currentFilterNode.items) {
  1747. private_extract_other_sub_filter(dtlRst, subFilterNode);
  1748. }
  1749. }
  1750. delete dtlRst.Name;
  1751. delete dtlRst[JV.PROP_DATA_KEY];
  1752. dtlRst = null;
  1753. };
  1754. if (handleObj.items && handleObj.items.length > 0) {
  1755. for (let subFilter of handleObj.items) {
  1756. private_extract_other_sub_filter(rst, subFilter);
  1757. }
  1758. }
  1759. return rst;
  1760. },
  1761. };
  1762. let preHandleBillDataMoveObj = {
  1763. copyNode: function (src, dest) {
  1764. dest[JV.PROP_HANDLE_TYPE] = src[JV.PROP_HANDLE_TYPE];
  1765. dest[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY];
  1766. },
  1767. refresh_node: function () {
  1768. $("#div_bills_data_move_type")[0].style.display = "";
  1769. if (preHandleObj.currentNode) {
  1770. }
  1771. },
  1772. extractTabFields: function (handleObj) {
  1773. let me = preHandleBillDataMoveObj,
  1774. rst = {};
  1775. me.copyNode(handleObj, rst);
  1776. return rst;
  1777. },
  1778. };
  1779. let preHandleSummaryObj = {
  1780. copyNode: function (src, dest) {
  1781. //
  1782. },
  1783. refresh_node: function () {
  1784. $("#div_summary_type")[0].style.display = "";
  1785. if (preHandleObj.currentNode) {
  1786. }
  1787. },
  1788. extractTabFields: function (handleObj) {
  1789. let rst = {};
  1790. //
  1791. return rst;
  1792. },
  1793. };
  1794. let preHandleAdjustObj = {
  1795. copyNode: function (src, dest) {
  1796. //
  1797. },
  1798. refresh_node: function () {
  1799. $("#div_adjust_type")[0].style.display = "";
  1800. if (preHandleObj.currentNode) {
  1801. }
  1802. },
  1803. extractTabFields: function (handleObj) {
  1804. let rst = {};
  1805. //
  1806. return rst;
  1807. },
  1808. };
  1809. let preHandleAddDummyObj = {
  1810. copyNode: function (src, dest) {
  1811. //
  1812. },
  1813. refresh_node: function () {
  1814. $("#div_add_dummy_type")[0].style.display = "";
  1815. if (preHandleObj.currentNode) {
  1816. }
  1817. },
  1818. extractTabFields: function (handleObj) {
  1819. let rst = {};
  1820. //
  1821. return rst;
  1822. },
  1823. };
  1824. let preHandleQuantitiesBillsSortObj = {
  1825. copyNode: function (src, dest) {
  1826. dest[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE] =
  1827. src.billSortType;
  1828. dest[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE] =
  1829. src.billSortData;
  1830. },
  1831. refresh_node: function () {
  1832. $("#div_quantities_bills_sort_bar")[0].style.display = "";
  1833. if (preHandleObj.currentNode) {
  1834. $("#select_quantities_bills_sort_types")[0].value =
  1835. preHandleObj.currentNode[
  1836. JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE
  1837. ] || "all";
  1838. $("#select_quantities_bills_types")[0].value =
  1839. preHandleObj.currentNode[
  1840. JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE
  1841. ] || "bills";
  1842. }
  1843. },
  1844. extractTabFields: function (handleObj) {
  1845. let me = preHandleQuantitiesBillsSortObj,
  1846. rst = {};
  1847. me.copyNode(handleObj, rst);
  1848. rst = {
  1849. 预处理类型: "转化工程量清单",
  1850. 映射数据对象: "bills",
  1851. billSortType:
  1852. handleObj[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE],
  1853. billSortData:
  1854. handleObj[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE],
  1855. };
  1856. return rst;
  1857. },
  1858. onQuantitiesBillsSortTypeChange: function (dom) {
  1859. // 工程量清单排序类型
  1860. let me = preHandleObj;
  1861. me.currentNode[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE] =
  1862. dom.value;
  1863. },
  1864. onQuantitiesBillsTypesChange: function (dom) {
  1865. // 工程量清单排序对象类型
  1866. let me = preHandleObj;
  1867. me.currentNode[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE] =
  1868. dom.value;
  1869. },
  1870. };
  1871. let preHandleFXGLJObj = {
  1872. copyNode: function (src, dest) {
  1873. //
  1874. },
  1875. refresh_node: function () {
  1876. $("#div_summary_type")[0].style.display = "";
  1877. if (preHandleObj.currentNode) {
  1878. }
  1879. },
  1880. extractTabFields: function (handleObj) {
  1881. let rst = {};
  1882. //
  1883. return rst;
  1884. },
  1885. };