import { BasicColumn } from '/@/components/Table'; import { FormSchema } from '/@/components/Table'; import { h } from 'vue'; import { Tag } from 'ant-design-vue'; import { useI18n } from '/@/hooks/web/useI18n'; import moment from 'moment'; const { t } = useI18n(); export const columns: BasicColumn[] = [ { title: '邮件主题', dataIndex: 'emailSubject', width: 160, }, { title: '收件人', dataIndex: 'emailTo', width: 160, }, { title: '状态', dataIndex: 'status', width: 100, customRender: ({ record }) => { const status = record.status; const success = status === 'SUCCESS'; const color = success ? 'green' : 'red'; const successText: string = t('routes.common.system.tableSuccessStatus'); const failedText: string = t('routes.common.system.tableFailedStatus'); const text = success ? successText : failedText; return h(Tag, { color: color }, () => text); }, }, { title: '用途', dataIndex: 'templatePurposeDictText', width: 160, }, { title: '备注', dataIndex: 'remark', width: 160, }, { title: '发送时间', dataIndex: 'sendTime', width: 180, }, ]; export const searchFormSchema: FormSchema[] = [ { field: 'emailSubject', label: '邮件主题', component: 'Input', componentProps: { maxLength: 255, placeholder: '请输入邮件主题', }, dynamicRules: () => { return [ { required: false, validator: (_, value) => { if (String(value).length > 255) { return Promise.reject('字数不超过255个字'); } return Promise.resolve(); }, }, ]; }, colProps: { span: 6 }, }, { field: 'sendTime', label: '发送时间', component: 'RangePicker', componentProps: { showTime: { defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')], }, }, colProps: { span: 6 }, }, ];