import { postServiceOrderQueryCustomerInformation } from '@/services';
import { enumToProTableEnumValue } from '@/utils';

export const COMFIR_RECEIPT_IMAGES_NUMBER = 3;

export const PAYMENT_CHANNEL_OPTIONS = {
  ALIPAY: '支付宝',
  WECHAT: '微信',
  BANK_TRANSFER: '银行转账',
};

export const PAYMENT_METHOD_OPTIONS = {
  UNPAID: '未付款',
  TAOBAO_ORDER_HAS_BEEN_PAID: '淘宝订单已付款',
  PAYMENT_IN_ADVANCE: '预付款',
  WITHHOLDING_ADVANCE_DEPOSIT: '扣预存',
  PLATFORM_SETTLEMENT: '平台结算',
  CASH_ON_DELIVERY: '货到付款',
};

export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = {
  APPLICATION_PROJECT: '应用项目事业部门',
  TEST: '测试事业部门',
  CUSTOMIZATION: '定制化事业部门',
  EXPERIMENTAL_EQUIPMENT: '实验设备事业部门',
  EXPERIMENTAL_CONSUMABLES: '实验耗材事业部门',
  CLAMPING_APPARATUS: '工夹具事业部',
};

export const INVOCING_STATUS_OPTIONS_OLD = {
  UN_INVOICE: '不需开票',
  SPECIALLY_INVOICED: '专票',
  COMMON_INVOICED: '普票',
  INVOICED: '需要开票',
};

export const PROCURE_ORDER_STATUS = {
  PROCUREMENT_HAS_BEEN_ORDERED: '已下单',
  PROCURE_NOT_ORDERED: '未下单',
};

export const INVOCING_STATUS_OPTIONS = {
  UN_INVOICE: '不需开票',
  SPECIALLY_INVOICED: '专票',
  COMMON_INVOICED: '普票',
};

export const INVOCING_STATUS = {
  UN_INVOICE: '不需开票',
  SPECIALLY_INVOICED: '专票',
  COMMON_INVOICED: '普票',
  INVOICED: '需要开票',
};

/**
 * 普通审核
 * 财务审核
 * 采购审核
 */
export const CHECK_TYPE = {
  NORMAL: 'NORMAL',
  FINALCIAL: 'FINALCIAL',
  PROCURE: 'PROCURE',
  SUPPLIER: 'SUPPLIER',
  AFTER_SALES: 'AFTER_SALES',
};

/**
 * 是否需要开票
 * @param subOrder
 */
export const getNeedInvoicing = (subOrder: any) => {
  if (subOrder.invoicingTime !== null && subOrder.invoicingTime !== undefined) {
    return '已开票';
  }
  if (subOrder.invoicingStatus === 'UN_INVOICE') {
    return '不需开票';
  }
  return '需要开票';
};

/**
 * 开砖专票还是普票
 * @param subOrder
 * @returns
 */
export const getInvoicingType = (subOrder: any) => {
  let invoicingStatus = subOrder.invoicingStatus;
  if (invoicingStatus === 'SPECIALLY_INVOICED') {
    return '开专票';
  }

  if (invoicingStatus === 'COMMON_INVOICED') {
    return '开普票';
  }

  return undefined;
};

export const LOGISTICS_STATUS_OPTIONS = {
  JINGDONG_LOGISTICS: '京东',
  SF_EXPRESS: '顺丰',
  DEBANG_LOGISTICS: '德邦物流',
  OTHER_LOGISTICS: '其他物流方式',
};

export const ORDER_STATUS_OPTIONS = {
  UNAUDITED: '未审核',
  FINANCE_PROCESS: '财务已审核',
  AUDITED: '已审核',
  PROCURE_UN_PROCESS: '采购未审核',
  PROCURE_PROCESS: '采购已审核',
  PROCURE_PROCESS_FOR_MINE: '采购待打印',
  PROCURE_WAIT_SHIP: '采购待发货',
  SUPPLIER_WAIT_SHIP: '供应商待发货',
  WAIT_SHIP: '待发货',
  SHIPPED: '已发货',
  CONFIRM_RECEIPT: '确认收货',
  AUDIT_FAILED: '审核失败',
  IN_AFTER_SALES: '售后中',
  AFTER_SALES_COMPLETION: '售后完成',
  AFTER_SALES_FAILURE: '售后失败',
  NO_NEED_SEND: '无需发货',
  PROCURE_CONVERT_WAREHOUSE_KEEPER: '采购转仓库',
};

