| 
					
				 | 
			
			
				@@ -8,23 +8,23 @@ const pre_handle_data_objects = ["bills", "ration", "ration_glj", "projectGLJ"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const pre_handle_data_objects_name = ["清单", "定额", "定额人材机", "项目人材机"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //供货方式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fixed_supply_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "自行采购(0)", Title: "", Value: 0}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "部分甲供(1)", Title: "", Value: 1}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "完全甲供(2)", Title: "", Value: 2}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "甲定乙供(3)", Title: "", Value: 3} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "自行采购(0)", Title: "", Value: 0 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "部分甲供(1)", Title: "", Value: 1 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "完全甲供(2)", Title: "", Value: 2 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "甲定乙供(3)", Title: "", Value: 3 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //三材类别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fixed_material_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "钢材(1)", Title: "", Value: 1}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "钢筋(2)", Title: "", Value: 2}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "木材(3)", Title: "", Value: 3}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "水泥(4)", Title: "", Value: 4}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "标准砖(5)", Title: "", Value: 5} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "钢材(1)", Title: "", Value: 1 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "钢筋(2)", Title: "", Value: 2 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "木材(3)", Title: "", Value: 3 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "水泥(4)", Title: "", Value: 4 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "标准砖(5)", Title: "", Value: 5 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //工料机来源 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fixed_glj_from_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "标准(std)", Title: "", Value: 'std'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "补充(cpt)", Title: "", Value: 'cpt'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "标准(std)", Title: "", Value: 'std' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "补充(cpt)", Title: "", Value: 'cpt' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // const fixed_glj_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //     {Name: "人工(1)", Title: "", Value: 1}, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -54,31 +54,31 @@ const fixed_glj_from_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //     {Name: "一般风险费(8)", Title: "", Value: 8} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fixed_glj_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "人工(1)", Title: "", Value: 1}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "普通材料(201)", Title: "", Value: 201}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "混凝土(202)", Title: "", Value: 202}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "砂浆(203)", Title: "", Value: 203}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "配合比(204)", Title: "", Value: 204}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "商品混凝土(205)", Title: "", Value: 205}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "商品砂浆(206)", Title: "", Value: 206}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "其他材料(207)", Title: "", Value: 207}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "机械台班(301)", Title: "", Value: 301}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "机械组成物(302)", Title: "", Value: 302}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "机上人工(303)", Value: 303}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "仪器仪表(304)", Value: 304}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "燃料动力费(305)", Value: 305}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "折旧费(306)", Value: 306}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "检修费(307)", Value: 307}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "维护费(308)", Value: 308}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "安拆费及场外运费(309)", Value: 309}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "校验费(310)", Value: 310}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "其他费用(311)", Value: 311}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "其他施工机具使用费(312)", Value: 312}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "主材(4)", Title: "", Value: 4}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "设备(5)", Title: "", Value: 5}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "企业管理费(6)", Title: "", Value: 6}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "利润(7)", Title: "", Value: 7}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "一般风险费(8)", Title: "", Value: 8} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "人工(1)", Title: "", Value: 1 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "普通材料(201)", Title: "", Value: 201 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "混凝土(202)", Title: "", Value: 202 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "砂浆(203)", Title: "", Value: 203 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "配合比(204)", Title: "", Value: 204 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "商品混凝土(205)", Title: "", Value: 205 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "商品砂浆(206)", Title: "", Value: 206 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "其他材料(207)", Title: "", Value: 207 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "机械台班(301)", Title: "", Value: 301 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "机械组成物(302)", Title: "", Value: 302 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "机上人工(303)", Value: 303 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "仪器仪表(304)", Value: 304 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "燃料动力费(305)", Value: 305 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "折旧费(306)", Value: 306 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "检修费(307)", Value: 307 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "维护费(308)", Value: 308 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "安拆费及场外运费(309)", Value: 309 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "校验费(310)", Value: 310 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "其他费用(311)", Value: 311 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "其他施工机具使用费(312)", Value: 312 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "主材(4)", Title: "", Value: 4 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "设备(5)", Title: "", Value: 5 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "企业管理费(6)", Title: "", Value: 6 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "利润(7)", Title: "", Value: 7 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "一般风险费(8)", Title: "", Value: 8 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // const fixed_top_bills_nodes = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //     {Name: "分部分项工程(1)", Title: "", Value: 1} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -89,14 +89,14 @@ const fixed_glj_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //     ,{Name: "工程造价(19)", Title: "", Value: 19} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fixed_top_bills_nodes = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "建筑安装工程费(1)", Title: "", Value: 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "土地使用及拆迁补偿费(2)", Title: "", Value: 2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "养护工程其他费用(3)", Title: "", Value: 3} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "预备费(4)", Title: "", Value: 4} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "一二三四部分合计(7)", Title: "", Value: 7} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "贷款利息(8)", Title: "", Value: 8} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "总造价(9)", Title: "", Value: 9} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "第100章至700章清单(19)", Title: "", Value: 19} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "建筑安装工程费(1)", Title: "", Value: 1 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "土地使用及拆迁补偿费(2)", Title: "", Value: 2 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "养护工程其他费用(3)", Title: "", Value: 3 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "预备费(4)", Title: "", Value: 4 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "一二三四部分合计(7)", Title: "", Value: 7 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "贷款利息(8)", Title: "", Value: 8 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "总造价(9)", Title: "", Value: 9 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "第100章至700章清单(19)", Title: "", Value: 19 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // const fixed_other_bills_types = [ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -116,27 +116,27 @@ const fixed_top_bills_nodes = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //     ,{Name: "增值税(20)", Title: "", Value: 20} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fixed_other_bills_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "基本预备费(5)", Title: "", Value: 5} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "价差预备费(6)", Title: "", Value: 6} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "设备购置费(10)", Title: "", Value: 10} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "专项费用(11)", Title: "", Value: 11} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "施工场地建设费(12)", Title: "", Value: 12} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "养护单位(业主)管理费(13)", Title: "", Value: 13} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "信息化费", Title: "", Value: 14} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "工程监理费(15)", Title: "", Value: 15} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "设计文件审查费(16)", Title: "", Value: 16} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "勘察设计费(17)", Title: "", Value: 17} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "招标代理及标底编制费(18)", Title: "", Value: 18} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "第100章至700章清单(19)", Title: "", Value: 19} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "专项暂定合计(20)", Title: "", Value: 20} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "清单合计扣除专项暂定合计(21)", Title: "", Value: 21} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "计日工(22)", Title: "", Value: 22} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "劳务(23)", Title: "", Value: 23} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "材料(24)", Title: "", Value: 24} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "施工机械(25)", Title: "", Value: 25} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "暂列金额(26)", Title: "", Value: 26} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "安全生产费(27)", Title: "", Value: 27} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "100章清单(28)", Title: "", Value: 28} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "基本预备费(5)", Title: "", Value: 5 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "价差预备费(6)", Title: "", Value: 6 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "设备购置费(10)", Title: "", Value: 10 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "专项费用(11)", Title: "", Value: 11 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "施工场地建设费(12)", Title: "", Value: 12 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "养护单位(业主)管理费(13)", Title: "", Value: 13 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "信息化费", Title: "", Value: 14 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "工程监理费(15)", Title: "", Value: 15 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "设计文件审查费(16)", Title: "", Value: 16 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "勘察设计费(17)", Title: "", Value: 17 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "招标代理及标底编制费(18)", Title: "", Value: 18 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "第100章至700章清单(19)", Title: "", Value: 19 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "专项暂定合计(20)", Title: "", Value: 20 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "清单合计扣除专项暂定合计(21)", Title: "", Value: 21 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "计日工(22)", Title: "", Value: 22 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "劳务(23)", Title: "", Value: 23 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "材料(24)", Title: "", Value: 24 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "施工机械(25)", Title: "", Value: 25 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "暂列金额(26)", Title: "", Value: 26 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "安全生产费(27)", Title: "", Value: 27 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "100章清单(28)", Title: "", Value: 28 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // const fixed_bills_flags = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //     {Name: "分部分项工程(1)", Title: "", Value: 1}, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -161,90 +161,91 @@ const fixed_other_bills_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //     {Name: "增值税(20)", Title: "", Value: 20} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fixed_bills_flags = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "建筑安装工程费(1)", Title: "", Value: 1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "土地使用及拆迁补偿费(2)", Title: "", Value: 2} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "养护工程其他费用(3)", Title: "", Value: 3} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "预备费(4)", Title: "", Value: 4} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "基本预备费(5)", Title: "", Value: 5} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "价差预备费(6)", Title: "", Value: 6} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "一二三四部分合计(7)", Title: "", Value: 7} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "贷款利息(8)", Title: "", Value: 8} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "总造价(9)", Title: "", Value: 9} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "设备购置费(10)", Title: "", Value: 10} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "专项费用(11)", Title: "", Value: 11} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "施工场地建设费(12)", Title: "", Value: 12} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "养护单位(业主)管理费(13)", Title: "", Value: 13} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "信息化费", Title: "", Value: 14} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "工程监理费(15)", Title: "", Value: 15} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "设计文件审查费(16)", Title: "", Value: 16} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "勘察设计费(17)", Title: "", Value: 17} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "招标代理及标底编制费(18)", Title: "", Value: 18} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "第100章至700章清单(19)", Title: "", Value: 19} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "专项暂定合计(20)", Title: "", Value: 20} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "清单合计扣除专项暂定合计(21)", Title: "", Value: 21} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "计日工(22)", Title: "", Value: 22} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "劳务(23)", Title: "", Value: 23} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "材料(24)", Title: "", Value: 24} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "施工机械(25)", Title: "", Value: 25} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "暂列金额(26)", Title: "", Value: 26} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "安全生产费(27)", Title: "", Value: 27} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "100章清单(28)", Title: "", Value: 28} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "建筑安装工程费(1)", Title: "", Value: 1 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "土地使用及拆迁补偿费(2)", Title: "", Value: 2 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "养护工程其他费用(3)", Title: "", Value: 3 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "预备费(4)", Title: "", Value: 4 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "基本预备费(5)", Title: "", Value: 5 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "价差预备费(6)", Title: "", Value: 6 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "一二三四部分合计(7)", Title: "", Value: 7 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "贷款利息(8)", Title: "", Value: 8 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "总造价(9)", Title: "", Value: 9 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "设备购置费(10)", Title: "", Value: 10 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "专项费用(11)", Title: "", Value: 11 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "施工场地建设费(12)", Title: "", Value: 12 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "养护单位(业主)管理费(13)", Title: "", Value: 13 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "信息化费", Title: "", Value: 14 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "工程监理费(15)", Title: "", Value: 15 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "设计文件审查费(16)", Title: "", Value: 16 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "勘察设计费(17)", Title: "", Value: 17 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "招标代理及标底编制费(18)", Title: "", Value: 18 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "第100章至700章清单(19)", Title: "", Value: 19 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "专项暂定合计(20)", Title: "", Value: 20 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "清单合计扣除专项暂定合计(21)", Title: "", Value: 21 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "计日工(22)", Title: "", Value: 22 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "劳务(23)", Title: "", Value: 23 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "材料(24)", Title: "", Value: 24 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "施工机械(25)", Title: "", Value: 25 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "暂列金额(26)", Title: "", Value: 26 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "安全生产费(27)", Title: "", Value: 27 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "100章清单(28)", Title: "", Value: 28 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fixed_bills_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "大项费用(1)", Title: "", Value: 1}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "分部(2)", Title: "", Value: 2}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "分项(3)", Title: "", Value: 3}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "清单(4)", Title: "", Value: 4}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "补项(5)", Title: "", Value: 5} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "大项费用(1)", Title: "", Value: 1 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "分部(2)", Title: "", Value: 2 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "分项(3)", Title: "", Value: 3 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "清单(4)", Title: "", Value: 4 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "补项(5)", Title: "", Value: 5 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const fixed_bills_special_provisional_types = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "材料", Title: "", Value: "材料"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "工程设备", Title: "", Value: "工程设备"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "专业工程", Title: "", Value: "专业工程"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "材料", Title: "", Value: "材料" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "工程设备", Title: "", Value: "工程设备" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "专业工程", Title: "", Value: "专业工程" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const exposed_bills_properties = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "清单_所属项目ID", Title: "", Key: "projectID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "清单_ID", Title: "", Key: "ID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "顶层父清单_标记", Title: "", Key: "topBillID", Order: "ascend", individualType: fixed_top_bills_nodes} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "清单_层次", Title: "", Key: "treeLevel", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "清单_类别", Title: "", Key: "type", Order: "ascend", individualType: fixed_bills_types} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "清单_标记", Title: "", Key: "flags.flag", Order: "ascend", individualType: fixed_bills_flags} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "清单_顺序号", Title: "", Key: "treeFlatSerialOrder", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "清单_专项类型", Title: "", Key: "specialProvisional", Order: "ascend", individualType: fixed_bills_special_provisional_types} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "清单_所属项目ID", Title: "", Key: "projectID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "清单_ID", Title: "", Key: "ID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "顶层父清单_标记", Title: "", Key: "topBillID", Order: "ascend", individualType: fixed_top_bills_nodes } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "清单_层次", Title: "", Key: "treeLevel", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "清单_类别", Title: "", Key: "type", Order: "ascend", individualType: fixed_bills_types } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "清单_标记", Title: "", Key: "flags.flag", Order: "ascend", individualType: fixed_bills_flags } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "清单_顺序号", Title: "", Key: "treeFlatSerialOrder", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "清单_专项类型", Title: "", Key: "specialProvisional", Order: "ascend", individualType: fixed_bills_special_provisional_types } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const exposed_ration_properties = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "定额_工程内部ID", Title: "", Key: "ID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额_所属项目ID", Title: "", Key: "projectID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额_所属清单ID", Title: "", Key: "billsItemID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额_清单内顺序", Title: "", Key: "serialNo", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额_类型", Title: "", Key: "type", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "定额_工程内部ID", Title: "", Key: "ID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额_所属项目ID", Title: "", Key: "projectID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额_所属清单ID", Title: "", Key: "billsItemID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额_清单内顺序", Title: "", Key: "serialNo", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额_类型", Title: "", Key: "type", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额_工程量", Title: "", Key: "quantity", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const exposed_ration_glj_properties = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "定额人材机_ID", Title: "", Key: "ID"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_项目人材机映射ID", Title: "", Key: "projectGLJID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_所属定额ID", Title: "", Key: "rationID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_所属清单ID", Title: "", Key: "billsItemID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_所属工程ID", Title: "", Key: "projectID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_代码", Title: "", Key: "code", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_类型", Title: "", Key: "type", Order: "ascend", individualType: fixed_glj_types} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_数量", Title: "", Key: "quantity", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_是否暂估", Title: "", Key: "ref_join(projectGLJID,projectGLJ,id).is_evaluate", Order: "ascend", isBoolean: true, booleanOptions: [1,0]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_是否主要材料", Title: "", Key: "ref_join(projectGLJID,projectGLJ,id).is_main_material", Order: "ascend", isBoolean: true, booleanOptions: [1,0]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_供货方式", Title: "", Key: "ref_join(projectGLJID,projectGLJ,id).supply", Order: "ascend", individualType: fixed_supply_types} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "定额人材机_三材类别", Title: "", Key: "ref_join(projectGLJID,projectGLJ,id).materialType", Order: "ascend", individualType: fixed_material_types} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "定额人材机_ID", Title: "", Key: "ID" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_项目人材机映射ID", Title: "", Key: "projectGLJID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_所属定额ID", Title: "", Key: "rationID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_所属清单ID", Title: "", Key: "billsItemID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_所属工程ID", Title: "", Key: "projectID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_代码", Title: "", Key: "code", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_类型", Title: "", Key: "type", Order: "ascend", individualType: fixed_glj_types } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_数量", Title: "", Key: "quantity", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_是否暂估", Title: "", Key: "ref_join(projectGLJID,projectGLJ,id).is_evaluate", Order: "ascend", isBoolean: true, booleanOptions: [1, 0] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_是否主要材料", Title: "", Key: "ref_join(projectGLJID,projectGLJ,id).is_main_material", Order: "ascend", isBoolean: true, booleanOptions: [1, 0] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_供货方式", Title: "", Key: "ref_join(projectGLJID,projectGLJ,id).supply", Order: "ascend", individualType: fixed_supply_types } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "定额人材机_三材类别", Title: "", Key: "ref_join(projectGLJID,projectGLJ,id).materialType", Order: "ascend", individualType: fixed_material_types } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const exposed_prj_glj_properties = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    {Name: "项目人材机_ID", Title: "", Key: "id"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_所属工程ID", Title: "", Key: "projectID", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_代码", Title: "", Key: "code", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_类型", Title: "", Key: "type", Order: "ascend", individualType: fixed_glj_types} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_数量", Title: "", Key: "quantity", Order: "ascend"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_是否暂估", Title: "", Key: "is_evaluate", Order: "ascend", isBoolean: true, booleanOptions: [1,0]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_是否主要材料", Title: "", Key: "is_main_material", Order: "ascend", isBoolean: true, booleanOptions: [1,0]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_是否材料计算", Title: "", Key: "unit_price.calcMaterial", Order: "ascend", isBoolean: true, booleanOptions: [1,0]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_供货方式", Title: "", Key: "supply", Order: "ascend", individualType: fixed_supply_types} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_三材类别", Title: "", Key: "materialType", Order: "ascend", individualType: fixed_material_types} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ,{Name: "项目人材机_来源", Title: "", Key: "from", Order: "ascend", individualType: fixed_glj_from_types} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { Name: "项目人材机_ID", Title: "", Key: "id" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_所属工程ID", Title: "", Key: "projectID", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_代码", Title: "", Key: "code", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_类型", Title: "", Key: "type", Order: "ascend", individualType: fixed_glj_types } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_数量", Title: "", Key: "quantity", Order: "ascend" } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_是否暂估", Title: "", Key: "is_evaluate", Order: "ascend", isBoolean: true, booleanOptions: [1, 0] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_是否主要材料", Title: "", Key: "is_main_material", Order: "ascend", isBoolean: true, booleanOptions: [1, 0] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_是否材料计算", Title: "", Key: "unit_price.calcMaterial", Order: "ascend", isBoolean: true, booleanOptions: [1, 0] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_供货方式", Title: "", Key: "supply", Order: "ascend", individualType: fixed_supply_types } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_三材类别", Title: "", Key: "materialType", Order: "ascend", individualType: fixed_material_types } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    , { Name: "项目人材机_来源", Title: "", Key: "from", Order: "ascend", individualType: fixed_glj_from_types } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const exposed_properties_arr = [exposed_bills_properties, exposed_ration_properties, exposed_ration_glj_properties, exposed_prj_glj_properties]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -252,15 +253,15 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     treeObj: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     typeTreeObj: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     currentNode: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    iniTree: function(rptTpl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    iniTree: function (rptTpl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.buildData(rptTpl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    buildData: function(rptTpl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buildData: function (rptTpl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this, handles = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (let item of rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let hd = {Name: "预处理环节"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let hd = { Name: "预处理环节" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 me.private_copy_node(item, hd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 me.private_set_title(hd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 hd.Operations = []; //考虑到用户可能会换来换去,这样会有冗余的属性出现 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -269,7 +270,7 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.treeObj = $.fn.zTree.init($("#pre_handle_data_info_reversed"), preHandleSetting, handles); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    build_handle_data_selection: function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    build_handle_data_selection: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let sel = $("#select_mapping_data"), sel2 = $("#select_mapping_data_for_sort_type"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let i = 0; i < pre_handle_data_objects.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sel2.append("<option value='" + pre_handle_data_objects[i] + "'>" + pre_handle_data_objects_name[i] + "</option>"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -278,19 +279,19 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     buildTypeData: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this, types = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        types.push({Name: JV.PROP_HANDLE_TYPE_SORT, Title: ""}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        types.push({Name: JV.PROP_HANDLE_TYPE_FILTER, Title: ""}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        types.push({Name: JV.PROP_HANDLE_TYPE_BILLS_DATA_MOVE, Title: ""}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        types.push({Name: JV.PROP_HANDLE_TYPE_COMPONENT_MOVE, Title: ""}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        types.push({Name: JV.PROP_HANDLE_TYPE_SUM, Title: ""}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        types.push({Name: JV.PROP_HANDLE_TYPE_ADJUST, Title: ""}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        types.push({Name: JV.PROP_HANDLE_TYPE_ADD_DUMMY, Title: ""}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        types.push({ Name: JV.PROP_HANDLE_TYPE_SORT, Title: "" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        types.push({ Name: JV.PROP_HANDLE_TYPE_FILTER, Title: "" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        types.push({ Name: JV.PROP_HANDLE_TYPE_BILLS_DATA_MOVE, Title: "" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        types.push({ Name: JV.PROP_HANDLE_TYPE_COMPONENT_MOVE, Title: "" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        types.push({ Name: JV.PROP_HANDLE_TYPE_SUM, Title: "" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        types.push({ Name: JV.PROP_HANDLE_TYPE_ADJUST, Title: "" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        types.push({ Name: JV.PROP_HANDLE_TYPE_ADD_DUMMY, Title: "" }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // types.push({Name: "纯手工填写", Title: ""}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.typeTreeObj = $.fn.zTree.init($("#pre_handle_type_reversed"), preHandleTypeSetting, types); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        me.setDisabledBandSelect([0,1,2,3,4,5,6]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.setDisabledBandSelect([0, 1, 2, 3, 4, 5, 6]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.build_handle_data_selection(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    setDisabledBandSelect: function(disabledIdxArr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setDisabledBandSelect: function (disabledIdxArr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (me.typeTreeObj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let nodes = me.typeTreeObj.getNodes(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -310,38 +311,38 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         switch (nodeType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case JV.PROP_HANDLE_TYPE_SORT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "排序方式": "normal", "排序键值集":[]}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = { Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "排序方式": "normal", "排序键值集": [] }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case JV.PROP_HANDLE_TYPE_FILTER: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "过滤键值集": []}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = { Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "过滤键值集": [] }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case JV.PROP_HANDLE_TYPE_BILLS_DATA_MOVE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = {Name: "预处理环节", Title: "", "映射数据对象": "ration", "预处理类型": preHandleType}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = { Name: "预处理环节", Title: "", "映射数据对象": "ration", "预处理类型": preHandleType }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case JV.PROP_HANDLE_TYPE_COMPONENT_MOVE: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = {Name: "预处理环节", Title: "", "映射数据对象": "ration", "预处理类型": preHandleType}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = { Name: "预处理环节", Title: "", "映射数据对象": "ration", "预处理类型": preHandleType }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case JV.PROP_HANDLE_TYPE_SUM: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "分组键值集": [], "统计键值集":[]}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = { Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "分组键值集": [], "统计键值集": [] }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case JV.PROP_HANDLE_TYPE_ADJUST: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "数据调整集":[]}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = { Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "数据调整集": [] }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case JV.PROP_HANDLE_TYPE_ADD_DUMMY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "Dummy数据集":[]}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = { Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": preHandleType, "Dummy数据集": [] }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": "排序", "排序方式": "normal", "排序键值集":[]}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = { Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": "排序", "排序方式": "normal", "排序键值集": [] }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    addNewNode: function(nodeType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addNewNode: function (nodeType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this, item = me.createNewNode(nodeType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.private_set_title(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.treeObj.addNodes(null, -1, [item], true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private_change_node_by_type: function(handleType, item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private_change_node_by_type: function (handleType, item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let preHandleType = handleType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!handleType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             preHandleType = JV.PROP_HANDLE_TYPE_SORT; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -377,7 +378,7 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private_copy_node: function(src, dest) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private_copy_node: function (src, dest) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dest[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dest[JV.PROP_HANDLE_TYPE] = src[JV.PROP_HANDLE_TYPE]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -394,7 +395,7 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             preHandleAddDummyObj.copyNode(src, dest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private_set_title: function(node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private_set_title: function (node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let nameStr = node[JV.PROP_NAME], idx = nameStr.indexOf("("); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (idx >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             nameStr = nameStr.slice(0, idx); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -402,7 +403,7 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         node[JV.PROP_NAME] = nameStr + "(" + node[JV.PROP_HANDLE_TYPE] + ")"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         node.Title = "映射数据对象:" + node[JV.PROP_DATA_KEY] + " | " + node[JV.PROP_HANDLE_TYPE]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    refreshByNode: function(treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    refreshByNode: function (treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (me.typeTreeObj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let nodes = me.typeTreeObj.getNodes(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -438,7 +439,7 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    hide_all_dom: function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    hide_all_dom: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $("#div_pre_handle_data")[0].style.display = "none"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $("#div_sort_type")[0].style.display = "none"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $("#div_sort_type_normal")[0].style.display = "none"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -451,15 +452,15 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $("#div_sort_tree")[0].style.display = "none"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $("#div_sort_self_define")[0].style.display = "none"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onPreHandleClick: function(event,treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onPreHandleClick: function (event, treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //点击预处理环节 节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.currentNode = treeNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        me.setDisabledBandSelect([4,5,6]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.setDisabledBandSelect([4, 5, 6]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // me.setDisabledBandSelect([]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.refreshByNode(treeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onTypeClick: function(event,treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onTypeClick: function (event, treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //选择预处理类型(排序、过滤。。。) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (me.currentNode) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -470,7 +471,7 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             me.refreshByNode(me.currentNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onChangeDataMappingObj: function(dom, oprType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onChangeDataMappingObj: function (dom, oprType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //更改(或选择)预处理环节中的 数据依据(就是说报表想预处理什么数据) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (oprType === "top") { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -493,14 +494,14 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onBeforeDrop: function(treeId, treeNodes, targetNode, moveType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onBeforeDrop: function (treeId, treeNodes, targetNode, moveType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (targetNode.level === 0 && moveType !== "inner") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rst = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onBeforeRemove: function(treeId, treeNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onBeforeRemove: function (treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (treeNode.isParent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rst = false; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -509,14 +510,14 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    addHoverDom: function(treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addHoverDom: function (treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleObj, sObj = $("#" + treeNode.tId + "_span"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if ((treeNode.level > 0 && treeNode[JV.PROP_HANDLE_TYPE] !== JV.PROP_HANDLE_TYPE_FILTER) || ($("#addBtn_"+treeNode.tId).length > 0) ) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if ((treeNode.level > 0 && treeNode[JV.PROP_HANDLE_TYPE] !== JV.PROP_HANDLE_TYPE_FILTER) || ($("#addBtn_" + treeNode.tId).length > 0)) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (treeNode[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_SORT && treeNode[JV.PROP_SORT_TYPE] === "accord_to_parent") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子排序' onfocus='this.blur();'></span>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sObj.after(addStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let btn = $("#addBtn_"+treeNode.tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (btn) btn.bind("click", function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let btn = $("#addBtn_" + treeNode.tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (btn) btn.bind("click", function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let newSubNodes = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let newNode = me.createNewNode(treeNode[JV.PROP_HANDLE_TYPE]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 newNode.Name = "子排序"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -530,8 +531,8 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (treeNode[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_FILTER) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子过滤' onfocus='this.blur();'></span>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sObj.after(addStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let btn = $("#addBtn_"+treeNode.tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (btn) btn.bind("click", function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let btn = $("#addBtn_" + treeNode.tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (btn) btn.bind("click", function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let newSubNodes = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let newNode = me.createNewNode(treeNode[JV.PROP_HANDLE_TYPE]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 newNode.Name = "子过滤"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -547,7 +548,7 @@ let preHandleObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     removeHoverDom: function (treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $("#addBtn_"+treeNode.tId).unbind().remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $("#addBtn_" + treeNode.tId).unbind().remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     extractTabFields: function (rptTpl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this, nodes = me.treeObj.getNodes(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -598,16 +599,16 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case -1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //unknown! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 0 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //normal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let keys = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (let sortKeyItem of src[JV.PROP_SORT_KEYS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let item = {key: sortKeyItem.key, order: sortKeyItem.order}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let item = { key: sortKeyItem.key, order: sortKeyItem.order }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     keys.push(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 dest[JV.PROP_SORT_KEYS] = keys; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 1 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //tree 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let billKeys = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (src[JV.PROP_FILTER_TOP_BILLS_NODES] && src[JV.PROP_FILTER_TOP_BILLS_NODES].length > 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -620,7 +621,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 dest[JV.PROP_FILTER_OTHER_BILLS_NODES] = otherBillKeys; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 2 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case 2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //according to parent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 dest[JV.PROP_PARENT_CHILD_SORT_KEY] = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_DATA_KEY] = src[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_DATA_KEY]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -636,14 +637,14 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (src[JV.PROP_OTHER_SUB_SORT] !== null && src[JV.PROP_OTHER_SUB_SORT] !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     dest.items = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (let subSort of src[JV.PROP_OTHER_SUB_SORT]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        let destSubSort = {Name: "子排序"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let destSubSort = { Name: "子排序" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         me.copyNode(subSort, destSubSort); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         destSubSort[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         dest.items.push(destSubSort); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 3 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //self define 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 dest[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC] = src[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -663,7 +664,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 case -1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //unknown! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case 0 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //normal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     $("#div_sort_type_normal")[0].style.display = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     idx = pre_handle_data_objects.indexOf(preHandleObj.currentNode[JV.PROP_DATA_KEY]); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -678,7 +679,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case 1 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //tree 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //tree排序是我们特有的数据结构方式,与数据结构有关,非common用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     $("#div_sort_tree")[0].style.display = ""; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -711,7 +712,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case 2 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case 2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //according to parent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     $("#div_sort_type_according_to_parent")[0].style.display = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     $("#div_sort_type_parent_data")[0].style.display = ""; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -724,7 +725,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     me.childTreeObj = $.fn.zTree.init($("#child_sorting_keys"), sortingKeysSetting, exposed_properties_arr[idx]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     me.checkupNode(preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_CHILD_SORT_KEYS], me.childTreeObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case 3 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                case 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //self define 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     $("#div_sort_self_define")[0].style.display = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     $("#selfDefineSort")[0].value = preHandleObj.currentNode[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -734,7 +735,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    checkupNode: function(keysArr, treeObj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    checkupNode: function (keysArr, treeObj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let nodes = treeObj.getNodes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let key of keysArr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (let node of nodes) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -745,7 +746,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onCheck: function(event,treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onCheck: function (event, treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleSortObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (treeId.indexOf("parent_sorting_keys") >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             me.resetParentSort(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -755,7 +756,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             me.resetNormalSort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onTopBillsNodeCheck: function (event,treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onTopBillsNodeCheck: function (event, treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleSortObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (treeNode.checked) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES].indexOf(treeNode.Value) < 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -768,7 +769,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onOtherBillsNodeCheck: function (event,treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onOtherBillsNodeCheck: function (event, treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleSortObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (treeNode.checked) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES].indexOf(treeNode.Value) < 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -799,29 +800,29 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_CHILD_SORT_KEYS] = sortKeys; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    resetNormalSort: function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    resetNormalSort: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleSortObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let nodes = me.normalTreeObj.getCheckedNodes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let normalSortKeys = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let node of nodes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let keyObj = {key: node.Key, order: node.Order}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let keyObj = { key: node.Key, order: node.Order }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             normalSortKeys.push(keyObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         preHandleObj.currentNode[JV.PROP_SORT_KEYS] = normalSortKeys; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    addDiyDom: function(treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addDiyDom: function (treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let aObj = $("#" + treeNode.tId + IDMark_A); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let editStr = "<select class='selDemo' id='diySelect_" +treeNode.tId+ "'><option value='ascend'>升序 </option><option value='descend'>降序 </option></select>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let editStr = "<select class='selDemo' id='diySelect_" + treeNode.tId + "'><option value='ascend'>升序 </option><option value='descend'>降序 </option></select>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         aObj.after(editStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let sel = $("#diySelect_" + treeNode.tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (sel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sel.bind("change", function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sel.bind("change", function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 treeNode.Order = sel[0].value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 preHandleSortObj.resetNormalSort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onSortTypeChange: function(dom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onSortTypeChange: function (dom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //排序类型的选择/更改 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.hide_all_dom(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -868,16 +869,16 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case -1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //unknown! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 0 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //normal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 rst[JV.PROP_SORT_KEYS] = handleObj[JV.PROP_SORT_KEYS]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 1 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //tree 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 rst[JV.PROP_FILTER_TOP_BILLS_NODES] = handleObj[JV.PROP_FILTER_TOP_BILLS_NODES]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 rst[JV.PROP_FILTER_OTHER_BILLS_NODES] = handleObj[JV.PROP_FILTER_OTHER_BILLS_NODES]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 2 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case 2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //according to parent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 rst[JV.PROP_PARENT_CHILD_SORT_KEY] = handleObj[JV.PROP_PARENT_CHILD_SORT_KEY]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 rst[JV.PROP_OTHER_SUB_SORT] = []; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -892,7 +893,7 @@ let preHandleSortObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case 3 : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //self define 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 rst[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC] = handleObj[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -908,7 +909,7 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     copyNode: function (src, dest) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleFilterObj, keys = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let filterItem of src[JV.PROP_FILTER_KEYS]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let item = {key: filterItem.key}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let item = { key: filterItem.key }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item[JV.PROP_FILTER_CONDITION] = filterItem[JV.PROP_FILTER_CONDITION]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item[JV.PROP_FILTER_COMPARE_VAL] = filterItem[JV.PROP_FILTER_COMPARE_VAL]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (filterItem[JV.PROP_FILTER_COMPARE_OBJ]) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -924,7 +925,7 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (src[JV.PROP_OTHER_SUB_FILTER] && src[JV.PROP_OTHER_SUB_FILTER].length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             dest.items = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (let subFilter of src[JV.PROP_OTHER_SUB_FILTER]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let dtlRst = {Name: "子过滤", Title: ""}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let dtlRst = { Name: "子过滤", Title: "" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 subFilter[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 me.copyNode(subFilter, dtlRst); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 dtlRst[JV.PROP_HANDLE_TYPE] = src[JV.PROP_HANDLE_TYPE]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -991,16 +992,16 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onCheck: function(event,treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onCheck: function (event, treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleFilterObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.resetFilter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    resetFilter: function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    resetFilter: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let nodes = me.treeObj.getCheckedNodes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let normalSortKeys = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let node of nodes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let keyObj = {key: node.Key}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let keyObj = { key: node.Key }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!node[JV.PROP_FILTER_CONDITION]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 node[JV.PROP_FILTER_CONDITION] = "=="; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1014,7 +1015,7 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         preHandleObj.currentNode[JV.PROP_FILTER_KEYS] = normalSortKeys; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    build_filter_handle_data_selection_str: function(treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    build_filter_handle_data_selection_str: function (treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push("<select class='selDemo' id='diyDataSelect_" + treeNode.tId + "'>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push("<option value='empty'>无</option>"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1024,13 +1025,13 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push("</select>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst.join(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    build_filter_handle_data_detail_selection_str: function(treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    build_filter_handle_data_detail_selection_str: function (treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push("<select class='selDemo' id='diyDataDetailSelect_" + treeNode.tId + "'>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push("</select>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst.join(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    build_individual_filter_selection_str: function (individualTypes,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    build_individual_filter_selection_str: function (individualTypes, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push("<select class='selDemo' id='diyDataDetailSelect_" + treeNode.tId + "'>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let i = 0; i < individualTypes.length; i++) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1039,7 +1040,7 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push("</select>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst.join(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    addDiyDom: function(treeId,treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addDiyDom: function (treeId, treeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleFilterObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let aObj = $("#" + treeNode.tId + IDMark_A); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (treeNode.hasOwnProperty("isBoolean")) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1070,9 +1071,9 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //注意:这是后面的DOM先生成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let dataDtlSelStr = me.build_filter_handle_data_detail_selection_str(treeId,treeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let dataDtlSelStr = me.build_filter_handle_data_detail_selection_str(treeId, treeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             aObj.after(dataDtlSelStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let dataSelStr = me.build_filter_handle_data_selection_str(treeId,treeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let dataSelStr = me.build_filter_handle_data_selection_str(treeId, treeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             aObj.after(dataSelStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let editStr = "<input type='text' id='diyInput_" + treeNode.tId + "' width='10'/>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             aObj.after(editStr); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1114,13 +1115,13 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //注:这里虽然是boolean选项,但实际有可能是0,1的选择(非true,false),所以需要设置node节点的booleanOptions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.resetFilter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    filterConditionChange: function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filterConditionChange: function (event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleFilterObj, sel = event.currentTarget, tId = sel.id.slice(10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let node = me.treeObj.getNodeByTId(tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         node[JV.PROP_FILTER_CONDITION] = sel.value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.resetFilter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private_setup_compare_obj: function(dom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private_setup_compare_obj: function (dom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this, sel = dom, tId = sel.id.slice(14); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let node = me.treeObj.getNodeByTId(tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         node[JV.PROP_FILTER_COMPARE_OBJ] = sel.value; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1139,12 +1140,12 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             node[JV.PROP_FILTER_COMPARE_OBJ_KEY] = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    filterCompareObjChange: function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filterCompareObjChange: function (event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleFilterObj, sel = event.currentTarget; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.private_setup_compare_obj(sel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.resetFilter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    filterIndividualCompareObjKeyChange: function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filterIndividualCompareObjKeyChange: function (event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleFilterObj, sel = event.currentTarget, tId = sel.id.slice(20); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let inTxt = $("#diyInput_" + tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (inTxt) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1154,7 +1155,7 @@ let preHandleFilterObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         node[JV.PROP_FILTER_COMPARE_VAL] = sel.value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.resetFilter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    filterCompareObjKeyChange: function(event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filterCompareObjKeyChange: function (event) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = preHandleFilterObj, sel = event.currentTarget, tId = sel.id.slice(20); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let node = me.treeObj.getNodeByTId(tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         node[JV.PROP_FILTER_COMPARE_OBJ_KEY] = sel.value; 
			 |