import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter } from '@/utils/formatTime'

import * as ItembasicApi from '@/api/wms/itembasic'
import { Itembasic } from '@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data'

import * as SupplierApi from '@/api/wms/supplier'
import { Supplier } from '@/views/wms/basicDataManage/supplierManage/supplier/supplier.data'

const { t } = useI18n() // 国际化

/**
 * @returns {Array} 基础标准成本价格单
 */
export const Stdcostprice = useCrudSchemas(reactive<CrudSchema[]>([
  {
    label: '供应商代码',
    field: 'supplierCode',
    isSearch: true,
    sort: 'custom',
    table: {
      width: 150,
      fixed: 'left'
    },
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true, // 开启查询弹窗
        searchListPlaceholder: '请选择供应商代码', // 输入框占位文本
        searchField: 'code', // 查询弹窗赋值字段
        searchTitle: '供应商信息', // 查询弹窗标题
        searchAllSchemas: Supplier.allSchemas, // 查询弹窗所需类
        searchPage: SupplierApi.getSupplierPage // 查询弹窗所需分页方法
      }
    }
  },
  {
    label: '物料代码',
    field: 'itemCode',
    isSearch: true,
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true, // 开启查询弹窗
        searchListPlaceholder: '请选择物品代码', // 输入框占位文本
        searchField: 'code', // 查询弹窗赋值字段
        searchTitle: '物品基础信息', // 查询弹窗标题
        searchAllSchemas: Itembasic.allSchemas, // 查询弹窗所需类
        searchPage: ItembasicApi.getItembasicPage // 查询弹窗所需分页方法
      }
    }
  },
  {
    label: '货币',
    field: 'currency',
    dictType: DICT_TYPE.CURRENCY,
    dictClass: 'string',
    sort: 'custom',
    isSearch : true,
    isTable : true
  },
  {
    label: '价格',
    field: 'price',
    sort: 'custom',
    isSearch: true,
    form: {
      component: 'InputNumber',
      componentProps: {
        min: 1,
        precision: 6
      }
    }
  },
  {
    label: '是否可用',
    field: 'available',
    dictType: DICT_TYPE.TRUE_FALSE,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 120
    },
    form: {
      component: 'Switch',
      value: 'TRUE',
      componentProps: {
        inactiveValue: 'FALSE',
        activeValue: 'TRUE'
      }
    }
  },
  {
    label: '生效时间',
    field: 'activeTime',
    isTable: true,
    sort: 'custom',
    formatter : dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width:'100%'},
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    },
  },
  {
    label: '失效时间',
    field: 'expireTime',
    isTable: true,
    sort: 'custom',
    formatter : dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width:'100%'},
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    }
  },
  {
    label: '创建时间',
    field: 'createTime',
    isForm: false,
    sort: 'custom',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width:'100%'},
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    }
  },
  {
    label: '创建者',
    field: 'creator',
    isForm: false,
    isTable: false
  },
  {
    label: '备注',
    field: 'remark',
    isTable: false
  },
  {
    label: '操作',
    field: 'action',
    isDetail: false,
    isForm: false ,
    table: {
      width: 150,
      fixed: 'right'
    }
  }
]))

//表单校验
export const StdcostpriceRules = reactive({
  supplierCode: [
    { required: true, message: '请输入供应商代码', trigger: 'change' }
  ],
  itemCode: [
    { required: true, message: '请输入物料代码', trigger: 'change' }
  ],
  currency: [
    { required: true, message: '请选择货币', trigger: 'change' }
  ],
  price: [
    { required: true, message: '请输入价格', trigger: 'blur' }
  ],
  remark: [
    { max: 50, message: '不得超过50个字符', trigger: 'blur' }
  ],
  available:  [
    { required: true, message: '请选择是否可用', trigger: 'change' }
  ],
})