export const AFTE_SALES_PLAN_OPTIONS = {
  RETURNS_OR_REFUNDS: '退货/退款',
  EXCHANGE_GOODS: '换货',
  FREE_ORDER: '免单',
  DISCOUNT: '折扣',
};

export const FINANCIAL_STATUS_OPTIONS = {
  INVOICING: '已开票',
  UN_INVOICING: '取消开票',
};

export const AFTER_INVOICING_STATUS = {
  NOT_YET_INVOICED: '尚未开票',
  APPLY_FOR_INVOICING: '申请开票',
  PARTIAL_INVOICING: '部分开票',
  COMPLETE_INVOICING: '完全开票',
};

export const TAGS_COLOR = new Map<string, string>([
  ['UN_INVOICE', 'success'],
  ['INVOICED', 'processing'],
  ['SPECIALLY_INVOICED', 'processing'],
  ['COMMON_INVOICED', 'processing'],
  ['AFTER_INVOICED', 'success'],
  ['UNAUDITED', 'warning'],
  ['AUDITED', 'processing'],
  ['WAIT_SHIP', 'processing'],
  ['SHIPPED', 'processing'],
  ['AUDIT_FAILED', 'error'],
  ['CONFIRM_RECEIPT', 'processing'],
  ['FINANCE_PROCESS', 'processing'],
  ['PROCURE_UN_PROCESS', 'processing'],
  ['PROCURE_PROCESS', 'processing'],
  ['SUPPLIER_WAIT_SHIP', 'processing'],
  ['SUPPLIER_SHIPPED', 'processing'],
  ['IN_AFTER_SALES', 'red'],
  ['AFTER_SALES_COMPLETION', 'red'],
  ['PROCURE_PROCESS_FOR_MINE', 'processing'],
  ['PROCURE_WAIT_SHIP', 'processing'],
  ['NO_NEED_SEND', 'success'],
  ['PROCURE_CONVERT_WAREHOUSE_KEEPER', 'processing'],
  ['AFTER_SALES_FAILURE', 'red'],
]);
export const SALES_CODE_OPTIONS = [
  { label: 'D-Linda', value: 'D-Linda' },
  { label: 'G-Rita', value: 'G-Rita' },
  { label: 'G-Iris', value: 'G-Iris' },
  { label: 'X-Jessica', value: 'X-Jessica' },
  { label: 'G-Daniel', value: 'G-Daniel' },
  { label: 'D-Strong', value: 'D-Strong' },
  { label: 'T-Alice', value: 'T-Alice' },
  { label: 'X-Demi', value: 'X-Demi' },
  { label: 'T-Nico', value: 'T-Nico' },
  { label: 'T-kk', value: 'T-kk' },
  { label: 'T-Alma', value: 'T-Alma' },
  { label: 'T-Dream', value: 'T-Dream' },
  { label: 'T-Aimee', value: 'T-Aimee' },
  { label: 'D-Tina', value: 'D-Tina' },
  { label: 'D-Vivi', value: 'D-Vivi' },
  { label: 'X-Ada', value: 'X-Ada' },
  { label: 'X-Amy', value: 'X-Amy' },
  { label: 'G-Nancy', value: 'G-Nancy' },
  { label: 'X-Sara', value: 'X-Sara' },
  { label: 'X-CC', value: 'X-CC' },
  { label: 'X-Lucy', value: 'X-Lucy' },
  { label: 'X-Lulu', value: 'X-Lulu' },
  { label: 'X-P', value: 'X-P' },
  { label: 'TB', value: 'TB' },
  { label: 'TBHC', value: 'TBHC' },
  { label: 'TBC', value: 'TBC' },
  { label: 'G-Lisa', value: 'G-Lisa' },
  { label: 'G-Lynn', value: 'G-Lynn' },
  { label: 'G-Smile', value: 'G-Smile' },
  { label: 'G-Yvonne', value: 'G-Yvonne' },
  { label: 'G-Wendy', value: 'G-Wendy' },
  { label: 'T-Andy', value: 'T-Andy' },
  { label: 'CQ_Peter', value: 'CQ_Peter' },
  { label: 'MA_A_Mao', value: 'MA_A_Mao' },
  { label: 'CQ-2', value: 'CQ-2' },
  { label: 'JJ', value: 'JJ' },
  { label: 'CQ-3', value: 'CQ-3' },
  { label: 'GW', value: 'GW' },
];

