helper.ts 1.75 KB
import type { Rule } from 'ant-design-vue/es/form'
import { isNumber } from '@wry-smile/utils-is'
import { ComponentEnum } from './enum'
import type { ComponentType } from './types'

export function handleInputNumberValue(component?: ComponentEnum, val?: any) {
  if (!component) return val
  if ([ComponentEnum.INPUT, ComponentEnum.INPUT_PAWSSWORD, ComponentEnum.INPUT_SEARCH, ComponentEnum.INPUT_TEXTAREA].includes(component))
    return val && isNumber(val) ? `${val}` : val

  return val
}

const DATE_TYPE = [ComponentEnum.DATE_PICKER, ComponentEnum.MONTH_PICKER, ComponentEnum.WEEK_PICKER, ComponentEnum.TIME_PICKER]

function genType() {
  return [...DATE_TYPE, ComponentEnum.RANGE_PICKER]
}

export const defaultValueComponents = [ComponentEnum.INPUT, ComponentEnum.INPUT_NUMBER]
/**
 * @description 日期组件字段
 */
export const dateItemType = genType()

export function createPlaceholderMessage(component: ComponentEnum) {
  if (component.includes('Input') || component.includes('Complete'))
    return '请输入'

  if (component.includes('Picker'))
    return '请选择'

  if (
    component.includes('Select')
    || component.includes('Cascader')
    || component.includes('Checkbox')
    || component.includes('Radio')
    || component.includes('Switch')
  )
    return '请选择'

  return ''
}

export function setComponentRuleType(rule: Rule, component: ComponentEnum, valueFormat: string) {
  if (DATE_TYPE.includes(component)) rule.type = valueFormat ? 'string' : 'object'
  // else if ()
}

export const NO_AUTO_LINK_COMPONENTS: ComponentType[] = [
  ComponentEnum.UPLOAD,
  ComponentEnum.API_TRANSTER,
  ComponentEnum.API_TREE,
  ComponentEnum.API_RADIO_GROUP,
  ComponentEnum.API_CASCADER,
  ComponentEnum.AUTO_COMPLETE,
  ComponentEnum.RADIO_BUTTON_GROUP,
]