import React from 'react'; import { Image, Tag, Typography } from 'antd'; import XinTable from '@/components/XinTable'; import type { XinTableColumn, XinTableProps } from '@/components/XinTable/typings.ts'; import type IHomePromo from '@/domain/iHomePromo.ts'; import { HOME_PROMO_STATUS_MAP } from '@/domain/iHomePromo.ts'; const { Title, Text } = Typography; /** * 促销推荐卡片配置(小程序首页) */ const HomePromoPage: React.FC = () => { const columns: XinTableColumn[] = [ { title: 'ID', dataIndex: 'id', hideInForm: true, hideInSearch: true, width: 70, align: 'center', }, { title: '卡片标题', dataIndex: 'title', valueType: 'text', }, { title: '副标题', dataIndex: 'sub_title', valueType: 'text', hideInSearch: true, fieldProps: { placeholder: '促销文案,如「限时特惠 8 折起」', }, render: (_, record) => record.sub_title || '-', }, { title: '卡片图片', dataIndex: 'image_id', valueType: 'image', required: true, rules: [{ required: true, message: '请上传卡片图片' }], fieldProps: { action: '/client/promo/upload', mode: 'single', maxCount: 1, changeType: 'id', }, render: (_, record: IHomePromo) => { const url = record.image_url; if (!url) return '-'; return ( ); }, align: 'center', hideInSearch: true, }, { title: '跳转链接', dataIndex: 'link', valueType: 'text', hideInSearch: true, fieldProps: { placeholder: '小程序页面路径,如 /pages/promo/detail?id=1', }, render: (_, record) => record.link || '-', }, { title: '排序', dataIndex: 'sort', valueType: 'digit', hideInSearch: true, initialValue: 0, fieldProps: { min: 0, precision: 0 }, align: 'center', width: 80, }, { title: '状态', dataIndex: 'status', valueType: 'radioButton', initialValue: 1, fieldProps: { options: [ { value: 1, label: '正常' }, { value: 0, label: '停用' }, ], }, render: (_, record) => { const item = HOME_PROMO_STATUS_MAP[record.status ?? 1]; return {item?.text}; }, align: 'center', width: 90, }, { title: '创建时间', dataIndex: 'created_at', hideInForm: true, hideInSearch: true, align: 'center', }, ]; const tableProps: XinTableProps = { api: '/client/promo', columns, rowKey: 'id', accessName: 'client.promo', formProps: { grid: true, colProps: { span: 12 }, layout: 'vertical', }, modalProps: { width: 640 }, }; return ( <>
促销推荐卡片 小程序首页促销位卡片;副标题展示促销文案,停用后不展示,排序越小越靠前。
{...tableProps} /> ); }; export default HomePromoPage;