detalles.php 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875
  1. <?php
  2. $strModulo = 'detalles';
  3. $CT_recibido = $_GET['ct'];
  4. $maq_recibido = $_GET['maq'];
  5. $url = 'https://www.solerpalau.mx/plantasyp/datosPlanta.php?ct='.$CT_recibido.'&maq='.$maq_recibido;
  6. $opciones = array('http' =>
  7. array(
  8. 'method' => 'GET',
  9. 'max_redirects' => '0',
  10. 'ignore_errors' => '1'
  11. )
  12. );
  13. /*Ordenes de trabajo*/
  14. $strDatos = "";
  15. $linkStr = __FILE__;
  16. $linkArr = explode("/", $linkStr);
  17. $link = end($linkArr) . "?ct=" . $CT_recibido . "&maq=" . $maq_recibido;
  18. if($maq_recibido == "315_0"){
  19. $strDatos .= "[ \n";
  20. $strDatos .= "{ id: 'BI001', CentroDeTrabajo: 'Centro de Trabajo #315', Maquina: 'Rechazadora', NumOrden: '0100', FechaOrden: '22/10/2021' }, \n";
  21. $strDatos .= "{ id: 'BI004', CentroDeTrabajo: 'Centro de Trabajo #315', Maquina: 'Rechazadora', NumOrden: '0080', FechaOrden: '01/09/2021' }, \n";
  22. $strDatos .= "]; \n";
  23. }else if($maq_recibido == "613_0"){
  24. $strDatos .= "[ \n";
  25. $strDatos .= "{ id: 'BI002', CentroDeTrabajo: 'Centro de Trabajo #613', Maquina: 'Paneladora', NumOrden: '0098', FechaOrden: '18/10/2021' }, \n";
  26. $strDatos .= "{ id: 'BI003', CentroDeTrabajo: 'Centro de Trabajo #613', Maquina: 'Paneladora', NumOrden: '0095', FechaOrden: '05/09/2021' }, \n";
  27. $strDatos .= "{ id: 'BI005', CentroDeTrabajo: 'Centro de Trabajo #613', Maquina: 'Paneladora', NumOrden: '0075', FechaOrden: '29/08/2021' }, \n";
  28. $strDatos .= "]; \n";
  29. }else if($maq_recibido == "023_0"){
  30. $strDatos .= "[ \n";
  31. $strDatos .= "{ id: 'BI006', CentroDeTrabajo: 'Centro de Trabajo #023', Maquina: 'Punzonadora', NumOrden: '0065', FechaOrden: '17/08/2021' }, \n";
  32. $strDatos .= "]; \n";
  33. }else{
  34. $strDatos .= "[]; \n";
  35. }
  36. /*Fin ordenes de trabajo*/
  37. $contexto = stream_context_create($opciones);
  38. $flujo = fopen($url, 'r', false, $contexto);
  39. $arrResultadoPeticion = json_decode(stream_get_contents($flujo), true);
  40. $nombreMaquina = '';
  41. $carpetaImagenesMaquinaria = '';
  42. $carpetaPdfs = '';
  43. $infoGral = '';
  44. foreach ($arrResultadoPeticion['datosRespuesta'] as $idCentroT => $arrData){
  45. foreach ($arrData['maquinas'] as $clave => $valor){
  46. $nombreMaquina = $arrData['maquinas'][$clave]['nombre'];
  47. $carpetaImagenesMaquinaria = $arrData['maquinas'][$clave]['carpetaImagenesMaquinaria'];
  48. $infoGral = $arrData['maquinas'][$clave]['descripcion'];
  49. $carpetaPdfs = $arrData['maquinas'][$clave]['carpetaPdfs'];
  50. }
  51. }
  52. // Creamos los elementos para el "carousel" de imágenes
  53. $div_carousel_indicators = '';
  54. $imagenes_carousel = '';
  55. $contador_carousel = 0;
  56. if(!empty($carpetaImagenesMaquinaria)){
  57. $rutaBusqueda = 'css/layout/site/imgPlanta/maquinas/'.$carpetaImagenesMaquinaria;
  58. if(file_exists($rutaBusqueda)){
  59. if($directorio = opendir($rutaBusqueda)){
  60. while ($archivo = readdir($directorio)){
  61. if (!is_dir($archivo)){
  62. if (($archivo != ".") && ($archivo != "..")) {
  63. $arrArchivo = explode('_', $archivo);
  64. if(strpos($arrArchivo[1], 'principal') === false){
  65. $rutaImg = $rutaBusqueda.'/'.$archivo;
  66. $clase1 = '';
  67. if($contador_carousel == 0){
  68. $clase1 = 'active';
  69. }
  70. $div_carousel_indicators .= '<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="'.$contador_carousel.'" class="'.$clase1.' btn-carrusel" aria-current="true" aria-label="Slide '.($contador_carousel+1).'"></button>';
  71. $imagenes_carousel .= '<div class="carousel-item '.$clase1.'">';
  72. $imagenes_carousel .= '<img src="'.$rutaImg.'" class="d-block w-100" alt="...">';
  73. $imagenes_carousel .= '</div>';
  74. $contador_carousel++;
  75. }
  76. }
  77. }
  78. }
  79. }
  80. }
  81. }
  82. // Elementos para los Datos Generales
  83. $strTbodyEspecificaciones = '';
  84. $arrEspecificaciones = array();
  85. $arrTextoCol2 = array();
  86. // Rechazadora
  87. $arrTextoCol2['315'] = 'Rechazadora TLA 550';
  88. $arrEspecificaciones['315'][0]['col1'] = 'Espesor AL';
  89. $arrEspecificaciones['315'][1]['col1'] = 'Espesor FE';
  90. $arrEspecificaciones['315'][2]['col1'] = 'Espesor INOX';
  91. $arrEspecificaciones['315'][3]['col1'] = 'Altura puntas';
  92. $arrEspecificaciones['315'][4]['col1'] = 'Distancia entre puntas';
  93. $arrEspecificaciones['315'][5]['col1'] = 'Velocidad';
  94. $arrEspecificaciones['315'][6]['col1'] = 'Empuje';
  95. $arrEspecificaciones['315'][7]['col1'] = 'Potencia';
  96. $arrEspecificaciones['315'][8]['col1'] = 'Peso';
  97. $arrEspecificaciones['315'][0]['col2'] = '5 mm';
  98. $arrEspecificaciones['315'][1]['col2'] = '3.5 mm';
  99. $arrEspecificaciones['315'][2]['col2'] = '2.2 mm';
  100. $arrEspecificaciones['315'][3]['col2'] = '550 mm';
  101. $arrEspecificaciones['315'][4]['col2'] = '1150 mm';
  102. $arrEspecificaciones['315'][5]['col2'] = '0 1600 m/min';
  103. $arrEspecificaciones['315'][6]['col2'] = '1200 kg';
  104. $arrEspecificaciones['315'][7]['col2'] = '16 KW';
  105. $arrEspecificaciones['315'][8]['col2'] = '3200 kg';
  106. // Maquina Láser
  107. $arrTextoCol2['316'] = 'Maquina Láser Amada LC 2415';
  108. $arrEspecificaciones['316'][0]['col1'] = 'Área de trabajo';
  109. $arrEspecificaciones['316'][1]['col1'] = 'Carrera (eje X / Y / Z)';
  110. $arrEspecificaciones['316'][2]['col1'] = 'Precisión de posicionamiento';
  111. $arrEspecificaciones['316'][3]['col1'] = 'Precisión de reposicionamiento';
  112. $arrEspecificaciones['316'][4]['col1'] = 'Velocidad máxima de movimiento';
  113. $arrEspecificaciones['316'][5]['col1'] = 'Aceleración máxima';
  114. $arrEspecificaciones['316'][6]['col1'] = 'Poder de láser';
  115. $arrEspecificaciones['316'][7]['col1'] = 'Peso máximo de carga';
  116. $arrEspecificaciones['316'][8]['col1'] = 'Dimensiones generales';
  117. $arrEspecificaciones['316'][0]['col2'] = '300mm * 1500mm';
  118. $arrEspecificaciones['316'][1]['col2'] = '1525mm / 3025mm / 150mm';
  119. $arrEspecificaciones['316'][2]['col2'] = '± 0,03 mm / m';
  120. $arrEspecificaciones['316'][3]['col2'] = '± 0,03 mm';
  121. $arrEspecificaciones['316'][4]['col2'] = '140 m / min';
  122. $arrEspecificaciones['316'][5]['col2'] = '1.5G';
  123. $arrEspecificaciones['316'][6]['col2'] = '1.5KW ~ 4KW';
  124. $arrEspecificaciones['316'][7]['col2'] = '700KG';
  125. $arrEspecificaciones['316'][8]['col2'] = '4900 × 2250 × 1700 mm';
  126. // Balanceadora
  127. $arrTextoCol2['559'] = 'Balanceadora Hofmann CVW - B';
  128. $arrEspecificaciones['559'][0]['col1'] = 'Peso máximo (kg)';
  129. $arrEspecificaciones['559'][1]['col1'] = 'Comp. Cama (mm)';
  130. $arrEspecificaciones['559'][2]['col1'] = 'Rotor';
  131. $arrEspecificaciones['559'][3]['col1'] = 'Hoja de balance (RPM)';
  132. $arrEspecificaciones['559'][4]['col1'] = 'Desencadenar (CV)';
  133. $arrEspecificaciones['559'][5]['col1'] = 'Cardán (CV)';
  134. $arrEspecificaciones['559'][6]['col1'] = 'Planos de compensación';
  135. $arrEspecificaciones['559'][7]['col1'] = 'Accionado';
  136. $arrEspecificaciones['559'][8]['col1'] = 'Medición computarizada';
  137. $arrEspecificaciones['559'][0]['col2'] = '15,500';
  138. $arrEspecificaciones['559'][1]['col2'] = '3000';
  139. $arrEspecificaciones['559'][2]['col2'] = '2400';
  140. $arrEspecificaciones['559'][3]['col2'] = '300 - 1500';
  141. $arrEspecificaciones['559'][4]['col2'] = '30,0';
  142. $arrEspecificaciones['559'][5]['col2'] = '50';
  143. $arrEspecificaciones['559'][6]['col2'] = '2,3';
  144. $arrEspecificaciones['559'][7]['col2'] = 'Correa, Cardán o ambos';
  145. $arrEspecificaciones['559'][8]['col2'] = 'Balsis 3.0';
  146. // Dobladora Amada
  147. $arrTextoCol2['606'] = 'Dobladora Amada HG-1303';
  148. $arrEspecificaciones['606'][0]['col1'] = 'Peso máximo';
  149. $arrEspecificaciones['606'][1]['col1'] = 'Peso de la maquina';
  150. $arrEspecificaciones['606'][2]['col1'] = 'Entre columnas';
  151. $arrEspecificaciones['606'][3]['col1'] = 'Longitud OA (en Total))';
  152. $arrEspecificaciones['606'][4]['col1'] = 'Control';
  153. $arrEspecificaciones['606'][5]['col1'] = 'Repetibilidad';
  154. $arrEspecificaciones['606'][6]['col1'] = 'Accionamiento';
  155. $arrEspecificaciones['606'][7]['col1'] = 'Longitud máxima de flexión';
  156. $arrEspecificaciones['606'][8]['col1'] = 'Distancia entre marcos laterales';
  157. $arrEspecificaciones['606'][9]['col1'] = 'Longitud Total';
  158. $arrEspecificaciones['606'][10]['col1'] = 'Altura total';
  159. $arrEspecificaciones['606'][0]['col2'] = '55 toneladas';
  160. $arrEspecificaciones['606'][1]['col2'] = '7,940 Lbs.';
  161. $arrEspecificaciones['606'][2]['col2'] = '2.7 m';
  162. $arrEspecificaciones['606'][3]['col2'] = '3.1 m';
  163. $arrEspecificaciones['606'][4]['col2'] = 'CNC (AMNC3i)';
  164. $arrEspecificaciones['606'][5]['col2'] = '0.00004" (±0.001016 mm)';
  165. $arrEspecificaciones['606'][6]['col2'] = 'Híbrido';
  166. $arrEspecificaciones['606'][7]['col2'] = '82.1';
  167. $arrEspecificaciones['606'][8]['col2'] = '59.93';
  168. $arrEspecificaciones['606'][9]['col2'] = '89.00”';
  169. $arrEspecificaciones['606'][10]['col2'] = '76.00”';
  170. // Paneladora Salvagnini
  171. $arrTextoCol2['613'] = 'Paneladora Salvagnini P22116';
  172. $arrEspecificaciones['613'][0]['col1'] = 'Longitud máxima formato en entrada (mm)';
  173. $arrEspecificaciones['613'][1]['col1'] = 'Anchura máxima formato en entrada (mm)';
  174. $arrEspecificaciones['613'][2]['col1'] = 'Diagonal máxima de giro (mm)';
  175. $arrEspecificaciones['613'][3]['col1'] = 'Fuerza máxima de plegado (cuchillas) (kN)';
  176. $arrEspecificaciones['613'][4]['col1'] = 'Fuerza máxima de fijación (kN)';
  177. $arrEspecificaciones['613'][5]['col1'] = 'Longitud máxima de plegado (mm)';
  178. $arrEspecificaciones['613'][6]['col1'] = 'Altura máxima de plegado (mm)';
  179. $arrEspecificaciones['613'][7]['col1'] = 'Espesor mínimo (mm)';
  180. $arrEspecificaciones['613'][8]['col1'] = 'Espesor máximo y ángulo de plegado acero, UTS 410 N/mm2 (mm)';
  181. $arrEspecificaciones['613'][9]['col1'] = 'Espesor máximo y ángulo de plegado acero inoxidable, UTS 660 N/mm2 (mm)';
  182. $arrEspecificaciones['613'][10]['col1'] = 'Espesor máximo y ángulo de plegado aluminio, UTS 265 N/mm2 (mm)';
  183. $arrEspecificaciones['613'][11]['col1'] = 'Consumo medio (kW)';
  184. $arrEspecificaciones['613'][12]['col1'] = 'Nivel de ruido (Directiva de Máquinas 2006/42/CE) (dB)';
  185. $arrEspecificaciones['613'][0]['col2'] = '2495';
  186. $arrEspecificaciones['613'][1]['col2'] = '1600';
  187. $arrEspecificaciones['613'][2]['col2'] = '2500';
  188. $arrEspecificaciones['613'][3]['col2'] = '330';
  189. $arrEspecificaciones['613'][4]['col2'] = '530';
  190. $arrEspecificaciones['613'][5]['col2'] = '2180';
  191. $arrEspecificaciones['613'][6]['col2'] = '165';
  192. $arrEspecificaciones['613'][7]['col2'] = '0.4';
  193. $arrEspecificaciones['613'][8]['col2'] = '3.2 (±90°)<br>2.5 (±120°)<br>2.1 (±135°)';
  194. $arrEspecificaciones['613'][9]['col2'] = '2.5 (±90°)<br>2.1 (±120°)<br>1.6 (±130°)';
  195. $arrEspecificaciones['613'][10]['col2'] = '4.0 (±120°)<br>3.5 (±130°)';
  196. $arrEspecificaciones['613'][11]['col2'] = '3.0';
  197. $arrEspecificaciones['613'][12]['col2'] = '68';
  198. // Punzadora
  199. $arrTextoCol2['023'] = 'Punzadora AE 610';
  200. $arrEspecificaciones['023'][0]['col1'] = 'Capacidad de prensa (KN)';
  201. $arrEspecificaciones['023'][1]['col1'] = 'Precisión de posicionamiento (mm)';
  202. $arrEspecificaciones['023'][2]['col1'] = 'Número de estaciones';
  203. $arrEspecificaciones['023'][3]['col1'] = 'Bastidor de la máquina';
  204. $arrEspecificaciones['023'][4]['col1'] = 'Distancia de recorrido del eje (mm)';
  205. $arrEspecificaciones['023'][5]['col1'] = 'Longitud';
  206. $arrEspecificaciones['023'][6]['col1'] = 'Anchura';
  207. $arrEspecificaciones['023'][7]['col1'] = 'Altura';
  208. $arrEspecificaciones['023'][8]['col1'] = 'Peso';
  209. $arrEspecificaciones['023'][0]['col2'] = '200';
  210. $arrEspecificaciones['023'][1]['col2'] = '± 0.1';
  211. $arrEspecificaciones['023'][2]['col2'] = '45';
  212. $arrEspecificaciones['023'][3]['col2'] = 'Marco de puente';
  213. $arrEspecificaciones['023'][4]['col2'] = '2500x 1525';
  214. $arrEspecificaciones['023'][5]['col2'] = '4998';
  215. $arrEspecificaciones['023'][6]['col2'] = '5120';
  216. $arrEspecificaciones['023'][7]['col2'] = '2265';
  217. $arrEspecificaciones['023'][8]['col2'] = '13800';
  218. $arrColores = array();
  219. $arrColores['315']['estadoGral'] = 'color-perso';
  220. $arrColores['315']['ciclo'] = 'color-perso';
  221. $arrColores['315']['edoRefa'] = 'color-perso';
  222. $arrColores['316']['estadoGral'] = 'color-perso';
  223. $arrColores['316']['ciclo'] = 'color-perso';
  224. $arrColores['316']['edoRefa'] = 'color-perso';
  225. $arrColores['559']['estadoGral'] = 'color-perso';
  226. $arrColores['559']['ciclo'] = 'color-perso';
  227. $arrColores['559']['edoRefa'] = 'color-perso';
  228. $arrColores['606']['estadoGral'] = 'color-perso';
  229. $arrColores['606']['ciclo'] = 'color-perso';
  230. $arrColores['606']['edoRefa'] = 'color-perso';
  231. $arrColores['613']['estadoGral'] = 'color-perso';
  232. $arrColores['613']['ciclo'] = 'color-perso';
  233. $arrColores['613']['edoRefa'] = 'color-perso';
  234. $arrColores['023']['estadoGral'] = 'color-perso';
  235. $arrColores['023']['ciclo'] = 'bg-danger';
  236. $arrColores['023']['edoRefa'] = 'bg-warning';
  237. /* Atrasado - rojo && Sin Inventarios -> Amarillo */
  238. // Operativa
  239. // Al corriente
  240. // Disponibles
  241. $arrTextos = array();
  242. $arrTextos['color-perso'] = 'estadoGral';
  243. $arrTextos['bg-danger'] = 'Atrasado';
  244. $arrTextos['bg-warning'] = 'Sin Inventarios';
  245. //if($arrColores[$CT_recibido]['estadoGral'] == 'color-perso'){
  246. $texto1 = 'Operativa';
  247. //}
  248. if($arrColores[$CT_recibido]['ciclo'] == 'color-perso'){
  249. $texto2 = 'Al Corriente';
  250. }elseif ($arrColores[$CT_recibido]['ciclo'] == 'bg-danger'){
  251. $texto2 = 'Atrasado';
  252. }
  253. if($arrColores[$CT_recibido]['edoRefa'] == 'color-perso'){
  254. $texto3 = 'Disponible';
  255. }elseif ($arrColores[$CT_recibido]['edoRefa'] == 'bg-warning'){
  256. $texto3 = 'Sin Inventario';
  257. }
  258. $numRow = 1;
  259. foreach ($arrEspecificaciones[$CT_recibido] as $clave => $arrDetalles){
  260. $c1 = $arrDetalles['col1'];
  261. $c2 = $arrDetalles['col2'];
  262. $strTbodyEspecificaciones .= '<tr>';
  263. $strTbodyEspecificaciones .= '<th scope="row">'.$numRow.'</th>';
  264. $strTbodyEspecificaciones .= '<td>'.$c1.'</td>';
  265. $strTbodyEspecificaciones .= '<td>'.$c2.'</td>';
  266. $strTbodyEspecificaciones .= '</tr>';
  267. $numRow++;
  268. }
  269. // Creamos los elementos para Documentos Electrónicos
  270. $tbodyPdfs = '';
  271. $contadorArchivos = 1;
  272. if(!empty($carpetaPdfs)){
  273. if(file_exists($carpetaPdfs)){
  274. if($directorio = opendir($carpetaPdfs)){
  275. while ($archivo = readdir($directorio)){
  276. if (!is_dir($archivo)){
  277. if (($archivo != ".") && ($archivo != "..")) {
  278. //echo $archivo.'<br>';
  279. $tbodyPdfs .= '<tr>';
  280. $tbodyPdfs .= '<td class="celdaTabla">&nbsp;</td>';
  281. $tbodyPdfs .= '<td class="celdaTabla">'.$contadorArchivos.'</td>';
  282. $tbodyPdfs .= '<td class="celdaTabla">'.$archivo.'</td>';
  283. $tbodyPdfs .= '<td class="celdaTabla">';
  284. $rutaPDF = $carpetaPdfs.$archivo;
  285. $tbodyPdfs .= '<button id="btnP' . $contadorArchivos . '" data-dojo-type="dijit/form/Button" type="button" ';
  286. $tbodyPdfs .= 'data-dojo-props="showLabel:true,iconClass:\'dijitIttecPdf\'" ';
  287. $tbodyPdfs .= 'onclick="descargar(\'' . base64_encode($rutaPDF) . '\', \'PDF\')">Descargar PDF</button>';
  288. $tbodyPdfs .= '</td>';
  289. $tbodyPdfs .= '<td class="celdaTabla">&nbsp;</td>';
  290. $tbodyPdfs .= '</tr>';
  291. $contadorArchivos++;
  292. }
  293. }
  294. }
  295. }
  296. }
  297. }
  298. $textoCol2 = $arrTextoCol2[$CT_recibido];
  299. $titulo = $nombreMaquina . ' (Centro de Trabajo '.$CT_recibido.')';
  300. if(empty($tbodyPdfs)){
  301. $tbodyPdfs = '<td width="100%" colspan="20" class="celdaTabla" style="text-align:center;font-weight:bold;padding:8px;">Usted no cuenta con los permisos necesarios.</td>';
  302. }
  303. ?>
  304. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  305. <html xmlns="http://www.w3.org/1999/xhtml">
  306. <head>
  307. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  308. <meta http-equiv="imagetoolbar" content="no" />
  309. <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Poppins:400,500,700,300,600">
  310. <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans">
  311. <link media="screen" rel="stylesheet" type="text/css" href="css/principal.css" />
  312. <!--<link media="screen" rel="stylesheet" type="text/css" href="css/pagination.css" />--> <!--Paginador-->
  313. <link rel="shortcut icon" type="image/x-icon" href="css/layout/global/sp.ico" />
  314. <link media="screen" rel="stylesheet" type="text/css" href="css/chunk-vendors.3b8eb8e0.css" /> <!--CSS de los rectangulos-->
  315. <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.14.1/dijit/themes/claro/claro.css">
  316. <link rel="stylesheet" href="css/carrusel.css">
  317. <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
  318. <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
  319. <script src="//ajax.googleapis.com/ajax/libs/dojo/1.14.1/dojo/dojo.js" data-dojo-config="async: true, parseOnLoad:true"></script>
  320. <!--<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js'></script>-->
  321. <style type="text/css">
  322. /* Estilos para el DataGrid */
  323. @import "//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojox/grid/resources/claroGrid.css";
  324. @import "//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/resources/dojo.css";
  325. @import "//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dijit/themes/claro/claro.css";
  326. @import "//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dijit/themes/claro/document.css";
  327. @import "//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojox/grid/enhanced/resources/claro/EnhancedGrid.css";
  328. @import "//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojox/grid/enhanced/resources/EnhancedGrid_rtl.css";
  329. #Grid_MantoPreventivo, #Grid_Refacciones {
  330. height: 400px;
  331. }
  332. .btn-carrusel:focus{outline:none !important;}
  333. .card {
  334. position:relative;
  335. display:flex;
  336. flex-direction:column;
  337. min-width:0;
  338. word-wrap:break-word;
  339. background-color:#fff;
  340. background-clip:border-box;
  341. border:1px solid rgba(0,0,0,.125);
  342. border-radius:.25rem
  343. }
  344. .color-perso{
  345. background-color: #1e9e20 !important;
  346. }
  347. .color-dataGral{
  348. background-color: rgba(250,245,250,0.5);
  349. }
  350. .padre{
  351. width: 100%;
  352. display: flex;
  353. justify-content: center;
  354. }
  355. .carousel-perso{
  356. margin: 0 100px 0 100px !important;
  357. }
  358. .dijitIttecPdf {
  359. background-image: url("css/layout/site/lsPDF.gif");
  360. background-position: 1px;
  361. background-repeat: no-repeat;
  362. width: 14px;
  363. height: 14px;
  364. }
  365. </style>
  366. <script type="application/javascript">
  367. // Cargamos los complementos de dojo
  368. 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",
  369. "dojo/store/Memory", "dijit/form/FilteringSelect", "dijit/form/Button", "dojo/dom-class", "dijit/Dialog",
  370. "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",
  371. "dijit/ProgressBar", "dijit/ConfirmDialog", "dojo/dom-style", "dijit/form/ComboButton", "dijit/Menu", "dijit/MenuItem", "dijit/MenuSeparator", "dijit/Tooltip", "dijit/form/Form", "dijit/form/TextBox",
  372. "dojox/grid/enhanced/plugins/Filter", "dijit/form/ValidationTextBox", "dijit/form/NumberSpinner", "dojo/request", "dojo/parser"],
  373. function(dom, fx, array, query, domConstruct, dijit, style, ready, on, win,
  374. Memory, FilteringSelect, Button, domClass, Dialog,
  375. lang, DataGrid, ItemFileWriteStore, DnDConfig, EnhancedGrid, Selector, indirectSelection, nestedSorting,
  376. ProgressBar, ConfirmDialog, style, ComboButton, Menu, MenuItem, MenuSeparator, Tooltip, Form, TextBox, filter, ValidationTextBox, NumberSpinner, request) {
  377. const idModulo = "<?php echo($strModulo);?>";
  378. const CT_recibido = "<?php echo($CT_recibido); ?>";
  379. const maq_recibido = "<?php echo($maq_recibido); ?>";
  380. /*Datos ordenes de trabajo*/
  381. const datos = <?php echo $strDatos; ?>
  382. crearTabla = function (datos) {
  383. domConstruct.empty('TBREGISTROS');
  384. if (datos.length > 0) {
  385. for (const key in datos) {
  386. var trRegistro = domConstruct.create('tr', { class: '' }, 'TBREGISTROS');
  387. var tdVacioInicio = domConstruct.create('td', { class: 'celdaTabla', innerHTML: '' }, trRegistro);
  388. // Centro de Trabajo
  389. var CentroDeTrabajo = datos[key]['CentroDeTrabajo'];
  390. var tdCentroDeTrabajo = domConstruct.create('td', { class: 'celdaTabla', innerHTML: CentroDeTrabajo }, trRegistro);
  391. // Máquina
  392. var Maquina = datos[key]['Maquina'];
  393. var tdMaquina = domConstruct.create('td', { class: 'celdaTabla', innerHTML: Maquina }, trRegistro);
  394. // # De Orden
  395. var NumOrden = datos[key]['NumOrden'];
  396. var tdNumOrden = domConstruct.create('td', { class: 'celdaTabla', innerHTML: NumOrden }, trRegistro);
  397. // Fecha de laOrden
  398. var FechaOrden = datos[key]['FechaOrden'];
  399. var tdFechaOrden = domConstruct.create('td', { class: 'celdaTabla', innerHTML: FechaOrden }, trRegistro);
  400. // Acciones
  401. var tdAcciones = domConstruct.create('td', { class: 'celdaTabla', innerHTML: '' }, trRegistro);
  402. var btnPdf = domConstruct.create('button', { type: 'button' }, tdAcciones);
  403. new Button({
  404. label: 'Orden de Trabajo',
  405. iconClass: 'dijitIconTask',
  406. showLabel: false,
  407. onClick: function () {
  408. pdf(datos[key]['NumOrden']);
  409. }
  410. }, btnPdf).startup();
  411. var btnAbrir = domConstruct.create('button', { type: 'button' }, tdAcciones);
  412. new Button({
  413. label: 'Revisar Archivo',
  414. iconClass: 'dijitIconFolderOpen',
  415. showLabel: false,
  416. onClick: function () {
  417. abrir(datos[key]['NumOrden']);
  418. }
  419. }, btnAbrir).startup();
  420. var tdVacioFinal = domConstruct.create('td', { class: 'celdaTabla', innerHTML: '' }, trRegistro);
  421. }
  422. }else{
  423. var trRegistro = domConstruct.create('tr', { class: '', innerHTML: '<td width="100%" colspan="20" class="celdaTabla" style="text-align:center;font-weight:bold;padding:8px;">Usted no cuenta con los permisos necesarios.</td>' }, 'TBREGISTROS');
  424. }
  425. }
  426. /**************************/
  427. // Para Mostrar de Mensajes de "error o éxito"
  428. var dgEjecuta = new Dialog({title: 'Procesando...', style: 'width:300px'});
  429. var pbMarcar = new ProgressBar({value: Number.POSITIVE_INFINITY, layoutAlign: 'left'});
  430. dgEjecuta.setContent(pbMarcar);
  431. dgResultadoError = new ConfirmDialog({ title:"<b>Error</b>", style: "min-width:300px; heigth; auto" });
  432. style.set(dgResultadoError.cancelButton.domNode, 'display', 'none');
  433. dgResultadoExito = new ConfirmDialog({ title:"<b>Éxito</b>", style: "min-width:300px; heigth; auto" });
  434. style.set(dgResultadoExito.cancelButton.domNode, 'display', 'none');
  435. /****************************************************************** Botones ******************************************************************/
  436. /****************************************************************** Acciones ******************************************************************/
  437. descargar = function (ruta, opcion) {
  438. dgEjecuta.set("title", "Descargando...");
  439. dgEjecuta.show();
  440. accion = "descargarArchivo";
  441. request.post('descargarArchivos.php', {
  442. data: {
  443. accion: accion,
  444. idModulo: idModulo,
  445. ruta: ruta
  446. }
  447. }).then(
  448. function(response) {
  449. var objResponse = JSON.parse(response);
  450. if(objResponse['estatus'] == "ERROR"){
  451. dgEjecuta.hide();
  452. dgResultadoError.setContent(objResponse['errorDescripcion']);
  453. dgResultadoError.show();
  454. }else{
  455. var data = objResponse['data'];
  456. var type = objResponse['type'];
  457. var datosArchivoSalida = objResponse['type'] + objResponse['data'];
  458. var nombreArchivoSalida = objResponse['fileName'];
  459. if(navigator.msSaveBlob){ // Adaptación para IE
  460. var blob = new Blob([s2ab(atob(data))],{
  461. type: type
  462. });
  463. navigator.msSaveBlob(blob, nombreArchivoSalida);
  464. dgEjecuta.hide();
  465. }else{
  466. // Creamos los elementos para descargar
  467. var spanDescarga = domConstruct.toDom('<span>Para recuperar el archivo, haz click en el siguiente enlace: </span>');
  468. domConstruct.place(spanDescarga, 'contenidoDescarga');
  469. var tipo = accion;
  470. var idElemento = "elementoA_"+tipo;
  471. var linkDescarga = domConstruct.toDom('<a href="' + datosArchivoSalida + '" id="'+idElemento+'" download="' + nombreArchivoSalida + '">'+nombreArchivoSalida+'</a>');
  472. domConstruct.place(linkDescarga, 'contenidoDescarga');
  473. // Evento requerido para cuando no se ejecuta el evento click automáticamente (especialmente en dispositivos móviles)
  474. var clickEjecutado = false;
  475. on(linkDescarga, "click", function (evt) {
  476. clickEjecutado = true;
  477. spanDescarga.remove();
  478. linkDescarga.remove();
  479. divDescargas.hide();
  480. });
  481. linkDescarga.click();
  482. dgEjecuta.hide();
  483. if(clickEjecutado == false){
  484. var tituloDescarga = "<b>Descarga</b>";
  485. divDescargas.set("title", tituloDescarga);
  486. divDescargas.show();
  487. }
  488. }
  489. }
  490. }
  491. );
  492. };
  493. cargarGrid = function (idGrid, ct, maq){
  494. dgEjecuta.set("title", "Consultando...");
  495. dgEjecuta.show();
  496. var accion = "";
  497. var resdatosRecibidos = "datosRespuesta";
  498. var posicionDom = "";
  499. if(idGrid == "id_Grid_MantoPreventivo"){
  500. accion = "buscarMantoPreventivo";
  501. posicionDom = "Grid_MantoPreventivo";
  502. }else if(idGrid == "id_Grid_Refacciones"){
  503. accion = "buscarRefacciones";
  504. posicionDom = "Grid_Refacciones";
  505. }
  506. request.post("datosPlanta.php", {
  507. data: {
  508. accion: accion,
  509. idModulo: idModulo,
  510. ct: ct,
  511. maq: maq
  512. }
  513. }).then(
  514. function (response) {
  515. var objResponse = JSON.parse(response);
  516. if (objResponse['estatus'] == "ERROR") {
  517. dgEjecuta.hide();
  518. dgResultadoError.setContent(objResponse['errorDescripcion']);
  519. dgResultadoError.show();
  520. } else {
  521. let datosRecibidos = objResponse[resdatosRecibidos];
  522. // Configuramos el data store
  523. var data = {
  524. identifier: "id",
  525. items: []
  526. };
  527. // Creamos la lista de objetos
  528. var data_list = JSON.parse(datosRecibidos);
  529. for(var i = 0, l = data_list.length; i < data_list.length; i++){
  530. data.items.push(lang.mixin({ id: i+1 }, data_list[i%l]));
  531. }
  532. var store = new ItemFileWriteStore({data: data});
  533. // Destruimos el dataGrid si ya existe
  534. if (dijit.byId(idGrid)){
  535. dijit.byId(idGrid).destroy();
  536. }
  537. if(idGrid == "id_Grid_MantoPreventivo"){
  538. var estructuralayout = [[
  539. /*{'name': 'Line Number', 'field': 'id', 'width': '80px', 'datatype':'number'},*/
  540. {'name': 'Parte', 'field': 'parte', 'width': '250px', 'datatype':'string'},
  541. {'name': 'Actividad', 'field': 'actividad', 'width': '250px', 'datatype':'string'},
  542. {'name': 'Duración', 'field': 'duracion', 'width': '250px', 'datatype':'string'},
  543. {'name': 'Prioridad', 'field': 'prioridad', 'width': '250px', 'datatype':'string'},
  544. {'name': 'Tipo', 'field': 'tipo', 'width': '250px', 'datatype':'string'},
  545. {'name': 'Clasificación 1', 'field': 'clasificacion', 'width': '250px', 'datatype':'string'}
  546. ]];
  547. }else if(idGrid == "id_Grid_Refacciones"){
  548. var estructuralayout = [[
  549. {'name': 'Máquina', 'field': 'maquina', 'width': '250px', 'datatype':'string'},
  550. {'name': 'Refacción', 'field': 'refaccion', 'width': '250px', 'datatype':'string'},
  551. {'name': 'Desgaste', 'field': 'desgaste', 'width': '250px', 'datatype':'string'},
  552. {'name': 'Duración', 'field': 'duracion', 'width': '250px', 'datatype':'string'},
  553. {'name': 'Próximo Pedido', 'field': 'proximoPedido', 'width': '250px', 'datatype':'string'}
  554. ]];
  555. }
  556. var grid = new EnhancedGrid({
  557. id: idGrid,
  558. store: store,
  559. structure: estructuralayout,
  560. autoHeight: false,
  561. autoWidth: false,
  562. rowSelector: '20px',
  563. noDataMessage: 'No se encontraron datos',
  564. canSort: function () {
  565. return true;
  566. }, // Filtra
  567. plugins: {
  568. nestedSorting: true,
  569. /*filter: {
  570. // Show the closeFilterbarButton at the filter bar
  571. closeFilterbarButton: false,
  572. // Set the maximum rule count to 5
  573. ruleCount: 5,
  574. // Set the name of the items
  575. itemsName: "registros"
  576. }*/
  577. }
  578. });
  579. // Cargamos el dataGrid en el div
  580. grid.placeAt(posicionDom);
  581. // Inicializamos el dataGrid
  582. grid.startup();
  583. dgEjecuta.hide();
  584. }
  585. }
  586. );
  587. };
  588. ready(function() {
  589. // Actualizar el tamaño del TabContainer en función del tamaño de página
  590. var ventana = win.getBox();
  591. var strVentana = (ventana.h-170)+"px";
  592. style.set(dijit.byId("djTab").id, { height:strVentana });
  593. dijit.byId("djTab").resize();
  594. // Actualizar el tamaño del TabContainer en función del tamaño de página
  595. on(window, "resize", function() {
  596. var ventana = win.getBox();
  597. var strVentana = (ventana.h-170)+"px";
  598. style.set(dijit.byId("djTab").id, { height:strVentana });
  599. dijit.byId("djTab").resize();
  600. });
  601. // Eliminar la cortina de entrada
  602. fx.fadeOut({node: dom.byId("loadingOverlay"), duration: 1}).play();
  603. setTimeout(function () {
  604. domConstruct.destroy("loadingOverlay");
  605. }, 1);
  606. on(dijit.byId("ContentPane_MantoPreventivo"),"show", function(){
  607. cargarGrid("id_Grid_MantoPreventivo", CT_recibido, maq_recibido);
  608. });
  609. on(dijit.byId("ContentPane_Refacciones"),"show", function(){
  610. cargarGrid("id_Grid_Refacciones", CT_recibido, maq_recibido);
  611. });
  612. // Para cuando cierran el divisor que contiene las descargas
  613. divDescargas.on("Cancel", function (evt) {
  614. var contenido = document.getElementById("contenidoDescarga");
  615. while (contenido.firstChild) {
  616. contenido.removeChild(contenido.firstChild);
  617. }
  618. });
  619. crearTabla(datos);
  620. });
  621. });
  622. function abrir(numOrden){ document.getElementById("numOrden").value = numOrden; document.getElementById("frmAbrir").submit(); }
  623. function pdf(numOrden){ document.getElementById("pdf").value = numOrden; document.getElementById("frmPDF").submit(); }
  624. // Función para convertir string a un array buffer (Necesario para descargar en IE)
  625. function s2ab(s) {
  626. var buf = new ArrayBuffer(s.length);
  627. var view = new Uint8Array(buf);
  628. for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
  629. return buf;
  630. }
  631. </script>
  632. </head>
  633. <body class="claro">
  634. <div id="loadingOverlay" class="loadingOverlay pageOverlay">
  635. <div class="loadingMessage">Espere...</div>
  636. </div>
  637. <!-- Divisor para guardar las descargas -->
  638. <div data-dojo-type="dijit/Dialog" data-dojo-id="divDescargas" title="Descarga" style="top:0; position: absolute">
  639. <div id="contenidoDescarga" style="min-width:200px; min-height: 100px"></div>
  640. </div>
  641. <div id="wrapper_container_module">
  642. <div id="wrapper_table" style="position:relative;">
  643. <div data-dojo-type="dijit/form/Form" id="frm" data-dojo-id="frm" encType="multipart/form-data"
  644. action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" style="position:relative;">
  645. <script type="dojo/on" data-dojo-event="submit">return true;</script>
  646. <div id="wrapper_table_head"><?php echo($titulo); ?></div>
  647. <div id="wrapper_table_body_mod_app">
  648. <div class="row" style="margin-bottom: 10px">
  649. <div class="col-12 col-sm-4 col-md-4 col-lg-4">
  650. <div class="card card-inverse <?php echo($arrColores[$CT_recibido]['estadoGral']); ?>">
  651. <div class="box color-perso text-center"><h1 class="font-light text-white"><?php echo($texto1); ?></h1><h6
  652. class="text-white">Estado General</h6></div>
  653. </div>
  654. </div>
  655. <div class="col-12 col-sm-4 col-md-4 col-lg-4">
  656. <div class="card card-inverse <?php echo($arrColores[$CT_recibido]['ciclo']); ?>">
  657. <div class="box text-center"><h1 class="font-light text-white"><?php echo($texto2); ?></h1><h6
  658. class="text-white">Ciclo de Mantenimiento</h6></div>
  659. </div>
  660. </div>
  661. <div class="col-12 col-sm-4 col-md-4 col-lg-4">
  662. <div class="card card-inverse <?php echo($arrColores[$CT_recibido]['edoRefa']); ?>">
  663. <div class="box text-center"><h1 class="font-light text-white"><?php echo($texto3); ?></h1><h6
  664. class="text-white">Estado de Refacciones</h6></div>
  665. </div>
  666. </div>
  667. </div>
  668. <div id="djTab" data-dojo-type="dijit/layout/TabContainer" data-dojo-props="tabPosition:'top'" style="width:100%;">
  669. <div data-dojo-type="dijit/layout/ContentPane" title="Datos Generales" data-dojo-props="selected:true, iconClass:'dijitIconFile'">
  670. <div style="width: 40%; float:left">
  671. <div class="padre">
  672. <div class="" style="max-width: 66.66%; text-align: center" >
  673. <div class="card card-inverse color-dataGral" style="padding: 20px">
  674. <div class="box text-center" >
  675. <h6 class="text-black"><?php echo($infoGral);?></h6></div>
  676. </div>
  677. </div>
  678. </div>
  679. </div>
  680. <div style="width: 60%; float:right">
  681. <table class="table table-striped">
  682. <thead>
  683. <tr>
  684. <th scope="col" style="border-top: none"><b>#</b></th>
  685. <th scope="col" style="border-top: none"><b>Especificaciones Técnicas</b></th>
  686. <th scope="col" style="border-top: none"><b><?php echo($textoCol2); ?><b></th>
  687. </tr>
  688. </thead>
  689. <tbody>
  690. <?php echo($strTbodyEspecificaciones); ?>
  691. </tbody>
  692. </table>
  693. </div>
  694. </div>
  695. <div data-dojo-type="dijit/layout/ContentPane" title="Fotografías" data-dojo-props="iconClass:'dijitEditorIcon dijitEditorIconInsertImage'">
  696. <!--Colocar slider-->
  697. <?php if(!empty($div_carousel_indicators)){ ?>
  698. <div id="carouselExampleCaptions" class="carousel slide carousel-perso" data-bs-ride="carousel">
  699. <div class="carousel-indicators">
  700. <?php echo($div_carousel_indicators); ?>
  701. </div>
  702. <div class="carousel-inner">
  703. <?php echo($imagenes_carousel); ?>
  704. </div>
  705. <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
  706. <span class="carousel-control-prev-icon" aria-hidden="true"></span>
  707. <span class="visually-hidden">Previous</span>
  708. </button>
  709. <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
  710. <span class="carousel-control-next-icon" aria-hidden="true"></span>
  711. <span class="visually-hidden">Next</span>
  712. </button>
  713. </div>
  714. <?php } ?>
  715. </div>
  716. <div id="ContentPane_MantoPreventivo" data-dojo-type="dijit/layout/ContentPane" title="Ciclo de Mantenimiento Preventivo" data-dojo-props="iconClass:'dijitIconUndo'">
  717. <div style="margin-top: 15px">
  718. <div id="Grid_MantoPreventivo"></div>
  719. </div>
  720. </div>
  721. <div id="ContentPane_OrdenesManto" data-dojo-type="dijit/layout/ContentPane" title="Órdenes de Mantenimiento" data-dojo-props="iconClass:'dijitEditorIcon dijitEditorIconPaste'">
  722. <table width="100%" height="auto" cellpadding="0" cellspacing="0">
  723. <thead>
  724. <tr>
  725. <td width="3%" class="encabezadoTabla"> &nbsp; </td>
  726. <td width="20%" class="encabezadoTabla"> Centro de Trabajo </td>
  727. <td width="20%" class="encabezadoTabla"> Máquina </td>
  728. <td width="18%" class="encabezadoTabla"> # De Orden </td>
  729. <td width="18%" class="encabezadoTabla"> Fecha de la Orden </td>
  730. <td width="18%" class="encabezadoTabla">Acciones</td>
  731. <td width="3%" class="encabezadoTabla"> &nbsp; </td>
  732. </tr>
  733. </thead>
  734. <tbody id="TBREGISTROS">
  735. </tbody>
  736. </table>
  737. </div>
  738. <div id="ContentPane_Refacciones" data-dojo-type="dijit/layout/ContentPane" title="Refacciones" data-dojo-props="iconClass:'dijitIconSample'">
  739. <div style="margin-top: 15px">
  740. <div id="Grid_Refacciones"></div>
  741. </div>
  742. </div>
  743. <div data-dojo-type="dijit/layout/ContentPane" title="Documentos Electrónicos" data-dojo-props="iconClass:'dijitIconDocuments'">
  744. <table width="100%" height="auto" cellpadding="0" cellspacing="0">
  745. <thead>
  746. <tr>
  747. <td width="3%" class="encabezadoTabla"> &nbsp; </td>
  748. <td width="20%" class="encabezadoTabla"> # </td>
  749. <td width="50%" class="encabezadoTabla"> Nombre Archivo </td>
  750. <td width="24%" class="encabezadoTabla"> Acciones </td>
  751. <td width="3%" class="encabezadoTabla"> &nbsp; </td>
  752. </tr>
  753. </thead>
  754. <tbody id="TBPDFS">
  755. <?php echo($tbodyPdfs); ?>
  756. </tbody>
  757. </table>
  758. </div>
  759. </div>
  760. </div>
  761. </div>
  762. <form id="frmAbrir" action="bitacorasDeMantenimiento_FR.php" method="post">
  763. <input type="hidden" value="" id="numOrden" name="numOrden">
  764. <input type="hidden" value="<?php echo $link; ?>" id="from" name="from">
  765. </form>
  766. <form id="frmPDF" action="bitacorasDeMantenimiento_FR.php" method="post" target="_blank">
  767. <input type="hidden" value="" id="pdf" name="pdf">
  768. </form>
  769. </div>
  770. </div>
  771. <script type="application/javascript">
  772. </script>
  773. </body>