Explorar el Código

feat: 报表新增数据预处理,转化工程量清单

lishihao hace 3 días
padre
commit
f16b09002b
Se han modificado 2 ficheros con 449 adiciones y 327 borrados
  1. 375 327
      public/web/rpt_value_define.js
  2. 74 0
      web/maintain/report/js/rpt_tpl_pre_handle.js

+ 375 - 327
public/web/rpt_value_define.js

@@ -2,331 +2,379 @@
  * Created by Tony on 2017/6/7.
  */
 const JV = {
-    NODE_CROSS_INFO: "交叉表_信息",
-    NODE_CROSS_ROW: "交叉行",
-    NODE_CROSS_COL: "交叉列",
-    NODE_CROSS_CONTENT: "交叉数据",
-    NODE_CROSS_ROW_SUM: "交叉行合计",
-    NODE_CROSS_COL_SUM: "交叉列合计",
-    NODE_CROSS_ROW_EXT: "交叉行拓展",
-    NODE_CROSS_ROW_SUM_EXT: "交叉行拓展合计",
-    NODE_CROSS_ROW_AD_HOC: "交叉行AD_HOC",
-    NODE_FIELD_MAP: "指标_数据_映射",
-    NODE_DISCRETE_FIELDS: "离散指标_集合",
-    NODE_NO_MAPPING_FIELDS: "无映射离散指标_集合",
-    NODE_DISCRETE_PARAMS: "离散参数_集合",
-    NODE_MASTER_FIELDS: "主数据指标_集合",
-    NODE_MASTER_FIELDS_EX: "主数据指标_拓展集合",
-    NODE_DETAIL_FIELDS: "从数据指标_集合",
-    NODE_DETAIL_FIELDS_EX: "从数据指标_拓展集合",
-    NODE_BAND_COLLECTION: "布局框_集合",
-    NODE_FORMULAS: "计算式_集合",
-    NODE_EVENTS: "事件_集合",
-    NODE_DISCRETE_INFO: "离散信息",
-    NODE_BILL_INFO: "账单式表_信息",
-    NODE_BILL_CONTENT : "账单式表_数据",
-    NODE_FLOW_INFO: "流水式表_信息",
-    NODE_FLOW_INFO_EX: "流水式表_拓展信息",
-    NODE_FLOW_GROUP: "流水式表_分组信息",
-    NODE_FLOW_SEG_SUM: "流水式表_段统计信息",
-    NODE_FLOW_PAGE_SUM: "流水式表_页统计信息",
-    NODE_FLOW_COLUMN : "流水式表_列",
-    NODE_FLOW_CONTENT : "流水式表_数据",
-    PROP_MULTI_COLUMN: "多列显示数量",
-    PROP_FLOW_EX_DISPLAY_MODE: "流水拓展显示模式",
-    DISPLAY_MODE_INDEPENDENT: "单独模式",
-    DISPLAY_MODE_FOLLOW: "紧随模式",
-
-    NODE_MAIN_INFO: "主信息",
-    NODE_MAIN_INFO_RPT_NAME: "报表名称",
-    NODE_PAGE_INFO: "打印页面_信息",
-    NODE_PAGE_SIZE: "纸张宽高",
-    NODE_MARGINS: "页边距",
-    NODE_RPT_BIZ_TYPE: "报表业务类型",
-    NODE_BIZ_TYPE_AUDI: "审核类型",
-    NODE_BIZ_TYPE_SUM: "汇总类型",
-    NODE_BIZ_TYPE_DETAIL: "明细类型",
-
-    NODE_MAP_DATA_HANDLE_INFO: "映射数据预处理",
-    PROP_DATA_KEY: "映射数据对象",
-    PROP_PARENT_DATA_KEY: "父映射数据对象",
-    PROP_PARENT_CHILD_SORT_KEY: "父子排序键",
-    PROP_PARENT_SORT_KEYS: "父排序键值集",
-    PROP_CHILD_SORT_KEYS: "子排序键值集",
-    PROP_OTHER_SUB_SORT: "其他子排序",
-    PROP_OTHER_SUB_FILTER: "其他子过滤",
-    PROP_HANDLE_TYPE: "预处理类型",
-    PROP_FILTER_KEYS: "过滤键值集",
-    PROP_FILTER_TOP_BILLS_NODES: "清单顶节点集",
-    PROP_FILTER_OTHER_BILLS_NODES: "其他清单节点集",
-    PROP_FILTER_COMPARE_OBJ: "compareObjKey",
-    PROP_FILTER_COMPARE_OBJ_KEY: "compareObjIdKey",
-    PROP_FILTER_COMPARE_VAL: "compareValue",
-    PROP_FILTER_CONDITION: "判断条件",
-    PROP_HANDLE_TYPE_FILTER: "过滤",
-    PROP_HANDLE_TYPE_SUM: "合计",
-    PROP_HANDLE_TYPE_SORT: "排序",
-    PROP_HANDLE_TYPE_ADD_DUMMY: "增加Dummy数据",
-    PROP_HANDLE_TYPE_ADJUST: "数据调整",
-    PROP_HANDLE_TYPE_BILLS_DATA_MOVE: "量材数据转移",
-    PROP_HANDLE_TYPE_COMPONENT_MOVE: "组成物数据转移",
-    PROP_HANDLE_TYPE_COMPONENT_REPLACEMENT: "组成物替换",
-    PROP_HANDLE_TYPE_PRECISION: "合计精度",
-
-    PROP_ADJUST_COLLECTION: "数据调整集",
-    PROP_ADJUST_ACTION: "action",
-    PROP_ADJUST_ACTION_VAL: "actionValue",
-    PROP_DUMMY_COLLECTION: "Dummy数据集",
-    PROP_DUMMY_VAL: "Dummy数据对象值",
-    PROP_FREQUENCY: "频率",
-    PROP_GRP_KEYS: "GrpKeyIds",
-    PROP_SORT_TYPE: "排序方式",
-    PROP_SORT_TYPE_SELF_DEFINE_LOGIC: "自定义逻辑",
-    PROP_SORT_KEYS: "排序键值集",
-    PROP_SUM_GROUP_KEYS: "分组键值集",
-    PROP_SUM_SUM_KEYS: "统计键值集",
-    PROP_SUM_CALC_AHEAD: "统计前计算",
-    PROP_SUM_CACL_TYPE: "计算类型",
-    PROP_FIELD_EXP_MAP: "mapExpression",
-    PROP_PRECISION: "Precision",
-    PROP_FIXED_PRECISION_AMT: "fixedPrecisionNum",
-    PROP_FIELD_EXP_FIXED_MAP: "fixedMapExpression",
-    PROP_FIELD_EXP_FLEXIBLE_MAP: "flexibleMapExpression",
-    PROP_FLEXIBLE_REF_FILED_ID: "flexibleRefFieldID",
-
-    NODE_FONT_COLLECTION: "font_collection",
-    NODE_STYLE_COLLECTION: "style_collection",
-    NODE_CONTROL_COLLECTION: "control_collection",
-
-    PROP_ID: "ID",
-    PROP_AD_HOC_DATA: "data_field",
-    PROP_CMN_HEIGHT: "CommonHeight",
-    PROP_CMN_WIDTH: "CommonWidth",
-    PROP_BAND_NAME: "BandName",
-    PROP_BAND_NORMAL_ONLY: "normalOnly",
-    PROP_BAND_EX_ONLY: "exOnly",
-    PROP_BAND_EX_JOIN_AFTER: "isJoinAfter",
-
-    PROP_UNITS: "单位",
-    PROP_PAGE_SIZE: "页规格",
-    PROP_ORIENTATION: "方向",
-    PROP_LEFT: "Left",
-    PROP_RIGHT: "Right",
-    PROP_TOP: "Top",
-    PROP_BOTTOM: "Bottom",
-    PROP_DATA_TYPE: "DataType",
-    PROP_NAME: "Name",
-    PROP_DFT_VALUE: "Default_Value",
-    PROP_EXPRESSION: "expression",
-    PROP_RUN_TYPE: "run_type",
-    PROP_BORDER_STYLE: "border_style",
-    PROP_POSITION: "Position",
-    PROP_HIDDEN: "Hidden",
-    PROP_IS_SERIAL: "isSerial",
-    PROP_IS_MERGE: "isMerge",
-    PROP_COMBINE_TYPE: "combineType",
-    PROP_IS_AUTO_HEIGHT: "isAutoHeight",
-    PROP_FONT: "font",
-    PROP_CONTROL: "control",
-    PROP_STYLE: "style",
-    PROP_VALUE: "Value",
-    PROP_LABEL: "Label",
-    PROP_AREA: "area",
-    PROP_DISCRETE_FIELDS: "discrete_field_s",
-    PROP_FLOW_FIELDS: "flow_field_s",
-    PROP_BILL_FIELDS: "bill_field_s",
-    PROP_CROSS_FIELDS: "cross_field_s",
-    PROP_CROSS_DISPLAY_ORDER: "cross_display_order",
-    PROP_GROUP_FIELDS: "group_field_s", //用来分组的指标(如按清单、定额etc...)
-    PROP_GROUP_LINES: "group_lines",    //显示分组行,因分组的特殊性,分组的数据当成流水数据一样(行高相同),group_lines里的每一条数据占用流水的一整行,里面再细分(指标/text)
-    PROP_GROUP_SUM_KEYS: "SumKey_S",
-    PROP_SUM_KEY: "SumKey",
-    PROP_SUM_FIELDS: "sum_field_s",
-    PROP_TEXTS: "text_s",
-    PROP_TEXT: "text",
-    PROP_PARAMS: "param_s",
-    PROP_FIELD_ID: "FieldID",
-    PROP_PARAM_ID: "ParamID",
-    PROP_PREFIX: "Prefix",
-    PROP_SUFFIX: "Suffix",
-    PROP_FORMAT: "Format",
-
-    PROP_SHOW_ZERO: "ShowZero",
-    PROP_EXTENSION_TYPE: "ExtType",
-
-    PROP_CALCULATION: "CalculationType",
-    PROP_H_CALCULATION: "H_CalculationType",
-    PROP_V_CALCULATION: "V_CalculationType",
-    PROP_FIT_AREA: "isFitArea",
-
-    IDX_LEFT: 0,
-    IDX_TOP: 1,
-    IDX_RIGHT: 2,
-    IDX_BOTTOM: 3,
-
-    BAND_PROP_NAME: "Name",
-    BAND_PROP_MERGE_BAND: "MergeBand",
-    BAND_PROP_STYLE: "style",
-    BAND_PROP_CONTROL: "control",
-    BAND_PROP_HEIGHT: "Height",
-    BAND_PROP_WIDTH: "Width",
-    BAND_PROP_DISPLAY_TYPE: "DisplayType",
-    BAND_PROP_ALIGNMENT: "Alignment",
-    BAND_PROP_MERGE_BORDER: "MergeBorder",
-    BAND_PROP_SUB_BANDS: "band_s",
-
-    MEASUREMENT: {
-        PIXEL:["像素点", "象素点", "PIXEL"],
-        CM: ["厘米", "CM"],
-        INCH: ["英寸","INCH"]
-    },
-
-    PROP_IS_ID: "isID",
-    PROP_ID_SEQ: "IDSeq",
-
-    TAB_FIELD_PROP_SORT: "Sort",
-    TAB_FIELD_PROP_SORT_VAL_NOSORT: "no_sort",
-    TAB_FIELD_PROP_SORT_VAL_ASC: "ascend",
-    TAB_FIELD_PROP_SORT_VAL_DESC: "descend",
-
-    DATA_DISCRETE_DATA: "discrete_data",
-    DATA_MASTER_DATA: "master_data",
-    DATA_DETAIL_DATA: "detail_data",
-    DATA_MASTER_DATA_EX: "master_data_ex",
-    DATA_DETAIL_DATA_EX: "detail_data_ex",
-
-    BLANK_FIELD_INDEX: -10,
-    BLANK_VALUE_INDEX: -100,
-    BLANK_PAGE_VALUE_INDEX: -200,
-
-    PROP_SEG_GRP_IDX: "segGrpRecStartIdx",
-    PROP_PRE_ADD_GRP_REC_INFO: "preAddPageGrpInfo",
-    PROP_INSERTED_GRP_REC: "insertedGrpRecAmt",
-    PROP_GRP_LINES: "group_lines_amt",
-
-    RUN_TYPE_BEFORE_ANALYZING: "before_analyzing",
-    RUN_TYPE_BEFORE_PAGING: "before_paging",
-    RUN_TYPE_BEFORE_OUTPUT: "before_output",
-    RUN_TYPE_BEFORE_COMBINE: "before_combine",
-    RUN_TYPE_AFTER_COMBINE: "after_combine",
-
-    RUN_TYPE_BEFORE_GROUP_TEXT_OUT: "before_group_text_output",
-
-    RUN_TYPE_RESET_CROSS_COLUMNS: 'reset_cross_columns',
-
-    PAGE_STATUS: ["EveryPage","FirstPage", "LastPage", "SegmentStart", "SegmentEnd", "Group", "CrossRowEnd", "CrossColEnd"],
-
-    CONTROL_PROPS: ["Shrink", "ShowZero", "Horizon", "Vertical", "Wrap", "VerticalForExcel", "ShrinkFirst", "CloseOutput"],
-    CONTROL_PROP_IDX_SHRINK: 0,
-    CONTROL_PROP_IDX_SHOW_ZERO: 1,
-    CONTROL_PROP_IDX_HORIZON: 2,
-    CONTROL_PROP_IDX_VERTICAL: 3,
-    CONTROL_PROP_IDX_WRAP: 4,
-    CONTROL_PROP_IDX_VERTICAL_EXCEL: 5,
-    CONTROL_PROP_IDX_SHRINK_FIRST: 6,
-    CONTROL_PROP_IDX_CLOSE_OUTPUT: 7,
-    BORDER_STYLE_PROPS: ["LineWeight", "DashStyle", "Color"],
-    PROP_LINE_WEIGHT: "LineWeight",
-    PROP_DASH_STYLE: "DashStyle",
-    PROP_COLOR: "Color",
-    FONT_PROPS: ["Name", "FontHeight", "FontColor", "FontBold", "FontItalic", "FontUnderline", "FontStrikeOut", "FontAngle"],
-    FONT_PROP_IDX_NAME: 0,
-    FONT_PROP_IDX_HEIGHT: 1,
-    FONT_PROP_IDX_COLOR: 2,
-    FONT_PROP_IDX_BOLD: 3,
-    FONT_PROP_IDX_ITALIC: 4,
-    FONT_PROP_IDX_UNDERLINE: 5,
-    FONT_PROP_IDX_STRIKEOUT: 6,
-    FONT_PROP_IDX_ANGLE: 7,
-
-    STATUS_NORMAL: 0,
-    STATUS_REPORT_START: 1,
-    STATUS_REPORT_END: 2,
-    STATUS_SEGMENT_START: 3,
-    STATUS_SEGMENT_END: 4,
-    STATUS_GROUP: 5,
-    STATUS_CROSS_ROW_END: 6,
-    STATUS_CROSS_COL_END: 7,
-
-    LAYOUT: ["Top","Bottom", "Left", "Right", "Fulfill"],
-    LAYOUT_TOP: 0,
-    LAYOUT_BOTTOM: 1,
-    LAYOUT_LEFT: 2,
-    LAYOUT_RIGHT: 3,
-    LAYOUT_FULFILL: 4,
-
-    OUTPUT_ALIGN: {
-        H: ["left", "center", "right"],
-        V: ["top", "center", "bottom"]
-    },
-    H_ALIGN_IDX_LEFT : 0,
-    H_ALIGN_IDX_CENTER : 1,
-    H_ALIGN_IDX_RIGHT : 2,
-    V_ALIGN_IDX_TOP : 0,
-    V_ALIGN_IDX_CENTER : 1,
-    V_ALIGN_IDX_BOTTOM : 2,
-
-    CAL_TYPE:["percentage","abstract"],
-    CAL_TYPE_PERCENTAGE: 0,
-    CAL_TYPE_ABSTRACT: 1,
-
-    EVENT_TYPE: ["GRP_ON_CREATE", "FLOW_CONTENT_ON_CREATE"],
-    EVENT_IDX_GRP_ON_CREATE: 0,
-    EVENT_IDX_FLOW_CONTENT_ON_CREATE: 1,
-
-    PAGE_ORIENTATION_V_FIRST: 0,
-    PAGE_ORIENTATION_H_FIRST: 1,
-
-    ORIENTATION_PORTRAIT: "PORTRAIT",
-    ORIENTATION_LANDSCAPE: "LANDSCAPE",
-    ORIENTATION_PORTRAIT_CHN: "纵向",
-    ORIENTATION_LANDSCAPE_CHN: "横向",
-    SIZE_A3: [11.69, 16.54],
-    SIZE_A4: [8.27, 11.69],
-    SIZE_A5: [5.83, 8.27],
-    SIZE_B5: [6.93, 9.84],
-    SIZE_LETTER: [8.5, 11.0],
-    SIZE_LEGAL: [8.5, 14.0],
-    SIZE_16K: [7.75, 10.75],
-    SIZE_EXECUTIVE: [7.25, 10.5],
-
-    OUTPUT_OFFSET: [2,2,1,3],
-    OFFSET_IDX_LEFT: 0,
-    OFFSET_IDX_RIGHT: 1,
-    OFFSET_IDX_TOP: 2,
-    OFFSET_IDX_BOTTOM: 3,
-
-    PROP_PAGE_SEQ: "page_seq",
-    PROP_PAGE_MERGE_BORDER: "page_merge_border",
-    PROP_CELLS: "cells",
-
-    PAGING_OPTION_NORMAL: 'normal',
-    PAGING_OPTION_INFINITY: 'infinity',
-
-    OUTPUT_TYPE_NORMAL: 'normal',
-    OUTPUT_TYPE_SVG: 'svg',
-    OUTPUT_TYPE_PDF: 'pdf',
-    OUTPUT_TYPE_EXCEL: 'excel',
-
-    DISPLAY_VAL_TYPE_NORMAL: 0,
-    DISPLAY_VAL_TYPE_GROUP: 1,
-    DISPLAY_VAL_TYPE_AUTO_HEIGHT: 2,
-
-    TYPE_FOLLOW_MODE: 1,
-
-    PAGE_SELF_DEFINE: "自定义",
-    PAGE_SPECIAL_MERGE_POS: "page_merge_pos",
-
-    PAGES_SIZE_STR: ["A3", "A4", "A5", "B5", "LETTER", "LEGAL", "EXECUTIVE", "16K"],
-    PAGES_SIZE_IDX: [8, 9, 11, 13, 1, 5, 7, 93],
-    PAGES_SIZE: [[11.69, 16.54], [8.27, 11.69], [5.83, 8.27], [6.93, 9.84], [8.5, 11.0], [8.5, 14.0], [7.25, 10.5], [7.25, 10.5]],
-
-    HUNDRED_PERCENT : 100.0,
-
-    VERTICAL_ANGLE: "90",
-    ANTI_VERTICAL_ANGLE: "-90",
-    VERTICAL_ANGLE_INT: 90,
-    ANTI_VERTICAL_ANGLE_INT: -90,
-
-    LAST_DEF: ""
+  NODE_CROSS_INFO: "交叉表_信息",
+  NODE_CROSS_ROW: "交叉行",
+  NODE_CROSS_COL: "交叉列",
+  NODE_CROSS_CONTENT: "交叉数据",
+  NODE_CROSS_ROW_SUM: "交叉行合计",
+  NODE_CROSS_COL_SUM: "交叉列合计",
+  NODE_CROSS_ROW_EXT: "交叉行拓展",
+  NODE_CROSS_ROW_SUM_EXT: "交叉行拓展合计",
+  NODE_CROSS_ROW_AD_HOC: "交叉行AD_HOC",
+  NODE_FIELD_MAP: "指标_数据_映射",
+  NODE_DISCRETE_FIELDS: "离散指标_集合",
+  NODE_NO_MAPPING_FIELDS: "无映射离散指标_集合",
+  NODE_DISCRETE_PARAMS: "离散参数_集合",
+  NODE_MASTER_FIELDS: "主数据指标_集合",
+  NODE_MASTER_FIELDS_EX: "主数据指标_拓展集合",
+  NODE_DETAIL_FIELDS: "从数据指标_集合",
+  NODE_DETAIL_FIELDS_EX: "从数据指标_拓展集合",
+  NODE_BAND_COLLECTION: "布局框_集合",
+  NODE_FORMULAS: "计算式_集合",
+  NODE_EVENTS: "事件_集合",
+  NODE_DISCRETE_INFO: "离散信息",
+  NODE_BILL_INFO: "账单式表_信息",
+  NODE_BILL_CONTENT: "账单式表_数据",
+  NODE_FLOW_INFO: "流水式表_信息",
+  NODE_FLOW_INFO_EX: "流水式表_拓展信息",
+  NODE_FLOW_GROUP: "流水式表_分组信息",
+  NODE_FLOW_SEG_SUM: "流水式表_段统计信息",
+  NODE_FLOW_PAGE_SUM: "流水式表_页统计信息",
+  NODE_FLOW_COLUMN: "流水式表_列",
+  NODE_FLOW_CONTENT: "流水式表_数据",
+  PROP_MULTI_COLUMN: "多列显示数量",
+  PROP_FLOW_EX_DISPLAY_MODE: "流水拓展显示模式",
+  DISPLAY_MODE_INDEPENDENT: "单独模式",
+  DISPLAY_MODE_FOLLOW: "紧随模式",
+
+  NODE_MAIN_INFO: "主信息",
+  NODE_MAIN_INFO_RPT_NAME: "报表名称",
+  NODE_PAGE_INFO: "打印页面_信息",
+  NODE_PAGE_SIZE: "纸张宽高",
+  NODE_MARGINS: "页边距",
+  NODE_RPT_BIZ_TYPE: "报表业务类型",
+  NODE_BIZ_TYPE_AUDI: "审核类型",
+  NODE_BIZ_TYPE_SUM: "汇总类型",
+  NODE_BIZ_TYPE_DETAIL: "明细类型",
+
+  NODE_MAP_DATA_HANDLE_INFO: "映射数据预处理",
+  PROP_DATA_KEY: "映射数据对象",
+  PROP_PARENT_DATA_KEY: "父映射数据对象",
+  PROP_PARENT_CHILD_SORT_KEY: "父子排序键",
+  PROP_PARENT_SORT_KEYS: "父排序键值集",
+  PROP_CHILD_SORT_KEYS: "子排序键值集",
+  PROP_OTHER_SUB_SORT: "其他子排序",
+  PROP_OTHER_SUB_FILTER: "其他子过滤",
+  PROP_HANDLE_TYPE: "预处理类型",
+  PROP_FILTER_KEYS: "过滤键值集",
+  PROP_FILTER_TOP_BILLS_NODES: "清单顶节点集",
+  PROP_FILTER_OTHER_BILLS_NODES: "其他清单节点集",
+  PROP_FILTER_COMPARE_OBJ: "compareObjKey",
+  PROP_FILTER_COMPARE_OBJ_KEY: "compareObjIdKey",
+  PROP_FILTER_COMPARE_VAL: "compareValue",
+  PROP_FILTER_CONDITION: "判断条件",
+  PROP_HANDLE_TYPE_FILTER: "过滤",
+  PROP_HANDLE_TYPE_SUM: "合计",
+  PROP_HANDLE_TYPE_SORT: "排序",
+  PROP_HANDLE_TYPE_ADD_DUMMY: "增加Dummy数据",
+  PROP_HANDLE_TYPE_ADJUST: "数据调整",
+  PROP_HANDLE_TYPE_BILLS_DATA_MOVE: "量材数据转移",
+  PROP_HANDLE_TYPE_COMPONENT_MOVE: "组成物数据转移",
+  PROP_HANDLE_TYPE_COMPONENT_REPLACEMENT: "组成物替换",
+  PROP_HANDLE_TYPE_PRECISION: "合计精度",
+  PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS: "转化工程量清单",
+  PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE: "工程量清单排序类型",
+  PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE: "工程量清单数据类型",
+
+  PROP_ADJUST_COLLECTION: "数据调整集",
+  PROP_ADJUST_ACTION: "action",
+  PROP_ADJUST_ACTION_VAL: "actionValue",
+  PROP_DUMMY_COLLECTION: "Dummy数据集",
+  PROP_DUMMY_VAL: "Dummy数据对象值",
+  PROP_FREQUENCY: "频率",
+  PROP_GRP_KEYS: "GrpKeyIds",
+  PROP_SORT_TYPE: "排序方式",
+  PROP_SORT_TYPE_SELF_DEFINE_LOGIC: "自定义逻辑",
+  PROP_SORT_KEYS: "排序键值集",
+  PROP_SUM_GROUP_KEYS: "分组键值集",
+  PROP_SUM_SUM_KEYS: "统计键值集",
+  PROP_SUM_CALC_AHEAD: "统计前计算",
+  PROP_SUM_CACL_TYPE: "计算类型",
+  PROP_FIELD_EXP_MAP: "mapExpression",
+  PROP_PRECISION: "Precision",
+  PROP_FIXED_PRECISION_AMT: "fixedPrecisionNum",
+  PROP_FIELD_EXP_FIXED_MAP: "fixedMapExpression",
+  PROP_FIELD_EXP_FLEXIBLE_MAP: "flexibleMapExpression",
+  PROP_FLEXIBLE_REF_FILED_ID: "flexibleRefFieldID",
+
+  NODE_FONT_COLLECTION: "font_collection",
+  NODE_STYLE_COLLECTION: "style_collection",
+  NODE_CONTROL_COLLECTION: "control_collection",
+
+  PROP_ID: "ID",
+  PROP_AD_HOC_DATA: "data_field",
+  PROP_CMN_HEIGHT: "CommonHeight",
+  PROP_CMN_WIDTH: "CommonWidth",
+  PROP_BAND_NAME: "BandName",
+  PROP_BAND_NORMAL_ONLY: "normalOnly",
+  PROP_BAND_EX_ONLY: "exOnly",
+  PROP_BAND_EX_JOIN_AFTER: "isJoinAfter",
+
+  PROP_UNITS: "单位",
+  PROP_PAGE_SIZE: "页规格",
+  PROP_ORIENTATION: "方向",
+  PROP_LEFT: "Left",
+  PROP_RIGHT: "Right",
+  PROP_TOP: "Top",
+  PROP_BOTTOM: "Bottom",
+  PROP_DATA_TYPE: "DataType",
+  PROP_NAME: "Name",
+  PROP_DFT_VALUE: "Default_Value",
+  PROP_EXPRESSION: "expression",
+  PROP_RUN_TYPE: "run_type",
+  PROP_BORDER_STYLE: "border_style",
+  PROP_POSITION: "Position",
+  PROP_HIDDEN: "Hidden",
+  PROP_IS_SERIAL: "isSerial",
+  PROP_IS_MERGE: "isMerge",
+  PROP_COMBINE_TYPE: "combineType",
+  PROP_IS_AUTO_HEIGHT: "isAutoHeight",
+  PROP_FONT: "font",
+  PROP_CONTROL: "control",
+  PROP_STYLE: "style",
+  PROP_VALUE: "Value",
+  PROP_LABEL: "Label",
+  PROP_AREA: "area",
+  PROP_DISCRETE_FIELDS: "discrete_field_s",
+  PROP_FLOW_FIELDS: "flow_field_s",
+  PROP_BILL_FIELDS: "bill_field_s",
+  PROP_CROSS_FIELDS: "cross_field_s",
+  PROP_CROSS_DISPLAY_ORDER: "cross_display_order",
+  PROP_GROUP_FIELDS: "group_field_s", //用来分组的指标(如按清单、定额etc...)
+  PROP_GROUP_LINES: "group_lines", //显示分组行,因分组的特殊性,分组的数据当成流水数据一样(行高相同),group_lines里的每一条数据占用流水的一整行,里面再细分(指标/text)
+  PROP_GROUP_SUM_KEYS: "SumKey_S",
+  PROP_SUM_KEY: "SumKey",
+  PROP_SUM_FIELDS: "sum_field_s",
+  PROP_TEXTS: "text_s",
+  PROP_TEXT: "text",
+  PROP_PARAMS: "param_s",
+  PROP_FIELD_ID: "FieldID",
+  PROP_PARAM_ID: "ParamID",
+  PROP_PREFIX: "Prefix",
+  PROP_SUFFIX: "Suffix",
+  PROP_FORMAT: "Format",
+
+  PROP_SHOW_ZERO: "ShowZero",
+  PROP_EXTENSION_TYPE: "ExtType",
+
+  PROP_CALCULATION: "CalculationType",
+  PROP_H_CALCULATION: "H_CalculationType",
+  PROP_V_CALCULATION: "V_CalculationType",
+  PROP_FIT_AREA: "isFitArea",
+
+  IDX_LEFT: 0,
+  IDX_TOP: 1,
+  IDX_RIGHT: 2,
+  IDX_BOTTOM: 3,
+
+  BAND_PROP_NAME: "Name",
+  BAND_PROP_MERGE_BAND: "MergeBand",
+  BAND_PROP_STYLE: "style",
+  BAND_PROP_CONTROL: "control",
+  BAND_PROP_HEIGHT: "Height",
+  BAND_PROP_WIDTH: "Width",
+  BAND_PROP_DISPLAY_TYPE: "DisplayType",
+  BAND_PROP_ALIGNMENT: "Alignment",
+  BAND_PROP_MERGE_BORDER: "MergeBorder",
+  BAND_PROP_SUB_BANDS: "band_s",
+
+  MEASUREMENT: {
+    PIXEL: ["像素点", "象素点", "PIXEL"],
+    CM: ["厘米", "CM"],
+    INCH: ["英寸", "INCH"],
+  },
+
+  PROP_IS_ID: "isID",
+  PROP_ID_SEQ: "IDSeq",
+
+  TAB_FIELD_PROP_SORT: "Sort",
+  TAB_FIELD_PROP_SORT_VAL_NOSORT: "no_sort",
+  TAB_FIELD_PROP_SORT_VAL_ASC: "ascend",
+  TAB_FIELD_PROP_SORT_VAL_DESC: "descend",
+
+  DATA_DISCRETE_DATA: "discrete_data",
+  DATA_MASTER_DATA: "master_data",
+  DATA_DETAIL_DATA: "detail_data",
+  DATA_MASTER_DATA_EX: "master_data_ex",
+  DATA_DETAIL_DATA_EX: "detail_data_ex",
+
+  BLANK_FIELD_INDEX: -10,
+  BLANK_VALUE_INDEX: -100,
+  BLANK_PAGE_VALUE_INDEX: -200,
+
+  PROP_SEG_GRP_IDX: "segGrpRecStartIdx",
+  PROP_PRE_ADD_GRP_REC_INFO: "preAddPageGrpInfo",
+  PROP_INSERTED_GRP_REC: "insertedGrpRecAmt",
+  PROP_GRP_LINES: "group_lines_amt",
+
+  RUN_TYPE_BEFORE_ANALYZING: "before_analyzing",
+  RUN_TYPE_BEFORE_PAGING: "before_paging",
+  RUN_TYPE_BEFORE_OUTPUT: "before_output",
+  RUN_TYPE_BEFORE_COMBINE: "before_combine",
+  RUN_TYPE_AFTER_COMBINE: "after_combine",
+
+  RUN_TYPE_BEFORE_GROUP_TEXT_OUT: "before_group_text_output",
+
+  RUN_TYPE_RESET_CROSS_COLUMNS: "reset_cross_columns",
+
+  PAGE_STATUS: [
+    "EveryPage",
+    "FirstPage",
+    "LastPage",
+    "SegmentStart",
+    "SegmentEnd",
+    "Group",
+    "CrossRowEnd",
+    "CrossColEnd",
+  ],
+
+  CONTROL_PROPS: [
+    "Shrink",
+    "ShowZero",
+    "Horizon",
+    "Vertical",
+    "Wrap",
+    "VerticalForExcel",
+    "ShrinkFirst",
+    "CloseOutput",
+  ],
+  CONTROL_PROP_IDX_SHRINK: 0,
+  CONTROL_PROP_IDX_SHOW_ZERO: 1,
+  CONTROL_PROP_IDX_HORIZON: 2,
+  CONTROL_PROP_IDX_VERTICAL: 3,
+  CONTROL_PROP_IDX_WRAP: 4,
+  CONTROL_PROP_IDX_VERTICAL_EXCEL: 5,
+  CONTROL_PROP_IDX_SHRINK_FIRST: 6,
+  CONTROL_PROP_IDX_CLOSE_OUTPUT: 7,
+  BORDER_STYLE_PROPS: ["LineWeight", "DashStyle", "Color"],
+  PROP_LINE_WEIGHT: "LineWeight",
+  PROP_DASH_STYLE: "DashStyle",
+  PROP_COLOR: "Color",
+  FONT_PROPS: [
+    "Name",
+    "FontHeight",
+    "FontColor",
+    "FontBold",
+    "FontItalic",
+    "FontUnderline",
+    "FontStrikeOut",
+    "FontAngle",
+  ],
+  FONT_PROP_IDX_NAME: 0,
+  FONT_PROP_IDX_HEIGHT: 1,
+  FONT_PROP_IDX_COLOR: 2,
+  FONT_PROP_IDX_BOLD: 3,
+  FONT_PROP_IDX_ITALIC: 4,
+  FONT_PROP_IDX_UNDERLINE: 5,
+  FONT_PROP_IDX_STRIKEOUT: 6,
+  FONT_PROP_IDX_ANGLE: 7,
+
+  STATUS_NORMAL: 0,
+  STATUS_REPORT_START: 1,
+  STATUS_REPORT_END: 2,
+  STATUS_SEGMENT_START: 3,
+  STATUS_SEGMENT_END: 4,
+  STATUS_GROUP: 5,
+  STATUS_CROSS_ROW_END: 6,
+  STATUS_CROSS_COL_END: 7,
+
+  LAYOUT: ["Top", "Bottom", "Left", "Right", "Fulfill"],
+  LAYOUT_TOP: 0,
+  LAYOUT_BOTTOM: 1,
+  LAYOUT_LEFT: 2,
+  LAYOUT_RIGHT: 3,
+  LAYOUT_FULFILL: 4,
+
+  OUTPUT_ALIGN: {
+    H: ["left", "center", "right"],
+    V: ["top", "center", "bottom"],
+  },
+  H_ALIGN_IDX_LEFT: 0,
+  H_ALIGN_IDX_CENTER: 1,
+  H_ALIGN_IDX_RIGHT: 2,
+  V_ALIGN_IDX_TOP: 0,
+  V_ALIGN_IDX_CENTER: 1,
+  V_ALIGN_IDX_BOTTOM: 2,
+
+  CAL_TYPE: ["percentage", "abstract"],
+  CAL_TYPE_PERCENTAGE: 0,
+  CAL_TYPE_ABSTRACT: 1,
+
+  EVENT_TYPE: ["GRP_ON_CREATE", "FLOW_CONTENT_ON_CREATE"],
+  EVENT_IDX_GRP_ON_CREATE: 0,
+  EVENT_IDX_FLOW_CONTENT_ON_CREATE: 1,
+
+  PAGE_ORIENTATION_V_FIRST: 0,
+  PAGE_ORIENTATION_H_FIRST: 1,
+
+  ORIENTATION_PORTRAIT: "PORTRAIT",
+  ORIENTATION_LANDSCAPE: "LANDSCAPE",
+  ORIENTATION_PORTRAIT_CHN: "纵向",
+  ORIENTATION_LANDSCAPE_CHN: "横向",
+  SIZE_A3: [11.69, 16.54],
+  SIZE_A4: [8.27, 11.69],
+  SIZE_A5: [5.83, 8.27],
+  SIZE_B5: [6.93, 9.84],
+  SIZE_LETTER: [8.5, 11.0],
+  SIZE_LEGAL: [8.5, 14.0],
+  SIZE_16K: [7.75, 10.75],
+  SIZE_EXECUTIVE: [7.25, 10.5],
+
+  OUTPUT_OFFSET: [2, 2, 1, 3],
+  OFFSET_IDX_LEFT: 0,
+  OFFSET_IDX_RIGHT: 1,
+  OFFSET_IDX_TOP: 2,
+  OFFSET_IDX_BOTTOM: 3,
+
+  PROP_PAGE_SEQ: "page_seq",
+  PROP_PAGE_MERGE_BORDER: "page_merge_border",
+  PROP_CELLS: "cells",
+
+  PAGING_OPTION_NORMAL: "normal",
+  PAGING_OPTION_INFINITY: "infinity",
+
+  OUTPUT_TYPE_NORMAL: "normal",
+  OUTPUT_TYPE_SVG: "svg",
+  OUTPUT_TYPE_PDF: "pdf",
+  OUTPUT_TYPE_EXCEL: "excel",
+
+  DISPLAY_VAL_TYPE_NORMAL: 0,
+  DISPLAY_VAL_TYPE_GROUP: 1,
+  DISPLAY_VAL_TYPE_AUTO_HEIGHT: 2,
+
+  TYPE_FOLLOW_MODE: 1,
+
+  PAGE_SELF_DEFINE: "自定义",
+  PAGE_SPECIAL_MERGE_POS: "page_merge_pos",
+
+  PAGES_SIZE_STR: [
+    "A3",
+    "A4",
+    "A5",
+    "B5",
+    "LETTER",
+    "LEGAL",
+    "EXECUTIVE",
+    "16K",
+  ],
+  PAGES_SIZE_IDX: [8, 9, 11, 13, 1, 5, 7, 93],
+  PAGES_SIZE: [
+    [11.69, 16.54],
+    [8.27, 11.69],
+    [5.83, 8.27],
+    [6.93, 9.84],
+    [8.5, 11.0],
+    [8.5, 14.0],
+    [7.25, 10.5],
+    [7.25, 10.5],
+  ],
+
+  HUNDRED_PERCENT: 100.0,
+
+  VERTICAL_ANGLE: "90",
+  ANTI_VERTICAL_ANGLE: "-90",
+  VERTICAL_ANGLE_INT: 90,
+  ANTI_VERTICAL_ANGLE_INT: -90,
+
+  LAST_DEF: "",
 };

