import { formatUpdateUserName } from '@/utils/audit';

const validateNonNegative = (rule, value, callback) => {
  if (value === undefined || value === null || value === '') {
    callback();
  } else if (Number(value) < 0) {
    callback(new Error('不能小于 0'));
  } else {
    callback();
  }
};

export const vehicleTypeDic = [
  { label: '车辆', value: '车辆' },
  { label: '船舶', value: '船舶' },
];

export const vehicleTechnicalLevelDic = [
  { label: '一级', value: '一级' },
  { label: '二级', value: '二级' },
  { label: '三级', value: '三级' },
  { label: '其他', value: '其他' },
];

export const shipInspectionTypeDic = [
  { label: '年检', value: '年检' },
  { label: '中检', value: '中检' },
  { label: '特检', value: '特检' },
  { label: '其他', value: '其他' },
];

export const option = {
  height: 'auto',
  calcHeight: 32,
  dialogWidth: 960,
  labelPosition: 'right',
  labelWidth: 'auto',
  searchLabelWidth: 160,
  tip: false,
  searchBtnText: '查询',
  emptyBtnText: '重置',
  saveBtnText: '提交',
  updateBtnText: '提交',
  searchShow: true,
  searchMenuSpan: 24,
  searchIcon: true,
  searchIndex: 4,
  searchMenuPosition: 'right',
  border: true,
  index: true,
  indexLabel: '序号',
  viewBtn: true,
  selection: true,
  dialogClickModal: false,
  menuWidth: 180,
  column: [
    {
      label: '车船类型',
      prop: 'vehicleType',
      type: 'radio',
      minWidth: 110,
      dicData: vehicleTypeDic,
      value: '车辆',
      search: true,
      span: 24,
      rules: [{ required: true, message: '请选择车船类型', trigger: 'change' }],
    },
    {
      label: '车牌号/船号',
      prop: 'vehicleNo',
      slot: true,
      formslot: true,
      search: true,
      minWidth: 140,
      span: 12,
      placeholder: '输入车牌号/船号查询选择',
      rules: [
        { required: true, message: '请输入车牌号/船号', trigger: 'blur' },
        { max: 30, message: '最多 30 个字符', trigger: 'blur' },
      ],
    },
    {
      label: '检测评定日期',
      prop: 'inspectionAssessmentDate',
      sortable: true,
      type: 'date',
      format: 'YYYY-MM-DD',
      valueFormat: 'YYYY-MM-DD',
      minWidth: 140,
      span: 12,
      placeholder: '请选择，日期选择器',
      rules: [{ required: true, message: '请选择检测评定日期', trigger: 'click' }],
    },
    {
      label: '有效期截止日',
      prop: 'validUntilDate',
      sortable: true,
      type: 'date',
      format: 'YYYY-MM-DD',
      valueFormat: 'YYYY-MM-DD',
      minWidth: 140,
      span: 12,
      placeholder: '请输入',
      rules: [{ required: true, message: '请选择有效期截止日', trigger: 'click' }],
    },
    {
      label: '车辆技术等级',
      prop: 'vehicleTechnicalLevel',
      type: 'select',
      dicData: vehicleTechnicalLevelDic,
      minWidth: 130,
      span: 12,
      placeholder: '请选择',
      rules: [{ required: true, message: '请选择车辆技术等级', trigger: 'change' }],
    },
    {
      label: '船舶检验类型',
      prop: 'shipInspectionType',
      type: 'select',
      dicData: shipInspectionTypeDic,
      display: false,
      minWidth: 130,
      span: 12,
      placeholder: '请选择',
      rules: [{ required: true, message: '请选择船舶检验类型', trigger: 'change' }],
    },
    {
      label: '客车类型及等级',
      prop: 'passengerTypeLevel',
      minWidth: 150,
      span: 12,
      placeholder: '请输入',
      rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
    },
    {
      label: '检测评定单位',
      prop: 'inspectionUnit',
      minWidth: 160,
      span: 12,
      placeholder: '请输入',
      rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
    },
    {
      label: '费用',
      prop: 'fee',
      type: 'input',
      formslot: true,
      minWidth: 100,
      span: 12,
      placeholder: '请输入',
      rules: [
        { required: true, message: '请输入费用', trigger: 'blur' },
        { validator: validateNonNegative, trigger: 'blur' },
      ],
    },
    {
      label: '评定(复核)单位',
      prop: 'assessmentUnit',
      minWidth: 160,
      overHidden: true,
      span: 12,
      placeholder: '请输入',
      rules: [{ max: 50, message: '最多 50 个字符', trigger: 'blur' }],
    },
    {
      label: '备注',
      prop: 'remark',
      type: 'textarea',
      minRows: 3,
      span: 24,
      minWidth: 180,
      overHidden: true,
      placeholder: '请输入，200字以内',
      rules: [{ max: 200, message: '最多 200 个字符', trigger: 'blur' }],
    },
    {
      label: '附件',
      prop: 'attachments',
      span: 24,
      minWidth: 100,
      slot: true,
      formslot: true,
    },
    {
      label: '检测评定开始日期',
      prop: 'inspectionAssessmentDateStart',
      type: 'date',
      format: 'YYYY-MM-DD',
      valueFormat: 'YYYY-MM-DD',
      search: true,
      hide: true,
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
    },
    {
      label: '检测评定结束日期',
      prop: 'inspectionAssessmentDateEnd',
      type: 'date',
      format: 'YYYY-MM-DD',
      valueFormat: 'YYYY-MM-DD',
      search: true,
      hide: true,
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
    },
    {
      label: '创建时间',
      prop: 'createTime',
      sortable: true,
      type: 'date',
      format: 'YYYY-MM-DD HH:mm:ss',
      valueFormat: 'YYYY-MM-DD HH:mm:ss',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
      display: false,
      minWidth: 170,
    },
    {
      label: '创建时间',
      prop: 'createTimeRange',
      type: 'date',
      format: 'YYYY-MM-DD',
      valueFormat: 'YYYY-MM-DD',
      hide: true,
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
    },
    {
      label: '组织',
      prop: 'createDept',
      type: 'tree',
      dicData: [],
      props: {
        label: 'title',
        value: 'id',
      },
      checkStrictly: true,
      search: true,
      hide: true,
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
    },
    {
      label: '更新人',
      prop: 'updateUserName',
      formatter: formatUpdateUserName,
      addDisplay: false,
      editDisplay: false,
      display: false,
      minWidth: 180,
    },
    {
      label: '更新时间',
      prop: 'updateTime',
      sortable: true,
      type: 'datetime',
      format: 'YYYY-MM-DD HH:mm:ss',
      valueFormat: 'YYYY-MM-DD HH:mm:ss',
      addDisplay: false,
      editDisplay: false,
      display: false,
      minWidth: 170,
    },
  ],
};

export const excelOption = {
  labelPosition: 'right',
  submitBtn: false,
  emptyBtn: false,
  column: [
    {
      label: '模板上传',
      prop: 'excelFile',
      type: 'upload',
      drag: true,
      loadText: '模板上传中，请稍等',
      span: 24,
      propsHttp: {
        res: 'data',
      },
      tip: '请上传 .xls,.xlsx 标准格式文件',
      action: '/blade-transport/annual-inspection-record/import-annual-inspection-record',
    },
    {
      label: '模板下载',
      prop: 'excelTemplate',
      formslot: true,
      span: 24,
    },
  ],
};
