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 IHomeBanner from '@/domain/iHomeBanner.ts'; import { HOME_BANNER_STATUS_MAP } from '@/domain/iHomeBanner.ts'; const { Title, Text } = Typography; /** * 首页轮播图配置(小程序首页) */ const HomeBannerPage: React.FC = () => { const columns: XinTableColumn[] = [ { title: 'ID', dataIndex: 'id', hideInForm: true, hideInSearch: true, width: 70, align: 'center', }, { title: '标题', dataIndex: 'title', valueType: 'text', required: true, rules: [{ required: true, message: '请输入轮播图标题' }], }, { title: '轮播图片', dataIndex: 'image_id', valueType: 'image', required: true, rules: [{ required: true, message: '请上传轮播图片' }], fieldProps: { action: '/client/banner/upload', mode: 'single', maxCount: 1, changeType: 'id', }, render: (_, record: IHomeBanner) => { const url = record.image_url; if (!url) return '-'; return ( ); }, align: 'center', hideInSearch: true, }, { title: '跳转链接', dataIndex: 'link', valueType: 'text', hideInSearch: true, fieldProps: { placeholder: '小程序页面路径,如 /pages/goods/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_BANNER_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/banner', columns, rowKey: 'id', accessName: 'client.banner', formProps: { grid: true, colProps: { span: 12 }, layout: 'vertical', rowProps: { gutter: 24 }, }, modalProps: { width: 640 }, }; return ( <>
首页轮播图 小程序首页顶部轮播图;停用后不展示,排序越小越靠前;跳转链接为小程序页面路径,留空则点击不跳转。
{...tableProps} /> ); }; export default HomeBannerPage;