import type { CrudSchema } from '@/hooks/web/useCrudSchemas' import { dateFormatter2 } from '@/utils/formatTime' // TODO @zhangshai: // 表单校验 export const rules = reactive({ spuId: [required], name: [required], startTime: [required], endTime: [required], discountType: [required] }) // CrudSchema https://doc.iocoder.cn/vue3/crud-schema/ const crudSchemas = reactive([ { label: '活动名称', field: 'name', isSearch: true, form: { colProps: { span: 24 } }, table: { width: 120 } }, { label: '活动开始时间', field: 'startTime', formatter: dateFormatter2, isSearch: true, search: { component: 'DatePicker', componentProps: { valueFormat: 'YYYY-MM-DD', type: 'daterange' } }, form: { component: 'DatePicker', componentProps: { type: 'date', valueFormat: 'x' } }, table: { width: 120 } }, { label: '活动结束时间', field: 'endTime', formatter: dateFormatter2, isSearch: true, search: { component: 'DatePicker', componentProps: { valueFormat: 'YYYY-MM-DD', type: 'daterange' } }, form: { component: 'DatePicker', componentProps: { type: 'date', valueFormat: 'x' } }, table: { width: 120 } }, { label: '优惠类型', field: 'discountType', dictType: DICT_TYPE.PROMOTION_DISCOUNT_TYPE, dictClass: 'number', isSearch: true, form: { component: 'Radio', value: 1 } }, { label: '活动商品', field: 'spuId', isTable: true, isSearch: false, form: { colProps: { span: 24 } }, table: { width: 300 } }, { label: '备注', field: 'remark', isSearch: false, form: { component: 'Input', componentProps: { type: 'textarea', rows: 4 }, colProps: { span: 24 } }, table: { width: 300 } } ]) export const { allSchemas } = useCrudSchemas(crudSchemas)