// export const SALES_CODE_OPTIONS = [
//   { label: 'HQ_Linda', value: 'HQ_Linda' },
//   { label: 'HQ-1_Rita', value: 'HQ-1_Rita' },
//   { label: 'HQ-2_Lisa', value: 'HQ-2_Lisa' },
//   { label: 'HQ-3_iris', value: 'HQ-3_iris' },
//   { label: 'HQ-4_Lynn', value: 'HQ-4_Lynn' },
//   { label: 'HQ-5_Jessica', value: 'HQ-5_Jessica' },
//   { label: 'HQ-6_smile', value: 'HQ-6_smile' },
//   { label: 'HQ-7_Yvonne', value: 'HQ-7_Yvonne' },
//   { label: 'HQ-8_Daniel', value: 'HQ-8_Daniel' },
//   { label: 'HQ-9_Wendy', value: 'HQ-9_Wendy' },
//   { label: 'W_strong', value: 'W_strong' },
//   { label: 'W-1_Alice', value: 'W-1_Alice' },
//   { label: 'W-2_Demi', value: 'W-2_Demi' },
//   { label: 'W-3_Nico', value: 'W-3_Nico' },
//   { label: 'W-4_kk', value: 'W-4_kk' },
//   { label: 'W-5_Alma', value: 'W-5_Alma' },
//   { label: 'W-6_Dream', value: 'W-6_Dream' },
//   { label: 'W-7_Aimee', value: 'W-7_Aimee' },
//   { label: 'XX_Tina', value: 'XX_Tina' },
//   { label: 'XX-2_Vivi', value: 'XX-2_Vivi' },
//   { label: 'XX-A1_Ada', value: 'XX-A1_Ada' },
//   { label: 'XX-A2_Amy', value: 'XX-A2_Amy' },
//   { label: 'XX-N1_Nancy', value: 'XX-N1_Nancy' },
//   { label: 'XX-N2_Sara', value: 'XX-N2_Sara' },
//   { label: 'XX-C_CC', value: 'XX-C_CC' },
//   { label: 'XX-L1_Lucy', value: 'XX-L1_Lucy' },
//   { label: 'XX-L2_Lulu', value: 'XX-L2_Lulu' },
//   { label: 'XX-P', value: 'XX-P' },
//   { label: 'TB', value: 'TB' },
//   { label: 'HCTB', value: 'HCTB' },
//   { label: 'TBC', value: 'TBC' },
//   { label: 'GW-3_iris', value: 'GW-3_iris' },
//   { label: 'GW-4_Lynn', value: 'GW-4_Lynn' },
//   { label: 'GW-6_smile', value: 'GW-6_smile' },
//   { label: 'GW-7_Yvonne', value: 'GW-7_Yvonne' },
//   { label: 'GW-9_Wendy', value: 'GW-9_Wendy' },
//   { label: 'W-9_Jack', value: 'W-9_Jack' },
//   { label: 'W-8_Andy', value: 'W-8_Andy' },
//   { label: 'CQ_Peter', value: 'CQ_Peter' },
//   { label: 'MA_A_Mao', value: 'MA_A_Mao' },
//   { label: 'CQ-2', value: 'CQ-2' },
//   { label: 'JJ', value: 'JJ' },
//   { label: 'CQ-3', value: 'CQ-3' },
// ];

