Przeglądaj źródła

fix: 公路报表模板配置,定额条件新增工程量判断选项

lishihao 2 lat temu
rodzic
commit
ab7952f810
1 zmienionych plików z 218 dodań i 217 usunięć
  1. 218 217
      web/maintain/report/js/rpt_tpl_pre_handle.js

+ 218 - 217
web/maintain/report/js/rpt_tpl_pre_handle.js

@@ -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;