feat(sgw): Add new services and utilities for ship, trip, and photo management

This commit is contained in:
Lê Tuấn Anh
2026-01-23 15:18:02 +07:00
parent e5b388505a
commit 1a06328c77
75 changed files with 9749 additions and 8 deletions

View File

@@ -0,0 +1,48 @@
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;