export const HISTORY_OPT_TYPE = new Map<string, string>([
  ['DELETE', '作废'],
  ['UPDATE', '编辑'],
  ['ADD', '创建'],
  ['SEND', '发货'],
  ['CHECK', '审核'],
  ['CONFIRM_RECEIPT', '确认收货'],
  ['PRINT_ORDER', '打印'],
  ['INVOICING', '财务开票'],
  ['EDIT_ORDER', '财务编辑'],
  ['MODIFY_SEN_INFORMATION', '发货信息编辑'],
  ['UN_INVOICING', '财务取消开票'],
  ['FINANCE_CHECK_ORDER', '财务审核'],
  ['PROCURE_CHECK_ORDER', '采购审核'],
  ['SUPPLIER_PRINT', '供应商打印'],
  ['EXTERNAL_PROCUREMENT', '仓库操作外部采购子订单'],
  ['APPLY_AFTER_SALES', '申请售后子订单'],
  ['AFTER_SALES_COMPLETION', '完成售后子订单'],
  ['PROCURE_PRINT', '采购打印子订单'],
  ['PROCURE_SEND', '采购发货子订单'],
  ['NO_NEED_SEND', '不需要发货'],
  ['PROCURE_CONVERT_WAREHOUSE_KEEPER', '采购转仓库'],
  ['PROCURE_CONVERT_PROCURE', '采购转发'],
  ['MERGE_APPLY_INVOICING', '合并申请开票'],
  ['PROCURE_ORDER', '采购下单'],
  ['SALES_APPLY_INVOICING', '申请开票'],
]);

export const MAIN_ORDER_COLUMNS = [
  {
    title: '订单列表',
    width: 120,
    dataIndex: 'name',
    search: false,
  },
  {
    title: '订单编号',
    dataIndex: 'id',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '销售代表',
    dataIndex: 'salesCode',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '收货人',
    dataIndex: 'customerName',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '收货人联系电话',
    dataIndex: 'customerContactNumber',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '单位',
    dataIndex: 'institution',
    valueType: 'select',
    hideInTable: true,
    fieldProps: {
      showSearch: true,
    },
    request: async (value, { params }) => {
      const keywords = value.keyWords;
      const { data } = await postServiceOrderQueryCustomerInformation({
        data: { name: 'institution', institution: keywords },
        params: params,
      });
      let options = data
        .filter((c: any) => {
          return c.orderName === 'institution';
        })
        .map((item: any) => {
          return {
            label: item.orderValue,
            value: item.orderValue,
          };
        });
      return options;
    },
  },
  {
    title: '课题组',
    dataIndex: 'institutionContactName',
    valueType: 'select',
    hideInTable: true,
    fieldProps: {
      showSearch: true,
    },
    request: async (value, { params }) => {
      const keywords = value.keyWords;
      const { data } = await postServiceOrderQueryCustomerInformation({
        data: {
          name: 'institutionContactName',
          institutionContactName: keywords,
        },
        params: params,
      });
      let options = data
        .filter((c: any) => {
          return c.orderName === 'institutionCustomerUser';
        })
        .map((item: any) => {
          return {
            label: item.orderValue,
            value: item.orderValue,
          };
        });
      return options;
    },
  },
  {
    title: '收货人地址',
    dataIndex: 'customerShippingAddress',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '商品名称',
    dataIndex: 'productName',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '主订单备注',
    dataIndex: 'mainNotes',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '子订单备注',
    dataIndex: 'subNotes',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '商品参数',
    dataIndex: 'parameters',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '订单状态',
    dataIndex: 'orderStatus',
    valueType: 'select',
    hideInTable: true,
    valueEnum: enumToProTableEnumValue(ORDER_STATUS_OPTIONS),
  },
  {
    title: '支付方式',
    dataIndex: 'paymentMethod',
    valueType: 'select',
    hideInTable: true,
    valueEnum: enumToProTableEnumValue(PAYMENT_METHOD_OPTIONS),
  },
  {
    title: '物流方式',
    dataIndex: 'logisticsMethod',
    valueType: 'select',
    hideInTable: true,
    valueEnum: enumToProTableEnumValue(LOGISTICS_STATUS_OPTIONS),
  },
  {
    title: '支付渠道',
    dataIndex: 'paymentChannel',
    valueType: 'select',
    hideInTable: true,
    valueEnum: enumToProTableEnumValue(PAYMENT_CHANNEL_OPTIONS),
  },
  {
    title: '银行名称',
    dataIndex: 'bank',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '支付流水',
    dataIndex: 'paymentTransactionId',
    valueType: 'text',
    hideInTable: true,
  },
  {
    title: '所属部门',
    dataIndex: 'productBelongBusiness',
    valueType: 'select',
    hideInTable: true,
    valueEnum: enumToProTableEnumValue(PRODUCT_BELONG_DEPARTMENT_OPTIONS),
  },
  {
    title: '创建日期',
    dataIndex: 'createTime',
    valueType: 'dateTimeRange',
    hideInTable: true,
    search: {
      transform: (value) => {
        return {
          beginTime: value[0],
          endTime: value[1],
        };
      },
    },
  },
  {
    title: '是否需要开票',
    dataIndex: 'invoicingStatus',
    valueType: 'select',
    hideInTable: true,
    valueEnum: enumToProTableEnumValue(INVOCING_STATUS_OPTIONS),
  },
  {
    title: '开票状态',
    dataIndex: 'afterInvoicingStatus',
    valueType: 'select',
    hideInTable: true,
    valueEnum: enumToProTableEnumValue(AFTER_INVOICING_STATUS),
  },
  {
    title: '开票日期',
    dataIndex: 'invoicingTime',
    valueType: 'dateRange',
    hideInTable: true,
    search: {
      transform: (value) => {
        return {
          invoicingBeginTime: value[0],
          invoicingEndTime: value[1],
        };
      },
    },
  },

  // {
  //   title: '是否完全收款',
  //   dataIndex: 'receiptsStatus',
  //   valueType: 'select',
  //   hideInTable: true,
  //   valueEnum:[{text:'是',status:'YES'},{text:'否',status:'NO'}]
  // }
];

