|
@@ -1,21 +1,26 @@
|
|
|
-import { Form, Input, Button, Spin, Row, Col, Switch, Select as AntdSelect, Checkbox } from 'antd'
|
|
|
-import { useEffect, useMemo, useState } from 'react'
|
|
|
-import HttpService from '../../services/httpService'
|
|
|
-import { respuestas } from '../../utilities'
|
|
|
-import { useNavigate } from 'react-router-dom'
|
|
|
-import { useQuery, useModel } from '../../hooks'
|
|
|
-import { commonRules } from '../../constants/rules'
|
|
|
-import { Select } from '../../components'
|
|
|
+import { Form, Input, Button, Spin, Row, Col, Switch, Select as AntdSelect, Checkbox, notification, Typography, Modal, Divider } from 'antd';
|
|
|
+import { useEffect, useMemo, useState } from 'react';
|
|
|
+import HttpService from '../../services/httpService';
|
|
|
+import { respuestas } from '../../utilities';
|
|
|
+import { useNavigate } from 'react-router-dom';
|
|
|
+import { useQuery, useModel } from '../../hooks';
|
|
|
+import { Select } from '../../components';
|
|
|
+import { DefaultLayout } from '../../components/layouts';
|
|
|
+
|
|
|
+const { Text } = Typography;
|
|
|
|
|
|
const selectores = {
|
|
|
productos: {
|
|
|
name: "producto",
|
|
|
expand: "subproductos",
|
|
|
},
|
|
|
-}
|
|
|
+};
|
|
|
|
|
|
const endpoints = {
|
|
|
condicionante: "condicionante",
|
|
|
+ fines: "fin-movilizacion",
|
|
|
+ tipos: "tipo-movilizacion",
|
|
|
+ estados: "estado",
|
|
|
};
|
|
|
|
|
|
const amplitudes = [
|
|
@@ -27,89 +32,95 @@ const amplitudes = [
|
|
|
value: "Familia (Varios)",
|
|
|
label: "Familia (Varios)",
|
|
|
},
|
|
|
-]
|
|
|
+];
|
|
|
|
|
|
-const fines = [
|
|
|
- {
|
|
|
- value: "Consumo Humano",
|
|
|
- label: "Consumo Humano",
|
|
|
- },
|
|
|
- {
|
|
|
- value: "Polinización",
|
|
|
- label: "Polinización",
|
|
|
- }
|
|
|
-]
|
|
|
-
|
|
|
-const tipos = [
|
|
|
- {
|
|
|
- value: "Introducción",
|
|
|
- label: "Introducción",
|
|
|
- },
|
|
|
- {
|
|
|
- value: "Expotación",
|
|
|
- label: "Expotación",
|
|
|
- },
|
|
|
- {
|
|
|
- value: "Tránsito",
|
|
|
- label: "Tránsito",
|
|
|
- },
|
|
|
- {
|
|
|
- value: "Movilización (Salida)",
|
|
|
- label: "Movilización (Salida)",
|
|
|
- },
|
|
|
- {
|
|
|
- value: "Importación",
|
|
|
- label: "Importación",
|
|
|
- }
|
|
|
-]
|
|
|
-
|
|
|
-const ProductoDetalle = () => {
|
|
|
- const [form] = Form.useForm()
|
|
|
- const navigate = useNavigate()
|
|
|
- const [loading, setLoading] = useState(false)
|
|
|
- const query = useQuery()
|
|
|
- const id = query.get("id")
|
|
|
- const [request, setRequest] = useState({})
|
|
|
- const [activa, setActiva] = useState(false)
|
|
|
- const [subproductos, setSubproductos] = useState([])
|
|
|
-
|
|
|
- // const extraParams = useMemo(() => ({
|
|
|
- // idAgenda: id,
|
|
|
- // }), [id])
|
|
|
+const CondicionanteDetalle = () => {
|
|
|
+ const [form] = Form.useForm();
|
|
|
+ const navigate = useNavigate();
|
|
|
+ const [loading, setLoading] = useState(false);
|
|
|
+ const query = useQuery();
|
|
|
+ const id = query.get("id");
|
|
|
+ const [request, setRequest] = useState({});
|
|
|
+ const [activa, setActiva] = useState(false);
|
|
|
+ const [subproductos, setSubproductos] = useState([]);
|
|
|
+ const [fines, setFines] = useState([]);
|
|
|
+ const [tipos, setTipos] = useState([]);
|
|
|
+ const [estados, setEstados] = useState([]);
|
|
|
+ const [selectedFines, setSelectedFines] = useState([]);
|
|
|
+ const [selectedTipos, setSelectedTipos] = useState([]);
|
|
|
+ const [selectedOrigenes, setSelectedOrigenes] = useState([]);
|
|
|
+ const [selectedDestinos, setSelectedDestinos] = useState([]);
|
|
|
+ const [isModalVisible, setIsModalVisible] = useState(false);
|
|
|
|
|
|
const requestParams = useMemo(() => ({
|
|
|
name: endpoints.condicionante,
|
|
|
- // expand: 'subproductos',
|
|
|
id,
|
|
|
- // extraParams
|
|
|
- }), [id])
|
|
|
-
|
|
|
+ }), [id]);
|
|
|
|
|
|
- const { model, modelLoading } = useModel(request)
|
|
|
+ const { model, modelLoading } = useModel(request);
|
|
|
|
|
|
useEffect(() => {
|
|
|
if (id) {
|
|
|
- setRequest(requestParams)
|
|
|
+ setRequest({ ...requestParams, expand: 'condicionanteFin,condicionanteTipo,condicionanteOrigen,condicionanteDestino' });
|
|
|
}
|
|
|
return () => {
|
|
|
- setRequest({})
|
|
|
- }
|
|
|
- }, [id, requestParams])
|
|
|
+ setRequest({});
|
|
|
+ };
|
|
|
+ }, [id, requestParams]);
|
|
|
|
|
|
useEffect(() => {
|
|
|
if (model) {
|
|
|
- form.setFieldsValue({ //seteo cuando son varios
|
|
|
- ...model,
|
|
|
- subproductos: model.subproductos.map((subproducto, index) => ({
|
|
|
- ...subproducto,
|
|
|
- key: index
|
|
|
- }))
|
|
|
- })
|
|
|
- if (model?.activa) {
|
|
|
- setActiva(true)
|
|
|
+ let parsedSubproductos = [];
|
|
|
+ try {
|
|
|
+ parsedSubproductos = JSON.parse(model.subproductos);
|
|
|
+ } catch (e) {
|
|
|
+ console.error("Error parsing subproductos:", e);
|
|
|
}
|
|
|
+
|
|
|
+ form.setFieldsValue({
|
|
|
+ ...model,
|
|
|
+ subproductos: parsedSubproductos,
|
|
|
+ fines: model.condicionanteFin.map(fin => fin.idFin),
|
|
|
+ tipos: model.condicionanteTipo.map(tipo => tipo.idTipo),
|
|
|
+ origenes: model.condicionanteOrigen.map(origen => origen.idOrigen),
|
|
|
+ destinos: model.condicionanteDestino.map(destino => destino.idDestino),
|
|
|
+ });
|
|
|
+ setActiva(model?.activa ?? false);
|
|
|
+ setSubproductos(parsedSubproductos ?? []);
|
|
|
+ setSelectedFines(model.condicionanteFin.map(fin => fin.idFin));
|
|
|
+ setSelectedTipos(model.condicionanteTipo.map(tipo => tipo.idTipo));
|
|
|
+ setSelectedOrigenes(model.condicionanteOrigen.map(origen => origen.idOrigen));
|
|
|
+ setSelectedDestinos(model.condicionanteDestino.map(destino => destino.idDestino));
|
|
|
}
|
|
|
- }, [form, model])
|
|
|
+ }, [form, model]);
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ const fetchCatalogData = async () => {
|
|
|
+ try {
|
|
|
+ const finesResponse = await HttpService.get(`${endpoints.fines}`);
|
|
|
+ const tiposResponse = await HttpService.get(`${endpoints.tipos}`);
|
|
|
+ const estadosResponse = await HttpService.get(`${endpoints.estados}`);
|
|
|
+
|
|
|
+ if (finesResponse?.status === 200) {
|
|
|
+ setFines(finesResponse?.resultado || []);
|
|
|
+ }
|
|
|
+ if (tiposResponse?.status === 200) {
|
|
|
+ setTipos(tiposResponse?.resultado || []);
|
|
|
+ }
|
|
|
+ if (estadosResponse?.status === 200) {
|
|
|
+ setEstados(estadosResponse?.resultado || []);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ notification.error({
|
|
|
+ message: "Error",
|
|
|
+ description: "No se pudieron cargar los datos del catálogo.",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ fetchCatalogData();
|
|
|
+ }, []);
|
|
|
|
|
|
const onFinish = async (values) => {
|
|
|
try {
|
|
@@ -117,16 +128,19 @@ const ProductoDetalle = () => {
|
|
|
|
|
|
let body = {
|
|
|
...values,
|
|
|
+ origenes: selectedOrigenes,
|
|
|
+ destinos: selectedDestinos,
|
|
|
+ subproductos: JSON.stringify(values.subproductos),
|
|
|
};
|
|
|
|
|
|
if (id) {
|
|
|
- body.id = id
|
|
|
+ body.id = id;
|
|
|
}
|
|
|
|
|
|
- const res = await HttpService.post(`${endpoints.producto}/guardar`, body);
|
|
|
+ const res = await HttpService.post(`${endpoints.condicionante}/guardar`, body);
|
|
|
respuestas(res);
|
|
|
if (res?.status === 200) {
|
|
|
- navigate('/condicionantes')
|
|
|
+ navigate('/condicionantes');
|
|
|
}
|
|
|
} catch (error) {
|
|
|
console.log(error);
|
|
@@ -134,169 +148,219 @@ const ProductoDetalle = () => {
|
|
|
} finally {
|
|
|
setLoading(false);
|
|
|
}
|
|
|
- }
|
|
|
+ };
|
|
|
+
|
|
|
+ const showModal = () => {
|
|
|
+ setIsModalVisible(true);
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleOk = () => {
|
|
|
+ setIsModalVisible(false);
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleCancel = () => {
|
|
|
+ setIsModalVisible(false);
|
|
|
+ };
|
|
|
|
|
|
if (modelLoading) {
|
|
|
- return <Spin
|
|
|
- size="large"
|
|
|
- style={{ display: "block", margin: "auto", marginTop: "50px" }}
|
|
|
- />
|
|
|
+ return <Spin size="large" style={{ display: "block", margin: "auto", marginTop: "50px" }} />;
|
|
|
}
|
|
|
|
|
|
return (
|
|
|
- <Form
|
|
|
- layout="vertical"
|
|
|
- name="basic"
|
|
|
- form={form}
|
|
|
- onFinish={onFinish}
|
|
|
- onFinishFailed={() => { }}
|
|
|
- >
|
|
|
- <Row gutter={16}>
|
|
|
- <Col span={24}>
|
|
|
- <h2>Información del Condicionante</h2>
|
|
|
- </Col>
|
|
|
- <Col md={8} xs={24}>
|
|
|
- <Form.Item
|
|
|
- label="Título"
|
|
|
- name="titulo"
|
|
|
- rules={[
|
|
|
- commonRules.requerido,
|
|
|
- ]}
|
|
|
- >
|
|
|
- <Input />
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
- <Col md={8} xs={24}>
|
|
|
- <Form.Item
|
|
|
- label="Descripción"
|
|
|
- name="descripcion"
|
|
|
- rules={[
|
|
|
- commonRules.requerido,
|
|
|
- ]}
|
|
|
- >
|
|
|
- <Input.TextArea rows={3} />
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
- <Col md={8} xs={24}>
|
|
|
- <Form.Item
|
|
|
- label="Activa"
|
|
|
- name="activa"
|
|
|
- >
|
|
|
- <Switch
|
|
|
- checkedChildren="Si"
|
|
|
- unCheckedChildren="No"
|
|
|
- style={{ backgroundColor: activa ? "#52c41a" : "#f5222d" }}
|
|
|
- checked={activa}
|
|
|
- onChange={(checked) => setActiva(checked)}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
- <Col md={8} xs={24}>
|
|
|
- <Form.Item
|
|
|
- label="Amplitud"
|
|
|
- name="amplitud"
|
|
|
- rules={[
|
|
|
- commonRules.requerido,
|
|
|
- ]}
|
|
|
- >
|
|
|
- <AntdSelect
|
|
|
- showSearch
|
|
|
- placeholder="Seleccione una amplitud"
|
|
|
- optionFilterProp="children"
|
|
|
- filterOption={(input, option) =>
|
|
|
- option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
- }
|
|
|
+ <DefaultLayout>
|
|
|
+ <Form layout="vertical" name="basic" form={form} onFinish={onFinish} onFinishFailed={() => { }}>
|
|
|
+ <Row gutter={16}>
|
|
|
+ <Col span={24}>
|
|
|
+ <h2>Información del Condicionante</h2>
|
|
|
+ </Col>
|
|
|
+ <Col md={8} xs={24}>
|
|
|
+ <Form.Item
|
|
|
+ label={<Text strong>Título</Text>}
|
|
|
+ name="titulo"
|
|
|
+ rules={[
|
|
|
+ { required: true, message: 'El título es obligatorio.' }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <Input />
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Col md={8} xs={24}>
|
|
|
+ <Form.Item
|
|
|
+ label={<Text strong>Amplitud</Text>}
|
|
|
+ name="amplitud"
|
|
|
+ rules={[
|
|
|
+ { required: true, message: 'La amplitud es obligatoria.' }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <AntdSelect
|
|
|
+ showSearch
|
|
|
+ placeholder="Seleccione una amplitud"
|
|
|
+ optionFilterProp="children"
|
|
|
+ filterOption={(input, option) =>
|
|
|
+ option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
+ }
|
|
|
+ >
|
|
|
+ {amplitudes.map((amplitud) => (
|
|
|
+ <AntdSelect.Option key={amplitud.value} value={amplitud.value}>
|
|
|
+ {amplitud.label}
|
|
|
+ </AntdSelect.Option>
|
|
|
+ ))}
|
|
|
+ </AntdSelect>
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Col md={8} xs={24}>
|
|
|
+ <Form.Item
|
|
|
+ label={<Text strong>Activa</Text>}
|
|
|
+ name="activa"
|
|
|
+ >
|
|
|
+ <Switch
|
|
|
+ checkedChildren="Si"
|
|
|
+ unCheckedChildren="No"
|
|
|
+ style={{ backgroundColor: activa ? "#52c41a" : "#f5222d" }}
|
|
|
+ checked={activa}
|
|
|
+ onChange={(checked) => setActiva(checked)}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Divider style={{margin: '8px 0', borderColor: 'transparent'}}/>
|
|
|
+ <Col md={12} xs={24}>
|
|
|
+ <Form.Item
|
|
|
+ label={<Text strong>Fines de Movilización</Text>}
|
|
|
+ name="fines"
|
|
|
+ rules={[
|
|
|
+ { required: true, message: 'Seleccione al menos un fin de movilización.' }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <Checkbox.Group value={selectedFines} onChange={setSelectedFines} style={{ width: '100%' }}>
|
|
|
+ <Row>
|
|
|
+ {fines.map((fin) => (
|
|
|
+ <Col span={24} key={fin.id}>
|
|
|
+ <Checkbox value={fin.id}>{fin.nombre}</Checkbox>
|
|
|
+ </Col>
|
|
|
+ ))}
|
|
|
+ </Row>
|
|
|
+ </Checkbox.Group>
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Col md={12} xs={24}>
|
|
|
+ <Form.Item
|
|
|
+ label={<Text strong>Tipo de Movilización</Text>}
|
|
|
+ name="tipos"
|
|
|
+ rules={[
|
|
|
+ { required: true, message: 'Seleccione al menos un tipo de movilización.' }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <Checkbox.Group value={selectedTipos} onChange={setSelectedTipos} style={{ width: '100%' }}>
|
|
|
+ <Row>
|
|
|
+ {tipos.map((tipo) => (
|
|
|
+ <Col span={24} key={tipo.id}>
|
|
|
+ <Checkbox value={tipo.id}>{tipo.nombre}</Checkbox>
|
|
|
+ </Col>
|
|
|
+ ))}
|
|
|
+ </Row>
|
|
|
+ </Checkbox.Group>
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Divider style={{margin: '8px 0', borderColor: 'transparent'}}/>
|
|
|
+ <Col md={12} xs={24}>
|
|
|
+ <Form.Item
|
|
|
+ label={<Text strong>Especies</Text>}
|
|
|
+ name="idProducto"
|
|
|
+ rules={[{ required: true, message: 'La especie es obligatoria.' }]}
|
|
|
+ >
|
|
|
+ <Select
|
|
|
+ modelsParams={selectores.productos}
|
|
|
+ labelProp="nombre"
|
|
|
+ valueProp="id"
|
|
|
+ append={[model?.producto]}
|
|
|
+ extraParams={{ padre: true }}
|
|
|
+ onChange={(_, item) => {
|
|
|
+ setSubproductos(item?.subproductos || []);
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Col md={12} xs={24}>
|
|
|
+ <Form.Item
|
|
|
+ label={<Text strong>Subproductos</Text>}
|
|
|
+ name="subproductos"
|
|
|
+ >
|
|
|
+ <Checkbox.Group value={subproductos.map(sp => sp.id)} onChange={setSubproductos} style={{ width: '100%' }}>
|
|
|
+ <Row>
|
|
|
+ {subproductos.map((subproducto) => (
|
|
|
+ <Col span={24} key={subproducto.id}>
|
|
|
+ <Checkbox value={subproducto.id}>{subproducto.nombre}</Checkbox>
|
|
|
+ </Col>
|
|
|
+ ))}
|
|
|
+ </Row>
|
|
|
+ </Checkbox.Group>
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Divider style={{margin: '8px 0', borderColor: 'transparent'}}/>
|
|
|
+ <Col md={12} xs={24}>
|
|
|
+ <Form.Item
|
|
|
+ label={<Text strong>Descripción</Text>}
|
|
|
+ name="descripcion"
|
|
|
+ rules={[
|
|
|
+ { required: true, message: 'La descripción es obligatoria.' }
|
|
|
+ ]}
|
|
|
>
|
|
|
- {amplitudes.map((amplitud) => (
|
|
|
- <AntdSelect.Option key={amplitud.value} value={amplitud.value}>
|
|
|
- {amplitud.label}
|
|
|
- </AntdSelect.Option>
|
|
|
- ))}
|
|
|
- </AntdSelect>
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
- <Col md={8} xs={24}>
|
|
|
- <Form.Item
|
|
|
- label="Fines de Movilización"
|
|
|
- name="fines"
|
|
|
- rules={[
|
|
|
- commonRules.requerido,
|
|
|
- ]}
|
|
|
- >
|
|
|
- <Checkbox.Group>
|
|
|
- {fines.map((fin) => (
|
|
|
- <Checkbox key={fin.value} value={fin.value}>
|
|
|
- {fin.label}
|
|
|
- </Checkbox>
|
|
|
- ))}
|
|
|
- </Checkbox.Group>
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
- <Col md={8} xs={24}>
|
|
|
- <Form.Item
|
|
|
- label="Tipo de Movilización"
|
|
|
- name="tipos"
|
|
|
- rules={[
|
|
|
- commonRules.requerido,
|
|
|
- ]}
|
|
|
- >
|
|
|
- <Checkbox.Group>
|
|
|
- {tipos.map((tipo) => (
|
|
|
- <Checkbox key={tipo.value} value={tipo.value}>
|
|
|
- {tipo.label}
|
|
|
- </Checkbox>
|
|
|
- ))}
|
|
|
- </Checkbox.Group>
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
- <Col md={8} xs={24}>
|
|
|
- <Form.Item
|
|
|
- label="Especies"
|
|
|
- name="idProducto"
|
|
|
- rules={[commonRules.requerido]}
|
|
|
- >
|
|
|
- <Select
|
|
|
- modelsParams={selectores.productos}
|
|
|
- labelProp="nombre"
|
|
|
- valueProp="idProducto"
|
|
|
- append={[model?.producto]}
|
|
|
- extraParams={{ padre: true }}
|
|
|
- onChange={(_, item) => {
|
|
|
- setSubproductos(item?.subproductos)
|
|
|
- console.log(item)
|
|
|
- }}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
- <Col md={8} xs={24}>
|
|
|
- <Form.Item
|
|
|
- label="Subproductos"
|
|
|
- name="subproductos"
|
|
|
- >
|
|
|
- <Checkbox.Group>
|
|
|
- {subproductos.map((subproducto) => (
|
|
|
- <Checkbox key={subproducto?.id} value={subproducto?.id}>
|
|
|
- {subproducto?.nombre}
|
|
|
- </Checkbox>
|
|
|
- ))}
|
|
|
- </Checkbox.Group>
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
- <Col span={24}>
|
|
|
- <Form.Item>
|
|
|
- <Button
|
|
|
- type="primary"
|
|
|
- htmlType="submit"
|
|
|
- style={{ marginTop: "30px" }}
|
|
|
- loading={loading}
|
|
|
+ <Input.TextArea rows={3} />
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Col md={12} xs={24}>
|
|
|
+ <Form.Item
|
|
|
+ label={<Text strong>Orígenes y Destinos</Text>}
|
|
|
>
|
|
|
- Guardar
|
|
|
- </Button>
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- </Form>
|
|
|
- )
|
|
|
+ <Button type="primary" onClick={showModal}>
|
|
|
+ Seleccionar Orígenes y Destinos
|
|
|
+ </Button>
|
|
|
+ <Modal title="Orígenes y Destinos" visible={isModalVisible} onOk={handleOk} onCancel={handleCancel}>
|
|
|
+ <Row>
|
|
|
+ <Col span={12}>
|
|
|
+ <h3>Origen</h3>
|
|
|
+ <Checkbox.Group value={selectedOrigenes} onChange={setSelectedOrigenes}>
|
|
|
+ <Row>
|
|
|
+ {estados.map((estado) => (
|
|
|
+ <Col span={24} key={estado.id}>
|
|
|
+ <Checkbox value={estado.id}>{estado.nombre}</Checkbox>
|
|
|
+ </Col>
|
|
|
+ ))}
|
|
|
+ </Row>
|
|
|
+ </Checkbox.Group>
|
|
|
+ </Col>
|
|
|
+ <Col span={12}>
|
|
|
+ <h3>Destino</h3>
|
|
|
+ <Checkbox.Group value={selectedDestinos} onChange={setSelectedDestinos}>
|
|
|
+ <Row>
|
|
|
+ {estados.map((estado) => (
|
|
|
+ <Col span={24} key={estado.id}>
|
|
|
+ <Checkbox value={estado.id}>{estado.nombre}</Checkbox>
|
|
|
+ </Col>
|
|
|
+ ))}
|
|
|
+ </Row>
|
|
|
+ </Checkbox.Group>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </Modal>
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Col span={24}>
|
|
|
+ <Form.Item>
|
|
|
+ <Button
|
|
|
+ type="primary"
|
|
|
+ htmlType="submit"
|
|
|
+ style={{ marginTop: "30px" }}
|
|
|
+ loading={loading}
|
|
|
+ >
|
|
|
+ Guardar
|
|
|
+ </Button>
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </Form>
|
|
|
+ </DefaultLayout>
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
-export default ProductoDetalle
|
|
|
+export default CondicionanteDetalle;
|