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,103 @@
import { ModalForm, ProFormText } from '@ant-design/pro-form';
import { FormattedMessage, useIntl } from '@umijs/max';
interface EditModalProps {
visible: boolean;
values: {
name?: string;
address?: string;
group_id?: string;
external_id?: string;
type?: string;
};
onVisibleChange: (visible: boolean) => void;
onFinish: (
values: Pick<MasterModel.Thing, 'name'> &
Pick<MasterModel.ThingMetadata, 'address' | 'external_id'>,
) => Promise<boolean>;
}
const EditModal: React.FC<EditModalProps> = ({
visible,
values,
onVisibleChange,
onFinish,
}) => {
const intl = useIntl();
return (
<ModalForm
open={visible}
initialValues={values}
title={intl.formatMessage({
id: 'pages.things.update.title',
defaultMessage: 'Update thing',
})}
width={480}
onVisibleChange={onVisibleChange}
onFinish={onFinish}
modalProps={{
destroyOnHidden: true,
}}
>
<ProFormText
name="name"
label={intl.formatMessage({
id: 'pages.things.name',
defaultMessage: 'Name',
})}
rules={[
{
required: true,
message: (
<FormattedMessage
id="pages.things.name.required"
defaultMessage="The name is required"
/>
),
},
]}
/>
<ProFormText
name="external_id"
label={intl.formatMessage({
id: 'pages.things.external_id',
defaultMessage: 'ExternalId',
})}
rules={[
{
required: true,
message: (
<FormattedMessage
id="pages.things.external_id.required"
defaultMessage="The externalId is required"
/>
),
},
]}
/>
<ProFormText
name="address"
label={intl.formatMessage({
id: 'pages.things.address',
defaultMessage: 'Address',
})}
rules={[
{
required: true,
message: (
<FormattedMessage
id="pages.things.address.required"
defaultMessage="The address is required"
/>
),
},
]}
/>
</ModalForm>
);
};
export default EditModal;