+ 74 - 0
web/maintain/report/js/rpt_tpl_pre_handle.js

@@ -327,6 +327,10 @@ let preHandleObj = {
     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_CHANGE_QUANTITIES_BILLS,
+      Title: "",
+    });
     // types.push({Name: "纯手工填写", Title: ""});
     me.typeTreeObj = $.fn.zTree.init(
       $("#pre_handle_type_reversed"),
@@ -411,6 +415,14 @@ let preHandleObj = {
           Dummy数据集: [],
         };
         break;
+      case JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS:
+        rst = {
+          Name: "预处理环节",
+          Title: "",
+          映射数据对象: "bills",
+          预处理类型: preHandleType,
+        };
+        break;
       default:
         rst = {
           Name: "预处理环节",
@@ -456,6 +468,10 @@ let preHandleObj = {
       case JV.PROP_HANDLE_TYPE_ADD_DUMMY:
         item[JV.PROP_DUMMY_COLLECTION] = [];
         break;
+      case JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS:
+        item[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE] = "all"; // 工程量清单排序
+        item[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE] = "bills"; // 工程量清单输出级别
+        break;
       default:
         item[JV.PROP_HANDLE_TYPE] = JV.PROP_HANDLE_TYPE_SORT;
         item[JV.PROP_SORT_TYPE] = "normal";
@@ -479,6 +495,10 @@ let preHandleObj = {
       preHandleAdjustObj.copyNode(src, dest);
     } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_ADD_DUMMY) {
       preHandleAddDummyObj.copyNode(src, dest);
+    } else if (
+      src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS
+    ) {
+      preHandleQuantitiesBillsSortObj.copyNode(src, dest);
     }
   },
   private_set_title: function (node) {
@@ -526,6 +546,8 @@ let preHandleObj = {
           preHandleAdjustObj.refresh_node();
         } else if (typeNode[JV.PROP_NAME] === "增加Dummy数据") {
           preHandleAddDummyObj.refresh_node();
+        } else if (typeNode[JV.PROP_NAME] === "转化工程量清单") {
+          preHandleQuantitiesBillsSortObj.refresh_node();
         }
       }
     }
