/**
 * Created by jimiz on 2017/4/19.
 */
const ModuleNames = {
    project:'project',
    bills: 'bills',
    ration: 'ration',
    GLJ: 'GLJ',
    feeRate: 'feeRate',
    projectGLJ: 'projectGLJ',
    ration_glj:'ration_glj',
    ration_coe:'ration_coe',
    ration_ass:'ration_ass',
    ration_installation:'ration_installation',
    ration_template:'ration_template',
    quantity_detail:'quantity_detail',
    labour_coe: 'labour_coe',
    calc_program: 'calc_program',
    installation_fee:'installation_fee',
    projectInfo: 'project_info'
};

let gljType = gljUtil.gljType;

// 计算基数 [定额基价材料费] 要用到的材料类型。
const baseMaterialTypes = [
    gljType.GENERAL_MATERIAL,
    gljType.CONCRETE,
    gljType.MORTAR,
    gljType.MIX_RATIO,
    gljType.COMMERCIAL_CONCRETE,
    gljType.COMMERCIAL_MORTAR,
    gljType.PURCHASE_COMPONENT,
    gljType.GREEN_SEEDLING
];
// 计算基数 [定额基价机械费] 要用到的机械类型。
const baseMachineTypes = [
    gljType.GENERAL_MACHINE,
    gljType.MACHINE_COMPOSITION,
    gljType.MACHINE_LABOUR
];

const baseMachineMasterTypes = [
    gljType.GENERAL_MACHINE
];

// 全部材料类型。用于暂估等 (多了主材和设备)
const allMaterialTypes = [
    gljType.GENERAL_MATERIAL,
    gljType.CONCRETE,
    gljType.MORTAR,
    gljType.MIX_RATIO,
    gljType.COMMERCIAL_CONCRETE,
    gljType.COMMERCIAL_MORTAR,
    gljType.PURCHASE_COMPONENT,
    gljType.GREEN_SEEDLING,
    gljType.MAIN_MATERIAL,
    gljType.EQUIPMENT
];
// 会有组成物的材料、机械台班
const compositionTypes =gljUtil.notEditType;//统一定义，方便覆盖

const CP_Col_Width = {          // 多处计算程序界面的列宽统一设置
    rowHeader: 30,
    colHeader: 30,              // 这个是标题栏高度不是宽度，也写在一起
    code: 70,
    serialNo: 50,
    name: 200,
    dispExprUser: 180,
    feeRate: 60,
    displayFieldName: 120,
    statement: 380,
    memo: 120,
    unitFee: 90,
    totalFee: 90
};

const treeNodeCalcType = {
    ctRationCalcProgram: 1,
    ctBillCalcProgram: 2,       // 汇总清单下所有定额的工料机
    ctGatherRationsFees: 3,     // 汇总定额的各个费
    ctGatherBillsFees: 4,       // 汇总清单的各个费
    ctCalcBaseValue: 5,
    ctNull: 6
    // ctCommonUnitFee: 6       // 树结点的手工输入综合单价的方式已废弃，现综合单价只读，引入市场单价。
};

const treeNodeCalcFlag = {      // 主要用于清单。建筑的清单类型计算逻辑不能用公路。这里引入公路的计算Flag
    customTotalPrice: 1,        // 用户直接输入金额
    customUnitPrice: 2,         // 用户直接输入单价，金额是根据用户输入的单价算来的
    customDesignPrice: 3        // 用户直接输入设计单价，金额是根据用户输入的设计单价算来的
    // 末定义情况、0             // 金额是由定额计算的来的
};

const tenderTypes = {
  ttCalc: 1,                // 正向调价
  ttReverseRation: 2,       // 反向调价－调子目
  ttReverseGLJ: 3          // 反向调价－调工料机
};

const calcAllType = {
    catAll: 'all',
    catBills: 'bills',
    catRations: 'ration'
};
const priceTypes = {
    ptBasePrice: 1,
    ptAdjustPrice: 2,
    ptMarketPrice: 3,
    ptDiffPrice: 4
};
const subSheetIndex = {
    ssiRationGLJ: 0,
    ssiRationCoe: 1,
    // ssiRationAssistant: 2,
    ssiQuantityDetail: 3,
    ssiCalcProgram: 2,
    ssiMemo: 5,
    ssiFeature: 6
};
const volumePriceMaps = {
    "量人": gljType.LABOUR,
    "量材": gljType.GENERAL_MATERIAL,
    "量机": gljType.GENERAL_MACHINE,
    "量主": gljType.MAIN_MATERIAL,
    "量设": gljType.EQUIPMENT,

    "人工": gljType.LABOUR,
    "材料": gljType.GENERAL_MATERIAL,
    "机械": gljType.GENERAL_MACHINE,
    "主材": gljType.MAIN_MATERIAL,
    "设备": gljType.EQUIPMENT,

    1: "量人",
    201: "量材",
    301: "量机",
    4: "量主",
    5: "量设"
};
const rationType = {
    ration: 1,
    volumePrice: 2,
    gljRation: 3,
    install:4
};
const rationPrefix = { //定额前缀，补/借
    none: '',
    complementary: '补',
    borrow: '借',
    replace: '换'
};
const rationFrom = {
    std: 'std',
    cpt: 'cpt'
};
let leafBillGetFeeType = {
    rationContent: 0,
    rationPriceConverse: 1,
    rationPrice: 2,
    billsPrice: 3
};
const zanguCalcType = {
    common: 0,
    gatherMaterial: 1
};

//供货方式
const supplyType = {
    //自行采购
    ZXCG: 0,
    //部分甲供
    BFJG: 1,
    //完全甲供
    WQJG: 2,
    //甲定乙供
    JDYG: 3
};

