20 次代碼提交 025b692ee3 ... 95677c7b63

作者 SHA1 備註 提交日期
  IsaacNoga 95677c7b63 Merge remote-tracking branch 'origin/desarrollo' into indev 10 月之前
  IsaacNoga 1846d3ecea seteador de niveles 10 月之前
  Jose Cienfuegos 877c074493 Se agrego modulo nivel 10 月之前
  OscarGil03 cb3c3ef394 corrección estilos wysywyg 10 月之前
  OscarGil03 03267d89a4 Wysywyg condicionantes 10 月之前
  OscarGil03 752afd3d1f Edición municipios 11 月之前
  OscarGil03 4256e9ca73 ordenar 11 月之前
  OscarGil03 f2d0a2ab93 Actualización de tabla al eliminar un registro 11 月之前
  OscarGil03 eea4198cc9 Edicion condicionantes 11 月之前
  OscarGil03 507cb960f7 Merge branch 'desarrollo' into OGdev 11 月之前
  OscarGil03 db169fb0b1 subproductos 11 月之前
  OscarGil03 788f7261f1 Merge branch 'desarrollo' into OGdev 11 月之前
  OscarGil03 c77458630e Condicionante 11 月之前
  OscarGil03 95e224ddc7 Catalogos 11 月之前
  OscarGil03 30bd952065 campo idSagarhpa 11 月之前
  acampillo 1f0ea49c91 comenzando vista Condicionante 1 年之前
  acampillo 7c1e9681a8 productos padre agregando variable por defecto 1 年之前
  acampillo 860c8a08ec no aparecia el nombre al eliminar 1 年之前
  acampillo ed7ce9adca ID: 10049 CRUD de FamiliaProducto 1 年之前
  WriestTavo 32a3fa5dfc Proyecto Base 1 年之前
共有 3 個文件被更改,包括 140 次插入78 次删除
  1. 12 0
      src/components/DefaultLayout.jsx
  2. 3 1
      src/components/index.js
  3. 125 77
      src/views/catalogos/municipios/MunicipioDetalle.jsx

+ 12 - 0
src/components/DefaultLayout.jsx

@@ -0,0 +1,12 @@
+import { Layout } from "antd";
+import React from "react";
+
+const DefaultLayout = ({ children }) => {
+  return (
+    <Layout style={{ backgroundColor: "white", padding: "0 24px 24px" }}>
+      {children}
+    </Layout>
+  );
+};
+
+export default DefaultLayout;

+ 3 - 1
src/components/index.js

@@ -12,6 +12,7 @@ import ViewLoading from "./ViewLoading";
 import MediaCards from "./MediaCards";
 import InputPass from "./InputPass";
 import Selector from "./Selector";
