import dayjs from 'dayjs' import { Switch } from 'ant-design-vue' import RiskTagSelect from './RiskTagSelect.vue' import { RISK_TAG_SEARCH_TYPE } from './riskTagConstants' export const createFormItems = () => { return [ { key: 'input', // 唯一标识 type: 'input', // 类型 label: '输入框', name: 'input', // 字段名称 group: '基础查询', cache: true, tooltip: '按关键词过滤', fixed: true, addonAfter: { text: '查询帮助', className: 'super-table-addon-after-btn', onClick: ({ name, value }) => { console.log('[super-table] addonAfter click:', { name, value }) }, }, }, { key: 'inputGroup', type: 'inputGroup', label: '输入框组', name: 'inputGroup', group: '基础查询', cache: true, fixed: true, addonBeforeProps: { style: { width: '40%', }, options: [ { label: '大于', value: '>', }, { label: '小于', value: '<', }, { label: '大于等于', value: '>=', }, { label: '小于等于', value: '<=', }, ], }, value: { select: '<=', value: 999, }, }, { key: 'inputNumber', type: 'inputNumber', label: '数字输入框', name: 'inputNumber', group: '基础查询', cache: true, tooltip: 1001, fixed: true, }, { key: 'inputNumberRange', type: 'inputNumberRange', label: '数字范围输入', name: 'inputNumberRange', group: '基础查询', cache: true, fixed: true, props: { min: 0, max: 100, placeholder: ['最小值', '最大值'], }, }, { key: 'select', type: 'select', label: '单选', name: 'select', group: '选项筛选', cache: true, fixed: true, props: { options: Array.from({ length: 3 }).map((_, index) => ({ label: `选项-${index + 1}`, value: index, })), }, }, { key: 'multipleSelect', type: 'select', label: '多选', name: 'multipleSelect', group: '选项筛选', cache: true, props: { mode: 'multiple', options: Array.from({ length: 10 }).map((_, index) => ({ label: `选项-${index + 1}`, value: index, })), }, }, { key: 'date', type: 'datePicker', label: '日期', name: 'date', group: '时间范围', cache: true, props: { showTime: true, format: 'YYYY-MM-DD HH:mm', presets: [ { label: 'Yesterday', value: dayjs().add(-1, 'd') }, { label: 'Last Week', value: dayjs().add(-7, 'd') }, { label: 'Last Month', value: dayjs().add(-1, 'month') }, ], }, }, { key: 'rangePicker', type: 'rangePicker', label: '时间范围', name: 'rangePicker', group: '时间范围', cache: true, props: { showTime: true, format: 'YYYY-MM-DD HH:mm', presets: [ { label: 'Last 7 Days', value: [dayjs().add(-7, 'd'), dayjs()] }, { label: 'Last 14 Days', value: [dayjs().add(-14, 'd'), dayjs()] }, { label: 'Last 30 Days', value: [dayjs().add(-30, 'd'), dayjs()] }, { label: 'Last 90 Days', value: [dayjs().add(-90, 'd'), dayjs()] }, ], }, value: [dayjs().add(-3, 'd'), dayjs()], }, { key: 'treeSelect', type: 'treeSelect', label: '树形选择', name: 'treeSelect', group: '选项筛选', cache: true, props: { allowClear: true, treeDefaultExpandAll: true, treeData: [ { title: '华东', value: 'east', children: [ { title: '杭州', value: 'hangzhou' }, { title: '上海', value: 'shanghai' }, ], }, { title: '华北', value: 'north', children: [ { title: '北京', value: 'beijing' }, { title: '天津', value: 'tianjin' }, ], }, ], }, }, { key: 'enabledSwitch', type: 'component', label: '启用开关', name: 'enabledSwitch', group: '基础查询', cache: true, fixed: true, showLabel: false, component: Switch, modelPropName: 'checked', }, /** * 风险标签(对齐 risk-manage console/data/query matchedRiskTags) * - type: component + 自定义 RiskTagSelect * - span: 2 占两列栅格 * - treeData 异步:见 index.vue onMounted setFormItem */ { key: 'matchedRiskTags', type: 'component', label: '风险标签', name: 'matchedRiskTags', group: '选项筛选', cache: true, fixed: true, component: RiskTagSelect, modelPropName: 'value', span: 2, showLabel: false, value: { queryType: RISK_TAG_SEARCH_TYPE.OR[0], tags: [] }, props: { label: '风险标签', treeData: [], }, }, ] }