maquinaria.php 15 KB

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