centroTrabajo.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <?php
  2. $strModulo = 'centroTrabajo';
  3. $arrCT = array();
  4. //$url = 'https://www.solerpalau.mx/plantasyp/datosPlanta.php';
  5. $url = 'https://www.solerpalau.mx/plantasyp/datosPlanta.php';
  6. $opciones = array('http' =>
  7. array(
  8. 'method' => 'GET',
  9. 'max_redirects' => '0',
  10. 'ignore_errors' => '1'
  11. )
  12. );
  13. $contexto = stream_context_create($opciones);
  14. $flujo = fopen($url, 'r', false, $contexto);
  15. $arrResultadoPeticion = json_decode(stream_get_contents($flujo), true);
  16. $arrCT[0]['idCT'] = 'T';
  17. $arrCT[0]['name'] = 'Todos';
  18. $contadorCT = 1;
  19. foreach ($arrResultadoPeticion['datosRespuesta'] as $clave => $valor){
  20. $arrCT[$contadorCT]['idCT'] = $clave;
  21. $arrCT[$contadorCT]['name'] = $clave;
  22. $contadorCT++;
  23. }
  24. $jsonCentrosT = json_encode($arrCT);
  25. ?>
  26. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  27. <html xmlns="http://www.w3.org/1999/xhtml">
  28. <head>
  29. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  30. <meta http-equiv="imagetoolbar" content="no" />
  31. <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Poppins:400,500,700,300,600">
  32. <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans">
  33. <link media="screen" rel="stylesheet" type="text/css" href="css/principal.css" />
  34. <!--<link media="screen" rel="stylesheet" type="text/css" href="css/pagination.css" />--> <!--Paginador-->
  35. <link rel="shortcut icon" type="image/x-icon" href="css/layout/global/sp.ico" />
  36. <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
  37. <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.14.1/dijit/themes/claro/claro.css">
  38. <script src="//ajax.googleapis.com/ajax/libs/dojo/1.14.1/dojo/dojo.js" data-dojo-config="async: true, parseOnLoad:true"></script>
  39. <script type="application/javascript">
  40. // Cargamos los complementos de dojo
  41. require(["dojo/dom", "dojo/_base/fx", "dojo/_base/array", "dojo/query", "dojo/dom-construct", "dijit/registry", "dojo/dom-style", "dojo/ready", "dojo/on", "dojo/window",
  42. "dojo/store/Memory", "dijit/form/FilteringSelect", "dijit/form/Button", "dojo/dom-class", "dijit/Dialog",
  43. "dojo/_base/lang", "dojox/grid/DataGrid", "dojo/data/ItemFileWriteStore", "dojox/grid/enhanced/plugins/DnD", "dojox/grid/EnhancedGrid", "dojox/grid/enhanced/plugins/Selector", "dojox/grid/enhanced/plugins/IndirectSelection", "dojox/grid/enhanced/plugins/NestedSorting",
  44. "dijit/ProgressBar", "dijit/ConfirmDialog", "dojo/dom-style", "dijit/form/ComboButton", "dijit/Menu", "dijit/MenuItem", "dijit/MenuSeparator", "dijit/Tooltip", "dijit/form/Form", "dijit/form/TextBox",
  45. "dojox/grid/enhanced/plugins/Filter", "dijit/form/ValidationTextBox", "dijit/form/NumberSpinner", "dojo/request", "dojo/parser"],
  46. function(dom, fx, array, query, domConstruct, dijit, style, ready, on, win,
  47. Memory, FilteringSelect, Button, domClass, Dialog,
  48. lang, DataGrid, ItemFileWriteStore, DnDConfig, EnhancedGrid, Selector, indirectSelection, nestedSorting,
  49. ProgressBar, ConfirmDialog, style, ComboButton, Menu, MenuItem, MenuSeparator, Tooltip, Form, TextBox, filter, ValidationTextBox, NumberSpinner, request) {
  50. const idModulo = "<?php echo($strModulo);?>";
  51. const arrCentrosT = <?php echo($jsonCentrosT); ?>;
  52. // Para Mostrar de Mensajes de "error o éxito"
  53. var dgEjecuta = new Dialog({title: 'Procesando...', style: 'width:300px'});
  54. var pbMarcar = new ProgressBar({value: Number.POSITIVE_INFINITY, layoutAlign: 'left'});
  55. dgEjecuta.setContent(pbMarcar);
  56. dgResultadoError = new ConfirmDialog({ title:"<b>Error</b>", style: "min-width:300px; heigth; auto" });
  57. style.set(dgResultadoError.cancelButton.domNode, 'display', 'none');
  58. dgResultadoExito = new ConfirmDialog({ title:"<b>Éxito</b>", style: "min-width:300px; heigth; auto" });
  59. style.set(dgResultadoExito.cancelButton.domNode, 'display', 'none');
  60. /****************************************************************** Inputs ******************************************************************/
  61. new FilteringSelect({
  62. id: "select_CentroTrabajo",
  63. store: new Memory({ idProperty: "idCT", data: arrCentrosT }),
  64. autoComplete: true,
  65. maxHeight: 300,
  66. style: "width: 100%;",
  67. placeHolder: "Seleccione una opción",
  68. onChange: function(idCt){
  69. }
  70. }, "select_CentroTrabajo");
  71. /****************************************************************** Botones ******************************************************************/
  72. new Button({
  73. id: "btn_Buscar",
  74. label: "Buscar",
  75. iconClass: "dijitIconSearch",
  76. showLabel: false,
  77. onClick: function(){
  78. let centroT = dijit.byId('select_CentroTrabajo').value;
  79. if(centroT != ""){
  80. consultarDatos(centroT);
  81. }
  82. }
  83. }, "btn_Buscar").startup();
  84. /****************************************************************** Funciones ******************************************************************/
  85. consultarDatos = function(ct){
  86. let urlBusqueda = "datosPlanta.php";
  87. if(ct != ""){
  88. urlBusqueda += "?ct=" + ct;
  89. }
  90. request.post(urlBusqueda, {
  91. data: {
  92. accion: 'accion',
  93. idModulo: idModulo
  94. }
  95. }).then(
  96. function (response) {
  97. var objResponse = JSON.parse(response);
  98. if (objResponse['estatus'] == "ERROR") {
  99. dgEjecuta.hide();
  100. dgResultadoError.setContent(objResponse['errorDescripcion']);
  101. dgResultadoError.show();
  102. } else {
  103. let datosRecibidos = objResponse["datosRespuesta"];
  104. domConstruct.empty("div_Cards");
  105. for(var centroTrabajo in datosRecibidos){
  106. var divCol = domConstruct.create("div", {
  107. class: "col pb-5",
  108. }, "div_Cards");
  109. var div_C = domConstruct.create("div", {
  110. class: "card",
  111. }, divCol);
  112. var img_C = domConstruct.create("img", {
  113. class: "card-img-top",
  114. height: "180px",
  115. src: datosRecibidos[centroTrabajo]['rutaImagenCT']
  116. }, div_C);
  117. var div_Body = domConstruct.create("div", {
  118. class: "card-body"
  119. }, div_C);
  120. var h5_C = domConstruct.create("h5", {
  121. class: "card-title",
  122. innerHTML: "Centro de Trabajo: <b>"+centroTrabajo+"</b>"
  123. }, div_Body);
  124. var urlIr = "maquinaria.php?ct="+centroTrabajo
  125. var a_C = domConstruct.create("a", {
  126. class: "btn btn-link",
  127. innerHTML: "Ver Maquinaria",
  128. href: urlIr
  129. }, div_Body);
  130. }
  131. }
  132. }
  133. );
  134. };
  135. ready(function() {
  136. // Actualizar el tamaño del TabContainer en función del tamaño de página
  137. var ventana = win.getBox();
  138. var strVentana = (ventana.h-110)+"px";
  139. style.set(dijit.byId("djTab").id, { height:strVentana });
  140. dijit.byId("djTab").resize();
  141. // Actualizar el tamaño del TabContainer en función del tamaño de página
  142. on(window, "resize", function() {
  143. var ventana = win.getBox();
  144. var strVentana = (ventana.h-110)+"px";
  145. style.set(dijit.byId("djTab").id, { height:strVentana });
  146. dijit.byId("djTab").resize();
  147. });
  148. // Eliminar la cortina de entrada
  149. fx.fadeOut({node: dom.byId("loadingOverlay"), duration: 1}).play();
  150. setTimeout(function () {
  151. domConstruct.destroy("loadingOverlay");
  152. }, 1);
  153. consultarDatos("");
  154. });
  155. });
  156. </script>
  157. <style>
  158. .card{
  159. width:300px;
  160. height:300px;
  161. box-shadow: 10px 5px 5px #b0bec5;
  162. transition: width 2s, height 2s, transform 2s;
  163. border-radius: 5px;
  164. border-color: #34495E;
  165. }
  166. img{
  167. opacity: 0.8;
  168. }
  169. .card:hover{
  170. transform: scale(1.1);
  171. }
  172. .col{
  173. flex: 0 0 0%;
  174. }
  175. </style>
  176. </head>
  177. <body class="claro">
  178. <div id="loadingOverlay" class="loadingOverlay pageOverlay">
  179. <div class="loadingMessage">Espere...</div>
  180. </div>
  181. <div id="wrapper_container_module">
  182. <div id="wrapper_table" style="position:relative;">
  183. <div data-dojo-type="dijit/form/Form" id="frm" data-dojo-id="frm" encType="multipart/form-data"
  184. action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" style="position:relative;">
  185. <script type="dojo/on" data-dojo-event="submit">return true;</script>
  186. <div id="wrapper_table_head">Centro de Trabajo</div>
  187. <div id="wrapper_table_body_mod_app">
  188. <table width="100%" height="auto" border="0" style="border-spacing: 5px;">
  189. <tr>
  190. <td width="10%" colspan="2" class="etiquetaFormulario">
  191. <label class="noTopPadding">Centro de Trabajo:</label>
  192. </td>
  193. <td width="20%" colspan="4">
  194. <input id="select_CentroTrabajo"/>
  195. </td>
  196. <td width="70%" colspan="14">
  197. <button id="btn_Buscar" type="button"></button>
  198. </td>
  199. </tr>
  200. </table>
  201. <div id="djTab" data-dojo-type="dijit/layout/LayoutContainer" style="overflow-y: auto;">
  202. <div class="container" style="margin-left: 5px; margin-right: 5px; margin-top: 20px">
  203. <div class="row" id="div_Cards">
  204. </div>
  205. </div>
  206. </div>
  207. </div>
  208. </div>
  209. </div>
  210. </div>
  211. </body>