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