49 lines
1.5 KiB
TypeScript
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;
|