+import DefaultLayout from "./DefaultLayout";
 
 export {
   Tabla,
@@ -27,5 +28,6 @@ export {
   ViewLoading,
   MediaCards,
   InputPass,
-  ArbolPermisos
+  ArbolPermisos,
+  DefaultLayout,
 };

+ 125 - 77
src/views/catalogos/municipios/MunicipioDetalle.jsx

@@ -1,11 +1,11 @@
-import { Form, Input, Button, Spin, Row, Col } from 'antd';
-import { useEffect, useMemo, useState, useCallback } from 'react';
-import { useNavigate } from 'react-router-dom';
-import { respuestas } from '../../../utilities'
-import HttpService from '../../../services/httpService';
-import { useQuery, useModel } from '../../../hooks';
-import { commonRules } from '../../../constants/rules';
-import { Select } from "../../../components";
+import { Form, Input, Button, Row, Col, Select as AntSelect } from "antd";
+import { useCallback, useEffect, useMemo, useState } from "react";
+import { useNavigate } from "react-router-dom";
+import { respuestas } from "../../../utilities";
+import HttpService from "../../../services/httpService";
+import { useQuery, useModel } from "../../../hooks";
+import { commonRules } from "../../../constants/rules";
+import { DefaultLayout, Select } from "../../../components";
 
 const endpoints = {
   municipio: "municipio",
@@ -19,18 +19,26 @@ const MunicipioDetalle = () => {
   const id = query.get("id");
   const [estado, setEstado] = useState("");
   const [timer, setTimer] = useState(null);
-  const [request, setRequest] = useState({})
+  const [request, setRequest] = useState({});
+  const [niveles, setNiveles] = useState([]);
 
-  const estadoExtraParams = useMemo(() => ({
-    idEstado: id,
-  }), [id])
+  const estadoExtraParams = useMemo(
+    () => ({
+      idEstado: id,
+    }),
+    [id]
+  );
 
-  const requestParams = useMemo(() => ({
-    name: endpoints.municipio,
-    id,
-  }), [id])
+  const requestParams = useMemo(
+    () => ({
+      name: endpoints.municipio,
+      expand: "estado,niveles",
+      id,
+    }),
+    [id]
+  );
 
-  const { model, modelLoading } = useModel(request)
+  const { model, modelLoading } = useModel(request);
 
   const onFinish = async (values) => {
     try {
@@ -41,13 +49,16 @@ const MunicipioDetalle = () => {
       };
 
       if (id) {
-        body.id = id
+        body.id = id;
       }
 
-      const res = await HttpService.post(`${endpoints.municipio}/guardar`, body);
+      const res = await HttpService.post(
+        `${endpoints.municipio}/guardar`,
+        body
+      );
       respuestas(res);
       if (res?.status === 200) {
-        navigate('/administracion/catalogos/municipios')
+        navigate("/administracion/catalogos/municipios");
       }
     } catch (error) {
       console.log(error);
@@ -55,7 +66,7 @@ const MunicipioDetalle = () => {
     } finally {
       setLoading(false);
     }
-  }
+  };
 
   const onSearch = (value) => {
     clearTimeout(timer);
@@ -65,75 +76,112 @@ const MunicipioDetalle = () => {
     setTimer(newTimer);
   };
 
+  const getNiveles = useCallback(async () => {
+    try {
+      const res = await HttpService.get("nivel");
+      if (res.status === 200) {
+        setNiveles(
+          res?.resultado?.map((nivel) => ({
+            value: nivel?.id,
+            label: nivel?.nombre,
+          }))
+        );
+      }
+    } catch (e) {
+      console.log(e);
+    }
+  }, []);
 
   useEffect(() => {
     if (id) {
-      setRequest(requestParams)
+      setRequest(requestParams);
     }
     return () => {
-      setRequest({})
-    }
-  }, [id, requestParams])
+      setRequest({});
+    };
+  }, [id, requestParams]);
 
   useEffect(() => {
     if (model) {
-      form.setFieldsValue({ 
+      form.setFieldsValue({
         ...model,
-      })
+      });
+      let nivelesGuardados = [];
+      if (model?.niveles?.length > 0) {
+        nivelesGuardados = model?.niveles?.map((nivel) => nivel?.id);
+        form.setFieldValue("niveles", nivelesGuardados);
+      }
     }
-  }, [form, model])
+  }, [form, model]);
+
+  useEffect(() => {
+    getNiveles();
+  }, [getNiveles]);
 
   return (
-    <Form
-      layout="vertical"
-      name="basic"
-      form={form}
-      onFinish={onFinish}
-      onFinishFailed={() => {}}
-    >
-      <Row gutter={16}>
-        <Col span={24}>
-          <h2>Información del Municipio</h2>
-        </Col>
-        <Col md={8} xs={12}>
-          <Form.Item
-            label="Nombre"
-            name="nombre"
-            rules={[commonRules.requerido]}
-          >
-            <Input />
-          </Form.Item>
-        </Col>
-        <Col md={8} xs={12}>
-          <Form.Item
-            label="Estado"
-            name="idEstado"
-            rules={[commonRules.requerido]}
-          >
-            <Select
-              modelsParams={{ name: 'estado', ordenar: 'nombre' }}
-              labelProp="nombre"
-              valueProp="id"
-              append={form.getFieldValue('idEstado') ? [{ id: form.getFieldValue('idEstado'), nombre: form.getFieldValue('estado') }] : []}
-              onSearch={onSearch}
-              extraParams={estadoExtraParams}
-            />
-          </Form.Item>
-        </Col>
-        <Col span={24}>
-          <Form.Item>
-            <Button
-              type="primary"
-              htmlType="submit"
-              style={{ marginTop: "30px" }}
-              loading={loading}
+    <DefaultLayout>
+      <Form
+        layout="vertical"
+        name="basic"
+        form={form}
+        onFinish={onFinish}
+        onFinishFailed={() => {}}
+      >
+        <Row gutter={[10, 10]}>
+          <Col span={24}>
+            <h2>Información del Municipio</h2>
+          </Col>
+          <Col span={24} md={12}>
+            <Form.Item
+              label="Nombre"
+              name="nombre"
+              rules={[commonRules.requerido]}
+            >
+              <Input size="large" />
+            </Form.Item>
+          </Col>
+          <Col span={24} md={12}>
+            <Form.Item
+              label="Estado"
+              name="idEstado"
+              rules={[commonRules.requerido]}
             >
-              Guardar
-            </Button>
-          </Form.Item>
-        </Col>
-      </Row>
-    </Form>
+              <Select
+                size="large"
+                modelsParams={{ name: "estado", ordenar: "nombre" }}
+                labelProp="nombre"
+                valueProp="id"
+                append={[model?.estado]}
+                onSearch={onSearch}
+                extraParams={estadoExtraParams}
+              />
+            </Form.Item>
+          </Col>
+          <Col span={24}>
+            <Form.Item label="Estado" name="niveles">
+              <AntSelect
+                style={{ width: "100%" }}
+                options={niveles}
+                mode="multiple"
+              />
+            </Form.Item>
+          </Col>
+          <Col span={24}>
+            <Form.Item>
+              <Button
+                size="large"
+                type="primary"
+                htmlType="submit"
+                loading={loading}
+                style={{ marginTop: "30px" }}
+              >
+                Guardar
+              </Button>
+            </Form.Item>
+          </Col>
+        </Row>
+      </Form>
+    </DefaultLayout>
   );
 };