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 IHomeNav from '@/domain/iHomeNav.ts'; import { HOME_NAV_STATUS_MAP } from '@/domain/iHomeNav.ts'; const { Title, Text } = Typography; /** * 宫格导航配置(小程序首页) */ const HomeNavPage: React.FC = () => { const columns: XinTableColumn[] = [ { title: 'ID', dataIndex: 'id', hideInForm: true, hideInSearch: true, width: 70, align: 'center', }, { title: '导航名称', dataIndex: 'name', valueType: 'text', required: true, rules: [{ required: true, message: '请输入导航名称' }], }, { title: '导航图标', dataIndex: 'image_id', valueType: 'image', required: true, rules: [{ required: true, message: '请上传导航图标' }], fieldProps: { action: '/client/nav/upload', mode: 'single', maxCount: 1, changeType: 'id', }, render: (_, record: IHomeNav) => { const url = record.image_url; if (!url) return '-'; return ( ); }, align: 'center', hideInSearch: true, }, { title: '跳转链接', dataIndex: 'link', valueType: 'text', hideInSearch: true, fieldProps: { placeholder: '小程序页面路径,如 /pages/category/index', }, 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_NAV_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/nav', columns, rowKey: 'id', accessName: 'client.nav', formProps: { grid: true, colProps: { span: 12 }, layout: 'vertical', rowProps: { gutter: 24 }, }, modalProps: { width: 640 }, }; return ( <>
宫格导航 小程序首页宫格入口(如商品分类、促销活动等);停用后不展示,排序越小越靠前。
{...tableProps} /> ); }; export default HomeNavPage;