export const SUB_ORDER_COLUMNS = [
  { title: 'ID', dataIndex: 'id', key: 'id', width: 80 },
  {
    title: '商品编码',
    dataIndex: 'productCode',
    key: 'productCode',
    width: 80,
  },
  {
    title: '商品名称',
    dataIndex: 'productName',
    key: 'productName',
    width: 80,
  },
  { title: '商品参数', dataIndex: 'parameters', key: 'parameters', width: 80 },
  { title: '商品数量', dataIndex: 'quantity', key: 'quantity', width: 80 },
  {
    title: '子订单金额(¥)',
    dataIndex: 'subOrderPayment',
    key: 'subOrderPayment',
    width: 80,
  },
  {
    title: '所属事业部',
    dataIndex: 'productBelongBusiness',
    key: 'productBelongBusiness',
    width: 80,
  },
  {
    title: '支付方式',
    dataIndex: 'paymentMethod',
    key: 'paymentMethod',
    width: 80,
  },
  {
    title: '支付渠道',
    dataIndex: 'paymentChannel',
    key: 'paymentChannel',
    width: 80,
  },
  {
    title: '支付流水',
    dataIndex: 'paymentTransactionId',
    key: 'paymentTransactionId',
    width: 80,
  },
  {
    title: '物流方式',
    dataIndex: 'logisticsMethod',
    key: 'logisticsMethod',
    width: 80,
  },
  {
    title: '物流单号',
    dataIndex: 'serialNumber',
    key: 'serialNumber',
    width: 80,
  },
  {
    title: '开票状态',
    dataIndex: 'invoicingStatus',
    key: 'invoicingStatus',
    component: 'tag',
    width: 80,
  },
  {
    title: '订单状态',
    dataIndex: 'orderStatus',
    key: 'orderStatus',
    component: 'tag',
    width: 80,
  },
];