import CONFIG from "@/config";
import { iunitprice } from "@/utils/expression";

export default function useColumns() {
  const TableColumns = [
    {
      item: { key: "puOrgName", title: "采购组织", required: true, width: 150 },
      attr: {
        is: "el-popover-select-v2",
        valueKey: "name",
        referName: "ORG_PARAM",
        dataMapping: {
          puOrg: "code",
          puOrgName: "name",
        },
      },
    },
    {
      item: { key: "code", title: "合同编码", width: 150 },
      attr: { is: "el-input" },
    },
    {
      item: { key: "lastPuMoney", 
        title: "年度采购额", width: 100 ,required: true,},
      attr: {
        is: "el-input-number",
      },
    },
    {
      item: { key: "buyerName", title: "采购员", width: 100 },
      attr: {
        is: "el-popover-select-v2",
        valueKey: "name",
        referName: "CONTACTS_PARAM",
        dataMapping: {
          buyer: "code",
          buyerName: "name",
          puDept: "deptId",
          puDeptName: "deptName",
        },
      },
    },

    {
      item: {
        key: "isPartya",
        title: "采购是否甲方",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-select",
        dictName: "sys_yes_no",
      },
    },
    {
      item: {
        key: "contractType",
        title: "合同类型",
        required: true,
        width: 100,
      },
      attr: { is: "el-select", dictName: "puarchase_contract_contract_type" },
    },
    {
      item: { key: "puMoneyYear", title: "合同总金额", width: 100 ,required: true,},
      attr: {
        is: "el-input-number",
      },
    },
    {
      item: {
        key: "puDeptName",
        title: "采购部门",
        width: 100,
      },
      attr: {
        is: "el-popover-select-v2",
        valueKey: "name",
        referName: "DEPT_PARAM",
        dataMapping: {
          puDept: "code",
          puDeptName: "name",
        },
      },
    },
    {
      item: {
        key: "supplierName",
        title: "供应商",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-popover-select-v2",
        valueKey: "name",
        referName: "SUPPLIER_PARAM",
        dataMapping: {
          supplier: "code",
          supplierName: "name",
        },
      },
    },
    {
      item: {
        key: "contractName",
        title: "合同名称",
        required: true,
        width: 100,
      },
      attr: { is: "el-input" },
    },
    {
      item: {
        key: "grossRateAverage",
        title: "平均毛利率 (%)",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-input-number",
        precision: 2,
      },
    },
    {
      item: {
        key: "approveFlow",
        title: "审批流程",
        required: true,
        width: 100,
      },
      attr: { is: "el-select", dictName: "puarchase_contract_approve_flow" },
    },
    {
      item: {
        key: "supplierTier",
        title: "供应商层级",
        required: true,
        width: 100,
      },
      attr: { is: "el-select", dictName: "puarchase_contract_supplier_tier" },
    },
    {
      item: {
        key: "effectiveDate",
        title: "合同生效日期",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-date-picker",
        valueFormat: "yyyy-MM-dd",
      },
    },
    {
      item: {
        key: "brandGrossRate",
        title: "同类品牌及毛利率 (%)",
        required: true,
      },
      // attr: {
      //   is: "el-input-number",
      //   precision: 2,
      // },
      attr: { is: "el-input", },
    },
    {
      item: {
        key: "contractFormat",
        title: "合同格式",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-select",
        dictName: "puarchase_contract_contract_format",
      },
    },
    {
      item: {
        key: "consumableClass",
        title: "耗材类别",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-select",
        dictName: "puarchase_contract_consumable_class",
      },
    },
    {
      item: {
        key: "endDate",
        title: "合同终止日期",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-date-picker",
        valueFormat: "yyyy-MM-dd",
        disabled: (prop) => !prop.effectiveDate,
      },
    },
    {
      item: {
        key: "invoiceTax",
        title: "发票税率 (%)",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-popover-select-v2",
        valueKey: "ntaxrate",
        referName: "TAX_RATE_PARAM",
        dataMapping: {
          invoiceTax: "ntaxrate",
        },
      },
    },
    {
      item: {
        key: "emergencyDegree",
        title: "紧急程度",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-select",
        dictName: "puarchase_contract_emergency_degree",
      },
    },
    {
      item: {
        key: "productName",
        title: "产品类别&名称",
        required: true,
        width: 100,
      },
      attr: { is: "el-input" },
    },
    {
      item: { key: "signDate", title: "合同签订日期", width: 100 ,required: true,},
      attr: { is: "el-date-picker", valueFormat: "yyyy-MM-dd" },
    },
    {
      item: {
        key: "deliveryType",
        title: "交货方式",
        required: true,
        width: 100,
      },
      attr: { is: "el-select", dictName: "puarchase_contract_delivery_type" },
    },
    {
      item: { key: "source", title: "合同来源", width: 100 },
      attr: { is: "el-input", value: "自制", disabled: true },
    },
    {
      item: { key: "principalManufacturers", 
      title: "主要厂家", width: 100,
      required: true,
     },
      attr: { is: "el-input", },
    },
    {
      item: {
        key: "guaranteePeriodEnd",
        title: "质保期限",
        required: true,
        width: 100,
      },
      // attr: { is: "el-input-number", precision: 2 },
      attr: { is: "el-input", },
    },
    {
      item: { key: "freightMethods",
       title: "运费承担方式", width: 100 ,required: true,
      },
      attr: {
        is: "el-select",
        dictName: "puarchase_contract_freight_methods",
      },
    },
    {
      item: { key: "createTime", title: "合同创建时间", width: 100 },
      attr: { is: "el-date-picker", valueFormat: "yyyy-MM-dd",disabled:true,},
    },
    {
      item: { key: "project", title: "项目医院", required: true, width: 100 },
      attr: { is: "el-input" },
    },
    {
      item: { key: "contractPartycName", title: "合同丙方", width: 100 },
      attr: {
        is: "el-popover-select-v2",
        valueKey: "name",
        referName: "SUPPLIER_PARAM",
        dataMapping: {
          contractPartyc: "code",
          contractPartycName: "name",
        },
      },
    },

    {
      item: {
        key: "exemptionPostageCondtion",
        title: "包邮条件",
        span: 12,
        width: 100,
      },
      attr: {
        is: "el-input",
        placeholder:
          "当运费承担方式为供应商有条件承担时，该字段必填，填写要求，写明什么条件下供应商承担全部，什么条件下我方承担，什么条件下分别承担",
      },
    },
    {
      item: {
        key: "isTarget",
        title: "是否有指标",
        required: true,
        width: 100,
      },
      attr: { is: "el-select", dictName: "sys_yes_no" },
    },
    {
      item: {
        key: "contractTarget",
        title: "合同指标",
        width: 100,
        required: (prop) => prop.isTarget === "Y",
      },
      attr: { is: "el-input", placeholder: '当【是否有指标】="有"时，必填' },
    },
    // {
    //   item: { key: "", title: "交易类型", required: true, span: 12,},
    //   attr: { is: "el-input" },
    // },
    {
      item: {
        key: "rollbackPolicy",
        title: "退换货政策",
        required: true,
        span: 12,
      },
      attr: { is: "el-input" },
    },
    {
      item: {
        key: "isRebate",
        title: "是否有返利",
        required: true,
        width: 100,
      },
      attr: { is: "el-select", dictName: "sys_yes_no" },
    },

    {
      item: {
        key: "rebatePolicy",
        title: "返利政策",
        span: 18,
        width: 100,
        required: (prop) => prop.isRebate === "Y",
      },
      attr: {
        is: "el-input",
        placeholder: '当【是否有返利】="有"时，必填',
      },
    },
   
    {
      item: {
        key: "contractContent",
        title: "合同主要内容",
        required: true,
        span: 24,
        width: 100,
      },
      attr: { is: "el-input", type: "textarea",rows:3, },
    },

    {
      item: { key: "enquiryCode", title: "询价单号", width: 100 },
      attr: { is: "el-input" },
    },
   

    {
      item: { key: "electronicContract", title: "电子合同", span: 6, width: 100 },
      attr: { is: "el-input" },
    },
    
    {
      item: { key: "refusalReasons", title: "拒绝理由", span: 6, width: 100 },
      attr: { is: "el-input" },
    },
    {
      item: { key: "status", title: "状态" },
      attr: {
        is: "el-select",
        dictName: "documents_status",
        disabled: true,
        value: "0",
      },
    },
    
    {
      item: { key: "externalFile", title: "附件", span: 12, width: 100 },
      attr: { is: "el-file-upload", fileType: ["pdf","doc","docx","png","jpg","xls","xlsx"] },
    },
    {
      item: {
        key: "puFile",
        title: "盖章合同附件",
        span: 12,
        width: 100,
      },
      attr: { is: "el-file-upload", fileType: ["pdf"] },
    },
    // {
    //   item: {
    //     key: "supplierFile",
    //     title: "供应商盖章合同附件",
    //     span:12,
    //     width: 100,
    //   },
    //   attr: { is: "el-file-upload", fileType: ["pdf"] },
    // },
    // {
    //   item: {
    //     key: "",
    //     title: "电子合同供应商附件",
    //     span: 12,
    //     width: 100,
    //   },
    //   attr: { is: "el-file-upload", fileType: ["pdf"] },
    // },
    {
      item: {
        key: "paymentAgreement",
        title: "付款协议",
        required: true,
        width: 100,
      },
      attr: {
        is: "el-popover-select-v2",
        valueKey: "name",
        referName: "PAYAGREEMENT_PARAM",
        dataMapping: {
          paymentAgreement: "code",
          paymentAgreementName: "name",
        },
      },
    },
    {
      item: { key: "taxPrice", title: "价税合计", width: 100 },
      attr: {
        is: "el-input-number",
      },
    },
    {
      item: { key: "currencyName", title: "币种", required: true, width: 100 },
      attr: {
        is: "el-popover-select-v2",
        valueKey: "name",
        referName: "CURRENCY_PARAM",
        dataMapping: {
          currency: "code",
          currencyName: "name",
        },
      },
    },
    {
      item: { key: "guaranteePeriod", title: "质保期", width: 100 },
      attr: {
        is: "el-input-number",
      },
    },
    








    
    
    // {
    //   item: { key: "externalContract", title: "外部合同号", width: 100 },
    //   attr: { is: "el-input" },
    // },
    
    // {
    //   item: { key: "projectCode", title: "项目编号", width: 100 },
    //   attr: { is: "el-input" },
    // },
    // {
    //   item: { key: "projectName", title: "项目名称", width: 100 },
    //   attr: { is: "el-input" },
    // },
    // { item: { key: "area", title: "区域" }, attr: { is: "el-input" } },
    // {
    //   item: { key: "consigneePhone", title: "收货人联系方式", width: 100 },
    //   attr: { is: "el-input" },
    // },
    
  ].map(({ item, attr }) => ({
    attr,
    item: { ...item, hidden: true, span: item.span || 6 },
  }));





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