@@ -700,6 +722,11 @@ let preHandleObj = {
           case JV.PROP_HANDLE_TYPE_ADD_DUMMY:
             rst.push(preHandleAddDummyObj.extractTabFields(handleObj));
             break;
+          case JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS:
+            rst.push(
+              preHandleQuantitiesBillsSortObj.extractTabFields(handleObj)
+            );
+            break;
           default:
             break;
         }
@@ -1572,3 +1599,50 @@ let preHandleAddDummyObj = {
     return rst;
   },
 };
+let preHandleQuantitiesBillsSortObj = {
+  copyNode: function (src, dest) {
+    dest[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE] =
+      src.billSortType;
+    dest[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE] =
+      src.billSortData;
+  },
+  refresh_node: function () {
+    $("#div_quantities_bills_sort_bar")[0].style.display = "";
+    if (preHandleObj.currentNode) {
+      $("#select_quantities_bills_sort_types")[0].value =
+        preHandleObj.currentNode[
+          JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE
+        ] || "all";
+      $("#select_quantities_bills_types")[0].value =
+        preHandleObj.currentNode[
+          JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE
+        ] || "bills";
+    }
+  },
+  extractTabFields: function (handleObj) {
+    let me = preHandleQuantitiesBillsSortObj,
+      rst = {};
+    me.copyNode(handleObj, rst);
+    rst = {
+      预处理类型: "转化工程量清单",
+      映射数据对象: "bills",
+      billSortType:
+        handleObj[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE],
+      billSortData:
+        handleObj[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE],
+    };
+    return rst;
+  },
+  onQuantitiesBillsSortTypeChange: function (dom) {
+    // 工程量清单排序类型
+    let me = preHandleObj;
+    me.currentNode[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_SORT_TYPE] =
+      dom.value;
+  },
+  onQuantitiesBillsTypesChange: function (dom) {
+    // 工程量清单排序对象类型
+    let me = preHandleObj;
+    me.currentNode[JV.PROP_HANDLE_TYPE_CHANGE_QUANTITIES_BILLS_DATA_TYPE] =
+      dom.value;
+  },
+};