const supplyText = {
    //自行采购
    ZXCG: '自行采购',
    //部分甲供
    BFJG: '部分甲供',
    //完全甲供
    WQJG: '完全甲供',
    //甲定乙供
    JDYG: '甲定乙供'
};

//三材类别
const materialType = {
    1: '钢材',
    2: '钢筋',
    3: '木材',
    4: '水泥',
    5: '标准砖'
};
const materialTypeMap = {
    GC: 1,
    GJ: 2,
    MC: 3,
    SN: 4,
    SZ: 5,
    1:'GC',
    2:'GJ',
    3:'MC',
    4:'SN',
    5:'SZ'

}

//清单固定行
const fixedFlag = commonConstants.fixedFlag;

const gljKeyArray =['code','name','specs','unit','type'];
const rationKeyArray =['code','name','specs','unit','subType'];
const gljLibKeyArray =['code', 'name', 'specs', 'unit', 'gljType'];
const billType ={
    DXFY:1,//大项费用
    FB:2,//分部
    FX:3,//分项
    BILL:4,//清单
    BX:5//补项
};
const billText = {
    1:'费用',
    2:'分部',
    3:'分项',
    4:'清单',
    5:'补项'
};

// 2019.10.30，CSL
// 说明：此处是重庆养护标准，作为代码模板，其它地区需要在其自已的文件中覆盖，如neimeng_2019.js。
// 这里的命名十分头疼，因养护和建筑反过来，且各地区编办不统一，导致各地区命名出现混乱：如“人工费”，重庆建筑指市场价人工费，江西建筑指定额价人工费。
// 规费、利润等这种，实际上是市场价算来的，但并不需要加market前缀。因为它是间接基数，且任何时候只有一个，不存在需要区分的情况。
// 建安费命名没统一，没办法，重庆养护已发布，不允许再改了，维持现状。强迫症者对不住了。
let cpFeeTypes = [
    {type: 'marketLabour', name: '人工费'},
    {type: 'marketMaterial', name: '材料费'},
    {type: 'marketMachine', name: '施工机械使用费'},
    {type: 'marketMachineLabour', name: '施工机械人工费'},
    {type: 'marketEquipment', name: '设备购置费'},
    {type: 'marketDirect', name: '直接费'},

    {type: 'labour', name: '定额人工费'},
    {type: 'material', name: '定额材料费'},
    {type: 'machine', name: '定额施工机械使用费'},
    {type: 'equipment', name: '定额设备费'},
    {type: 'direct', name: '定额直接费'},

    {type: 'measure', name: '措施费'},
    {type: 'measure1', name: '措施费I'},
    {type: 'measure2', name: '措施费II'},
    {type: 'manage', name: '企业管理费'},
    {type: 'force', name: '规费'},
    {type: 'profit', name: '利润'},
    {type: 'tax', name: '税金'},
    {type: 'common', name: '建安费'},
    {type: 'rationCommon', name: '定额建安费'}
    // {type: 'fee1', name: '费用1'},
    // {type: 'fee2', name: '费用2'}
];
//8-27 zhang 这个已经不能用来判断工程类型了
/*const engineeringType = {
    // 建筑工程
    ARCHITECTURE: 1,
    // 装饰工程
    DECORATE: 2,
    // 仿古建筑工程
    ANTIQUE_ARCHITECTURE: 3,
    // 安装工程
    BUILD_IN: 4,
    // 市政土建工程
    MUNICIPAL_CONSTRUCTION: 5,
    // 市政安装工程
    MUNICIPAL_BUILD_IN: 6,
    // 人工土石方工程
    ARTIFICIAL_EARTHWORK: 7,
    // 机械土石方工程
    MECHANICAL_EARTHWORK: 8,
    // 炉窖砌筑工程
    KILN_MASONRY: 9,
    // 园林工程
    GARDEN: 10,
    // 绿化工程
    PLANTING: 11,
    // 单拆除工程
    DISMANTLE: 12,
    // 建筑修缮工程
    BUILDING_REPAIR: 13,
    // 安装修缮工程
    BUILD_IN_REPAIR: 14
};*/
const blockType ={
    RATION:1,//定额
    FB:2,//分部
    FX:3,//分项
    BILL:4,//清单
    BX:5,//补项
    DXFY:6//大项费用
};

const filterType = {
    ALL:'0',
    LABOUR:'1',
    GENERAL_MATERIAL:'2',
    GENERAL_MACHINE:'3',
    MAIN_MATERIAL:'4',
    EQUIPMENT:'5',
    FBFX:'6',
    TECH:'7',
    JGCL:'8',
    ZGCL:'9',
    SCHZ:'10',
    ZYCL:'11'
};
const filterTypeArray = ['1','2','3','4','5'];

const installFeeType = ['子目费用','分项费用','措施费用'];
const installSectionBase = ['分别按人材机乘系数','人工','材料','机械'];
const supplyComboMap = [{text:"自行采购",value:0},{text:"完全甲供",value:2},{text:"部分甲供",value:1},{text:"甲定乙供",value:3}];//后来调整了下拉选项的顺序，为了不改之前的业务逻辑，这里的值对换了一下
const materialComboMap = [
    {text:materialType[materialTypeMap.GC],value:materialTypeMap.GC},
    {text:materialType[materialTypeMap.GJ],value:materialTypeMap.GJ},
    {text:materialType[materialTypeMap.MC],value:materialTypeMap.MC},
    {text:materialType[materialTypeMap.SN],value:materialTypeMap.SN},
    {text:materialType[materialTypeMap.SZ],value:materialTypeMap.SZ}
];