import CONFIG from "@/config";

export default function useColumns() {
  const TableColumns = [
    {
      item: { width:100,key: "puOrgName", title: "采购组织", require: true ,},
      attr: {
        is: "el-popover-select-v2",
        valuewidth:100,key: "name",
        referName: "ORG_PARAM",
        dataMapping: {
          puOrg: "code",
          puOrgName: "name",
        },
      },
    },
    { item: { width:100,key: "code", title: "合同编码" }, attr: { is: "el-input" } },
    {
      item: { width:100,key: "status", title: "状态" },
      attr: {
        is: "el-select",
        dictName: "documents_status",
        disabled: true,
        value: "0",
      },
    },
    {
      item: { width:100,key: "lastPuMoney", title: "上年度采购额" },
      attr: {
        is: "el-input-number",
        precision: CONFIG.precision,
      },
    },
    {
      item: { width:100,key: "buyerName", title: "采购员", require: true ,},
      attr: {
        is: "el-popover-select-v2",
        valuewidth:100,key: "name",
        referName: "CONTACTS_PARAM",
        dataMapping: {
          buyer: "code",
          buyerName: "name",
          puDept: "deptId",
          puDeptName: "deptName",
        },
      },
    },
    {
      item: { width:100,key: "supplierName", title: "供应商", require: true, },
      attr: {
        is: "el-popover-select-v2",
        valuewidth:100,key: "name",
        referName: "SUPPLIER_PARAM",
        dataMapping: {
          supplier: "code",
          supplierName: "name",
        },
      },
    },
    {
      item: { width:100,key: "contractType", title: "合同类型", require: true ,},
      attr: { is: "el-select", dictName: "puarchase_contract_contract_type" },
    },
    {
      item: { width:100,key: "puMoneyYear", title: "本年度采购额" },
      attr: {
        is: "el-input-number",
        precision: CONFIG.precision,
      },
    },
    {
      item: { width:100,key: "puDeptName", title: "采购部门", require: true, },
      attr: {
        is: "el-popover-select-v2",
        valuewidth:100,key: "name",
        referName: "DEPT_PARAM",
        dataMapping: {
          puDept: "code",
          puDeptName: "name",
        },
      },
    },
    {
      item: { width:100,key: "supplierTier", title: "供应商层级", require: true ,},
      attr: { is: "el-select", dictName: "puarchase_contract_supplier_tier" },
    },
    {
      item: { width:100,key: "contractName", title: "合同名称", require: true, },
      attr: { is: "el-input" },
    },
    {
      item: { width:100,key: "grossRateAverage", title: "平均毛利率 (%)", require: true ,},
      attr: {
        is: "el-input-number",
        precision: 2,
      },
    },
    {
      item: { width:100,key: "approveFlow", title: "审批流程", require: true, },
      attr: { is: "el-select", dictName: "puarchase_contract_approve_flow" },
    },
    {
      item: { width:100,key: "consumableClass", title: "耗材类别", require: true, },
      attr: {
        is: "el-select",
        dictName: "puarchase_contract_consumable_class",
      },
    },
    {
      item: { width:100,key: "effectiveDate", title: "合同生效日期", require: true ,},
      attr: {
        is: "el-date-picker",
        valueFormat: "yyyy-MM-dd",
      },
    },
    {
      item: {
        width:100,key: "brandGrossRate",
        title: "同类品牌及毛利率 (%)",
        require: true,
      },
      attr: {
        is: "el-input-number",
        precision: 2,
      },
    },
    {
      item: { width:100,key: "contractFormat", title: "合同格式", require: true, },
      attr: {
        is: "el-select",
        dictName: "puarchase_contract_contract_format",
      },
    },
    {
      item: { width:100,key: "productName", title: "产品类别&名称", require: true, },
      attr: { is: "el-input" },
    },
    {
      item: { width:100,key: "endDate", title: "合同终止日期", require: true ,},
      attr: { is: "el-date-picker", valueFormat: "yyyy-MM-dd" },
    },
    {
      item: { width:100,key: "invoiceTax", title: "发票税率 (%)", require: true,},
      attr: {
        is: "el-popover-select-v2",
        valuewidth:100,key: "ntaxrate",
        referName: "TAX_RATE_PARAM",
        dataMapping: {
          invoiceTax: "ntaxrate",
        },
      },
    },
    {
      item: { width:100,key: "emergencyDegree", title: "紧急程度", require: true ,},
      attr: {
        is: "el-select",
        dictName: "puarchase_contract_emergency_degree",
      },
    },
    {
      item: { width:100,key: "project", title: "项目医院", require: true ,},
      attr: { is: "el-input" },
    },
    {
      item: { width:100,key: "deliveryType", title: "交货方式", require: true, },
      attr: { is: "el-select", dictName: "puarchase_contract_delivery_type" },
    },
    {
      item: { width:100,key: "source", title: "合同来源" },
      attr: { is: "el-input", value: "自制", disabled: true, },
    },
    {
      item: { width:100,key: "contractPartycName", title: "合同丙方" },
      attr: {
        is: "el-popover-select-v2",
        valuewidth:100,key: "name",
        referName: "SUPPLIER_PARAM",
        dataMapping: {
          contractPartyc: "code",
          contractPartycName: "name",
        },
      },
    },
    {
      item: { width:100,key: "guaranteePeriodEnd", title: "质保期限", require: true ,},
      attr: { is: "el-input-number", precision: 2 },
    },
    {
      item: { width:100,key: "freightMethods", title: "运费承担方式" },
      attr: {
        is: "el-select",
        dictName: "puarchase_contract_freight_methods",
      },
    },
    {
      item: { width:100,key: "signDate", title: "合同签订日期" },
      attr: { is: "el-date-picker", valueFormat: "yyyy-MM-dd" },
    },
    {
      item: { width:100,key: "isTarget", title: "是否有指标", require: true ,},
      attr: { is: "el-select", dictName: "sys_yes_no" },
    },
    {
      item: { width:100,key: "contractTarget", title: "合同指标", require: true, },
      attr: { is: "el-input", placeholder: '当【是否有指标】="有"时，必填' },
    },
    {
      item: { width:100,key: "exemptionPostageCondtion", title: "包邮条件", span: 12 },
      attr: {
        is: "el-input",
        placeholder:
          "当运费承担方式为供应商有条件承担时，该字段必填，填写要求，写明什么条件下供应商承担全部，什么条件下我方承担，什么条件下分别承担",
      },
    },
    {
      item: { width:100,key: "isRebate", title: "是否有返利", require: true, },
      attr: { is: "el-select", dictName: "sys_yes_no" },
    },
    {
      item: { width:100,key: "rebatePolicy", title: "返利政策", span: 18 },
      attr: {
        is: "el-input",
        placeholder: '当【是否有返利】="有"时，必填',
      },
    },
    {
      item: { width:100,key: "externalContract", title: "外部合同号" },
      attr: { is: "el-input" },
    },
    {
      item: { width:100,key: "rollbackPolicy", title: "退换货政策", require: true ,},
      attr: { is: "el-input" },
    },
    {
      item: { width:100,key: "enquiryCode", title: "询价单号" },
      attr: { is: "el-input" },
    },
    {
      item: {
        width:100,key: "contractContent",
        title: "合同主要内容",
        require: true,
        span: 24,
      },
      attr: { is: "el-input", type: "textarea" },
    },
    {
      item: { width:100,key: "refusalReasons", title: "拒绝理由", span: 24 },
      attr: { is: "el-input" },
    },
    // {
    //   item: { width:100,key: "pigeonhole", title: "是否归档" },
    //   attr: { is: "el-select", dictName: "sys_yes_no", disabled: true },
    // },
    // {
    //   item: { width:100,key: "pigeonholeFile", title: "归档附件", span: 24 },
    //   attr: { is: "el-file-upload", fileType: ["pdf"], disabled: true },
    // },
    {
      item: { width:100,key: "externalFile", title: "对外附件", span: 24 },
      attr: { is: "el-file-upload", fileType: ["pdf"] },
    },
    {
      item: { width:100,key: "puFile", title: "采购商盖章合同附件", span: 24 },
      attr: { is: "el-file-upload", fileType: ["pdf"] },
    },
    {
      item: { width:100,key: "supplierFile", title: "供应商盖章合同附件", span: 24 },
      attr: { is: "el-file-upload", fileType: ["pdf"] },
    },
    {
      item: { width:100,key: "projectCode", title: "项目编号" },
      attr: { is: "el-input" },
    },
    {
      item: { width:100,key: "projectName", title: "项目名称" },
      attr: { is: "el-input" },
    },
    { item: { width:100,key: "area", title: "区域" }, attr: { is: "el-input" } },
    {
      item: { width:100,key: "consigneePhone", title: "收货人联系方式" },
      attr: { is: "el-input" },
    },
    {
      item: { width:100,key: "paymentAgreement", title: "付款协议", require: true, },
      attr: {
        is: "el-popover-select-v2",
        valuewidth:100,key: "name",
        referName: "PAYAGREEMENT_PARAM",
        dataMapping: {
          paymentAgreement: "code",
          paymentAgreementName: "name",
        },
      },
    },
    {
      item: { width:100,key: "taxPrice", title: "价税合计" },
      attr: {
        is: "el-input-number",
        precision: CONFIG.precision,
      },
    },
    {
      item: { width:100,key: "currencyName", title: "币种", require: true, },
      attr: {
        is: "el-popover-select-v2",
        valuewidth:100,key: "name",
        referName: "CURRENCY_PARAM",
        dataMapping: {
          currency: "code",
          currencyName: "name",
        },
      },
    },
    {
      item: { width:100,key: "guaranteePeriod", title: "质保期" },
      attr: {
        is: "el-input-number",
        precision: CONFIG.precision,
      },
    },
  ].map(({ item, attr }) => ({
    attr,
    item: { ...item, hidden: true, span: item.span || 6 },
  }));

  const TabColumns = [
    {
      item: { title: "物料基本信息", width:100,key: "contractItemList" },
      attr: { value: [] },
      TableColumns: [
        {
          item: {
            title: "物料名称",
            width:100,key: "materialName",
            require: true ,
          },
          attr: {
            is: "el-popover-select-v2",
            valuewidth:100,key: "name",
            referName: "MATERIAL_PARAM",
            dataMapping: {
              material: "code",
              materialName: "name",
              puUnit: "unitIdName",
              registration: "registrationNo",
              specification: "specification",
              manufacturer: "manufacturerIdName",
            },
          },
        },
        {
          item: {
            title: "物料编码",
            width:100,key: "material",
            require: true ,
          },
          attr: {},
        },
        {
          item: {
            title: "规格",
            width:100,key: "specification",
          },
          attr: {},
        },
        {
          item: {
            title: "生产厂家",
            width:100,key: "manufacturer",
          },
          attr: {
            is: "el-input",
          },
        },
        {
          item: { title: "采购单位", width:100,key: "puUnit" },
          attr: {
            is: "el-popover-select-v2",
            valuewidth:100,key: "name",
            referName: "UNIT_PARAM",
            dataMapping: {
              puUnit: "name",
            },
          },
        },
        {
          item: { title: "税率%", width:100,key: "tax" ,require: true, },
          attr: {
            is: "el-popover-select-v2",
            valuewidth:100,key: "ntaxrate",
            referName: "TAX_RATE_PARAM",
            dataMapping: {
              tax: "ntaxrate",
            },
          },
        },
        {
          item: { title: "采购数量", width:100,key: "qty" },
          attr: {
            is: "el-input-number",
          },
        },
        {
          item: { title: "含税单价", width:100,key: "taxPrice" ,require: true, },
          attr: {
            is: "el-input-number",
            precision: CONFIG.precision,
          },
        },
        {
          item: { title: "含税金额合计", width:100,key: "taxMoney" },
          attr: {
            formatter: (prop) => {
              const { qty = 0, taxPrice = 0 } = prop;
              prop.taxMoney = (qty * taxPrice * 1).toFixed(CONFIG.precision);
              return prop.taxMoney;
            },
          },
        },
        {
          item: { title: "无税单价", width:100,key: "taxFreePrice" ,require: true, },
          attr: {
            formatter: (prop) => {
              const { tax = 0, taxPrice = 0 } = prop;
              prop.taxFreePrice = ((taxPrice / (tax / 100 + 1)) * 1).toFixed(
                CONFIG.precision
              );
              return prop.taxFreePrice;
            },
          },
        },
        {
          item: { title: "无税金额合计", width:100,key: "taxFreeMoney" },
          attr: {
            formatter: (prop) => {
              const { qty = 0, tax = 0, taxPrice = 0 } = prop;
              prop.taxFreeMoney = (
                qty *
                (taxPrice / (tax / 100 + 1)) *
                1
              ).toFixed(CONFIG.precision);
              return prop.taxFreeMoney;
            },
          },
        },
        {
          item: { title: "注册证号及备案凭证号", width:100,key: "registration" },
          attr: {
            is: "el-input",
          },
        },
        {
          item: { title: "收货客户", width:100,key: "customerName" },
          attr: {
            is: "el-popover-select-v2",
            valuewidth:100,key: "name",
            referName: "CUSTOMER_PARAM",
            dataMapping: {
              customer: "code",
              customerName: "name",
            },
          },
        },
      ],
    },
    {
      item: { title: "合同条款", width:100,key: "contractClauseList" },
      attr: {
        value: [],
      },
      TableColumns: [
        {
          item: { title: "条款编码", width:100,key: "code", width: "auto" },
          attr: { is: "el-input" },
        },
        {
          item: { title: "条款名称", width:100,key: "name", width: "auto" },
          attr: { is: "el-input" },
        },
        {
          item: { title: "条款内容", width:100,key: "content", width: "auto" },
          attr: { is: "el-input" },
        },
        {
          item: { title: "变量序号", width:100,key: "variableRowno", width: "auto" },
          attr: { is: "el-input" },
        },
        {
          item: { title: "变量内容", width:100,key: "variableContent", width: "auto" },
          attr: { is: "el-input" },
        },
      ],
    },
    {
      item: { title: "合同费用", width:100,key: "contractExpenseList" },
      attr: {
        value: [],
      },
      TableColumns: [
        {
          item: { title: "费用编码", width:100,key: "code", width: "auto" },
          attr: { is: "el-input" },
        },
        {
          item: { title: "费用名称", width:100,key: "name", width: "auto" },
          attr: { is: "el-input" },
        },
        {
          item: { title: "费用金额", width:100,key: "money", width: "auto" },
          attr: { is: "el-input-number", precision: CONFIG.precision },
        },
      ],
    },
    {
      item: { title: "付款协议信息", width:100,key: "contractAgreementList" },
      attr: {
        value: [],
      },
      TableColumns: [
        {
          item: { title: "付款阶段", width:100,key: "satge" },
          attr: { is: "el-input-number" },
        },
        {
          item: {
            title: "付款起点",
            width:100,key: "origin",
            require: true 
          },
          attr: {
            is: "el-select",
            dictName: "puarchase_contract_origin",
          },
        },
        {
          item: { title: "账期天数", width:100,key: "paymetDays" ,require: true, },
          attr: {
            is: "el-input-number",
            precision: 2,
          },
        },
        {
          item: { title: "付款比例%", width:100,key: "ratio",require: true,  },
          attr: {
            is: "el-input-number",
            precision: CONFIG.precision,
          },
        },
        {
          item: { title: "付款金额", width:100,key: "money" },
          attr: {
            is: "el-input-number",
            precision: CONFIG.precision,
          },
        },
        {
          item: {
            title: "是否预付款",
            width:100,key: "isAdvance",
          },
          attr: {
            is: "el-select",
            dictName: "sys_yes_no",
          },
        },
        {
          item: {
            title: "是否质保金",
            width:100,key: "isQuality",
          },
          attr: {
            is: "el-select",
            dictName: "sys_yes_no",
          },
        },
        {
          item: {
            title: "结算方式",
            width:100,key: "paymentMeans",
            require:true,
          },
          attr: {
            is: "el-popover-select-v2",
            valuewidth:100,key: "name",
            referName: "BALATYPE_PARAM",
            dataMapping: {
              paymentMeans: "name",
            },
          },
        },
        {
          item: {
            title: "需进度确认",
            width:100,key: "schedule",
          },
          attr: {
            is: "el-select",
            dictName: "sys_yes_no",
          },
        },
      ],
    },
    {
      item: { title: "合同执行组织范围", width:100,key: "contractApplyOrgList" },
      attr: { value: [] },
      TableColumns: [
        {
          item: {
            title: "组织名称",
            width:100,key: "orgName",
            width: "auto",
          },
          attr: {
            is: "el-popover-select-v2",
            valuewidth:100,key: "name",
            referName: "ORG_PARAM",
            dataMapping: {
              org: "code",
              orgName: "name",
            },
          },
        },
        { item: { title: "组织编码", width:100,key: "org", width: "auto" }, attr: {} },
      ],
    },
  ].map(({item,attr,TableColumns}) =>({
    attr,
    item,
    TableColumns:TableColumns.map(({item, attr}) =>({
      attr,
      item: { ...item, hidden: true, span: item.span || 6 },
  
    }))

  }))
  ;
  return { TableColumns, TabColumns };
}
