Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionOperation

zhongzewei 7 years ago
parent
commit
a09d579920
1 changed files with 176 additions and 60 deletions
  1. 176 60
      web/maintain/report/js/rpt_tpl_pre_handle.js

+ 176 - 60
web/maintain/report/js/rpt_tpl_pre_handle.js

@@ -6,11 +6,47 @@ const sort_types = ["normal", "tree", "accord_to_parent", "self_define"];
 const condition_types = ["==", "===", ">", ">=", "<", "<=", "!=", "in", "not in"];
 const pre_handle_data_objects = ["bills", "ration", "ration_glj"];
 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}
+];
+//三材类别
+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}
+];
+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: "索赔与现场签证(14)", Title: "", Value: 14},
+    {Name: "规费(15)", Title: "", Value: 15},
+    {Name: "社会保险费及住房公积金(16)", Title: "", Value: 16},
+    {Name: "工程排污费(17)", Title: "", Value: 17},
+    {Name: "税金(18)", Title: "", Value: 18},
+    {Name: "工程造价(19)", Title: "", Value: 19}
+];
 const exposed_bills_properties = [
     {Name: "清单_所属项目ID", Title: "", Key: "projectID", Order: "ascend"}
     ,{Name: "清单_ID", Title: "", Key: "ID", Order: "ascend"}
     ,{Name: "清单_层次", Title: "", Key: "treeLevel", Order: "ascend"}
-    ,{Name: "清单_标记", Title: "", Key: "flags.flag", Order: "ascend"}
+    ,{Name: "清单_标记", Title: "", Key: "flags.flag", Order: "ascend", individualType: fixed_bills_flags}
     // ,{Name: "清单_项目编码", Title: "", Key: "code", Order: "ascend"}
     // ,{Name: "清单_项目名称", Title: "", Key: "name", Order: "ascend"}
     // ,{Name: "清单_项目特征", Title: "", Key: "itemCharacterText", Order: "ascend"}
@@ -49,33 +85,36 @@ const exposed_prj_glj_properties = [
     {Name: "人材机_所属清单ID", Title: "", Key: "billsItemID", Order: "ascend"},
     {Name: "人材机_所属工程ID", Title: "", Key: "projectID", Order: "ascend"},
     {Name: "人材机_代码", Title: "", Key: "code", Order: "ascend"},
+    {Name: "人材机_是否暂估", Title: "", Key: "is_evaluate", 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: "name", Order: "ascend"},
     // {Name: "人材机_单位", Title: "", Key: "unit", Order: "ascend"},
     // {Name: "人材机_数量", Title: "", Key: "quantity", Order: "ascend"}
 ];
 const exposed_properties_arr = [exposed_bills_properties, exposed_ration_properties, exposed_prj_glj_properties];
 const fixed_top_bills_nodes = [
-    {Name: "分部分项工程", Title: "", Value: 1},
-    {Name: "措施项目", Title: "", Value: 2},
-    {Name: "其他项目", Title: "", Value: 7},
-    {Name: "规费", Title: "", Value: 15},
-    {Name: "税金", Title: "", Value: 18},
-    {Name: "工程造价", Title: "", Value: 19}
+    {Name: "分部分项工程(1)", Title: "", Value: 1},
+    {Name: "措施项目(2)", Title: "", Value: 2},
+    {Name: "其他项目(7)", Title: "", Value: 7},
+    {Name: "规费(15)", Title: "", Value: 15},
+    {Name: "税金(18)", Title: "", Value: 18},
+    {Name: "工程造价(19)", Title: "", Value: 19}
 ];
 const fixed_other_bills_types = [
-    {Name: "施工技术措施项目", Title: "", Value: 3},
-    {Name: "安全文明施工按实计算费用", Title: "", Value: 4},
-    {Name: "施工组织措施专项费用", Title: "", Value: 5},
-    {Name: "安全文明施工专项费用", Title: "", Value: 6},
-    {Name: "暂列金额", Title: "", Value: 8},
-    {Name: "暂估价", Title: "", Value: 9},
-    {Name: "材料(工程设备)暂估价", Title: "", Value: 10},
-    {Name: "专业工程暂估价", Title: "", Value: 11},
-    {Name: "计日工", Title: "", Value: 12},
-    {Name: "总承包服务费", Title: "", Value: 13},
-    {Name: "索赔与现场签证", Title: "", Value: 14},
-    {Name: "社会保险费及住房公积金", Title: "", Value: 16},
-    {Name: "工程排污费", Title: "", Value: 17}
+    {Name: "施工技术措施项目(3)", Title: "", Value: 3},
+    {Name: "安全文明施工按实计算费用(4)", Title: "", Value: 4},
+    {Name: "施工组织措施专项费用(5)", Title: "", Value: 5},
+    {Name: "安全文明施工专项费用(6)", Title: "", Value: 6},
+    {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: "索赔与现场签证(14)", Title: "", Value: 14},
+    {Name: "社会保险费及住房公积金(16)", Title: "", Value: 16},
+    {Name: "工程排污费(17)", Title: "", Value: 17}
 ];
 
 let preHandleObj = {
@@ -746,26 +785,43 @@ let preHandleFilterObj = {
                         //and then others...
                         //过滤条件
                         keyNode[JV.PROP_FILTER_CONDITION] = filterItem[JV.PROP_FILTER_CONDITION];
-                        $("#diySelect_" + keyNode.tId)[0].selectedIndex = condition_types.indexOf(filterItem[JV.PROP_FILTER_CONDITION]);
-                        //条件值
-                        keyNode[JV.PROP_FILTER_COMPARE_VAL] = filterItem[JV.PROP_FILTER_COMPARE_VAL];
-                        $("#diyInput_" + keyNode.tId)[0].value = filterItem[JV.PROP_FILTER_COMPARE_VAL];
-                        //其他关联业务数据对象
-                        if (filterItem[JV.PROP_FILTER_COMPARE_OBJ]) {
-                            let cmpObjDom = $("#diyDataSelect_" + keyNode.tId)[0];
-                            keyNode[JV.PROP_FILTER_COMPARE_OBJ] = filterItem[JV.PROP_FILTER_COMPARE_OBJ];
-                            let idx = pre_handle_data_objects.indexOf(filterItem[JV.PROP_FILTER_COMPARE_OBJ]);
-                            cmpObjDom.selectedIndex = idx + 1;
-                            me.private_setup_compare_obj(cmpObjDom);
-                            let cmpObjIdDom = $("#diyDataDetailSelect_" + keyNode.tId)[0];
-                            for (let i = 0; i < cmpObjIdDom.children.length; i++) {
-                                let option = cmpObjIdDom.children[i];
-                                if (option.value === filterItem[JV.PROP_FILTER_COMPARE_OBJ_KEY]) {
-                                    keyNode[JV.PROP_FILTER_COMPARE_OBJ_KEY] = filterItem[JV.PROP_FILTER_COMPARE_OBJ_KEY]
-                                    cmpObjIdDom.selectedIndex = i;
+                        if (keyNode.isBoolean) {
+                            keyNode[JV.PROP_FILTER_COMPARE_VAL] = filterItem[JV.PROP_FILTER_COMPARE_VAL];
+                            $("#diyCheck_" + keyNode.tId)[0].checked = (keyNode["booleanOptions"].indexOf(filterItem["compareValue"]) === 0);
+                        } else if (keyNode.hasOwnProperty("individualType")) {
+                            $("#diySelect_" + keyNode.tId)[0].selectedIndex = condition_types.indexOf(filterItem[JV.PROP_FILTER_CONDITION]);
+                            //条件值
+                            keyNode[JV.PROP_FILTER_COMPARE_VAL] = filterItem[JV.PROP_FILTER_COMPARE_VAL];
+                            $("#diyInput_" + keyNode.tId)[0].value = filterItem[JV.PROP_FILTER_COMPARE_VAL];
+                            for (let idx = 0; idx < keyNode["individualType"].length; idx++) {
+                                let idType = keyNode["individualType"][idx];
+                                if (idType.Value.toString() === filterItem[JV.PROP_FILTER_COMPARE_VAL].toString()) {
+                                    $("#diyDataDetailSelect_" + keyNode.tId)[0].selectedIndex = idx;
                                     break;
                                 }
                             }
+                        } else {
+                            $("#diySelect_" + keyNode.tId)[0].selectedIndex = condition_types.indexOf(filterItem[JV.PROP_FILTER_CONDITION]);
+                            //条件值
+                            keyNode[JV.PROP_FILTER_COMPARE_VAL] = filterItem[JV.PROP_FILTER_COMPARE_VAL];
+                            $("#diyInput_" + keyNode.tId)[0].value = filterItem[JV.PROP_FILTER_COMPARE_VAL];
+                            //其他关联业务数据对象
+                            if (filterItem[JV.PROP_FILTER_COMPARE_OBJ]) {
+                                let cmpObjDom = $("#diyDataSelect_" + keyNode.tId)[0];
+                                keyNode[JV.PROP_FILTER_COMPARE_OBJ] = filterItem[JV.PROP_FILTER_COMPARE_OBJ];
+                                let idx = pre_handle_data_objects.indexOf(filterItem[JV.PROP_FILTER_COMPARE_OBJ]);
+                                cmpObjDom.selectedIndex = idx + 1;
+                                me.private_setup_compare_obj(cmpObjDom);
+                                let cmpObjIdDom = $("#diyDataDetailSelect_" + keyNode.tId)[0];
+                                for (let i = 0; i < cmpObjIdDom.children.length; i++) {
+                                    let option = cmpObjIdDom.children[i];
+                                    if (option.value === filterItem[JV.PROP_FILTER_COMPARE_OBJ_KEY]) {
+                                        keyNode[JV.PROP_FILTER_COMPARE_OBJ_KEY] = filterItem[JV.PROP_FILTER_COMPARE_OBJ_KEY]
+                                        cmpObjIdDom.selectedIndex = i;
+                                        break;
+                                    }
+                                }
+                            }
                         }
                         break;
                     }
@@ -812,32 +868,70 @@ let preHandleFilterObj = {
         rst.push("</select>");
         return rst.join("");
     },
+    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++) {
+            rst.push("<option value='" + individualTypes[i].Value + "'>" + individualTypes[i].Name + "</option>");
+        }
+        rst.push("</select>");
+        return rst.join("");
+    },
     addDiyDom: function(treeId,treeNode) {
         let me = preHandleFilterObj;
         let aObj = $("#" + treeNode.tId + IDMark_A);
-        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);
-        aObj.after(dataSelStr);
-        let editStr = "<input type='text' id='diyInput_" + treeNode.tId + "' width='10'/>";
-        aObj.after(editStr);
-        let selStr = "<select class='selDemo' id='diySelect_" + treeNode.tId + "'><option value='=='>等于</option><option value='==='>全等于</option><option value='>'>大于</option><option value='>='>大于等于</option><option value='<'>小于</option><option value='<='>小于等于</option><option value='!='>不等于</option><option value='in'>在</option><option value='not in'>不在</option></select>";
-        aObj.after(selStr);
-        let sel = $("#diySelect_" + treeNode.tId);
-        if (sel) {
-            sel.bind("change", me.filterConditionChange);
-        }
-        sel = $("#diyInput_" + treeNode.tId);
-        if (sel) {
-            sel.bind("change", me.filterCompareValChange);
-        }
-        sel = $("#diyDataSelect_" + treeNode.tId);
-        if (sel) {
-            sel.bind("change", me.filterCompareObjChange);
-        }
-        sel = $("#diyDataDetailSelect_" + treeNode.tId);
-        if (sel) {
-            sel.bind("change", me.filterCompareObjKeyChange);
+        if (treeNode.hasOwnProperty("isBoolean")) {
+            let checkStr = "<input type='checkbox' id='diyCheck_" + treeNode.tId + "' />";
+            aObj.after(checkStr);
+            let sel = $("#diyCheck_" + treeNode.tId);
+            if (sel) {
+                sel.bind("change", me.filterConditionCheck);
+            }
+        } else if (treeNode.hasOwnProperty("individualType")) {
+            let dataDtlSelStr = me.build_individual_filter_selection_str(treeNode.individualType, treeNode);
+            aObj.after(dataDtlSelStr);
+            let editStr = "<input type='text' id='diyInput_" + treeNode.tId + "' width='10'/>";
+            aObj.after(editStr);
+            let selStr = "<select class='selDemo' id='diySelect_" + treeNode.tId + "'><option value='=='>等于</option><option value='==='>全等于</option><option value='>'>大于</option><option value='>='>大于等于</option><option value='<'>小于</option><option value='<='>小于等于</option><option value='!='>不等于</option><option value='in'>在</option><option value='not in'>不在</option></select>";
+            aObj.after(selStr);
+            let sel = $("#diySelect_" + treeNode.tId);
+            if (sel) {
+                sel.bind("change", me.filterConditionChange);
+            }
+            sel = $("#diyInput_" + treeNode.tId);
+            if (sel) {
+                sel.bind("change", me.filterCompareValChange);
+            }
+            sel = $("#diyDataDetailSelect_" + treeNode.tId);
+            if (sel) {
+                sel.bind("change", me.filterIndividualCompareObjKeyChange);
+            }
+        } else {
+            //注意:这是后面的DOM先生成
+            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);
+            aObj.after(dataSelStr);
+            let editStr = "<input type='text' id='diyInput_" + treeNode.tId + "' width='10'/>";
+            aObj.after(editStr);
+            let selStr = "<select class='selDemo' id='diySelect_" + treeNode.tId + "'><option value='=='>等于</option><option value='==='>全等于</option><option value='>'>大于</option><option value='>='>大于等于</option><option value='<'>小于</option><option value='<='>小于等于</option><option value='!='>不等于</option><option value='in'>在</option><option value='not in'>不在</option></select>";
+            aObj.after(selStr);
+            let sel = $("#diySelect_" + treeNode.tId);
+            if (sel) {
+                sel.bind("change", me.filterConditionChange);
+            }
+            sel = $("#diyInput_" + treeNode.tId);
+            if (sel) {
+                sel.bind("change", me.filterCompareValChange);
+            }
+            sel = $("#diyDataSelect_" + treeNode.tId);
+            if (sel) {
+                sel.bind("change", me.filterCompareObjChange);
+            }
+            sel = $("#diyDataDetailSelect_" + treeNode.tId);
+            if (sel) {
+                sel.bind("change", me.filterCompareObjKeyChange);
+            }
         }
     },
     filterCompareValChange(event) {
@@ -846,6 +940,18 @@ let preHandleFilterObj = {
         node[JV.PROP_FILTER_COMPARE_VAL] = sel.value;
         me.resetFilter();
     },
+    filterConditionCheck: function (event) {
+        let me = preHandleFilterObj, sel = event.currentTarget, tId = sel.id.slice(9);
+        let node = me.treeObj.getNodeByTId(tId);
+        node[JV.PROP_FILTER_CONDITION] = "===";
+        if (sel.checked === true) {
+            node[JV.PROP_FILTER_COMPARE_VAL] = node.booleanOptions[0];
+        } else {
+            node[JV.PROP_FILTER_COMPARE_VAL] = node.booleanOptions[1];
+        }
+        //注:这里虽然是boolean选项,但实际有可能是0,1的选择(非true,false),所以需要设置node节点的booleanOptions
+        me.resetFilter();
+    },
     filterConditionChange: function(event) {
         let me = preHandleFilterObj, sel = event.currentTarget, tId = sel.id.slice(10);
         let node = me.treeObj.getNodeByTId(tId);
@@ -875,6 +981,16 @@ let preHandleFilterObj = {
         me.private_setup_compare_obj(sel);
         me.resetFilter();
     },
+    filterIndividualCompareObjKeyChange: function(event) {
+        let me = preHandleFilterObj, sel = event.currentTarget, tId = sel.id.slice(20);
+        let inTxt = $("#diyInput_" + tId);
+        if (inTxt) {
+            inTxt[0].value = sel.value;
+        }
+        let node = me.treeObj.getNodeByTId(tId);
+        node[JV.PROP_FILTER_COMPARE_VAL] = sel.value;
+        me.resetFilter();
+    },
     filterCompareObjKeyChange: function(event) {
         let me = preHandleFilterObj, sel = event.currentTarget, tId = sel.id.slice(20);
         let node = me.treeObj.getNodeByTId(tId);