Files
SMATEC-FRONTEND/src/pages/Slave/SGW/Trip/components/BadgeTripStatus.tsx

49 lines
1.5 KiB
TypeScript

import { useIntl } from '@umijs/max';
import type { BadgeProps } from 'antd';
import { Badge } from 'antd';
import React from 'react';
interface BadgeTripStatusProps {
status?: number;
}
const BadgeTripStatus: React.FC<BadgeTripStatusProps> = ({ status }) => {
const intl = useIntl();
// Khai báo kiểu cho map
const statusBadgeMap: Record<number, BadgeProps> = {
0: { status: 'default' }, // Đã khởi tạo
1: { status: 'processing' }, // Chờ duyệt
2: { status: 'success' }, // Đã duyệt
3: { status: 'success' }, // Đang hoạt động
4: { status: 'success' }, // Hoàn thành
5: { status: 'error' }, // Đã huỷ
};
const getBadgeProps = (status: number | undefined) => {
switch (status) {
case 0:
return intl.formatMessage({ id: 'trip.badge.notApproved' });
case 1:
return intl.formatMessage({ id: 'trip.badge.waitingApproval' });
case 2:
return intl.formatMessage({ id: 'trip.badge.approved' });
case 3:
return intl.formatMessage({ id: 'trip.badge.active' });
case 4:
return intl.formatMessage({ id: 'trip.badge.completed' });
case 5:
return intl.formatMessage({ id: 'trip.badge.cancelled' });
default:
return intl.formatMessage({ id: 'trip.badge.unknown' });
}
};
const badgeProps: BadgeProps = statusBadgeMap[status ?? -1] || {
status: 'default',
};
return <Badge {...badgeProps} text={getBadgeProps(status)} />;
};
export default BadgeTripStatus;