{"version":3,"sources":["webpack:///./src/components/exportExcel/exportExcel.vue","webpack:///src/components/exportExcel/exportExcel.vue","webpack:///./src/components/exportExcel/exportExcel.vue?20e3","webpack:///./src/components/exportExcel/exportExcel.vue?e0f0","webpack:///./src/components/exportExcel/exportExcel.vue?e457","webpack:///./src/components/cardTable/CardTable.vue","webpack:///src/components/cardTable/CardTable.vue","webpack:///./src/components/cardTable/CardTable.vue?d1a9","webpack:///./src/components/cardTable/CardTable.vue?87e8","webpack:///./src/views/Helexium/EntregasApp/PuntosEntregaYRemisiones.vue","webpack:///src/views/Helexium/EntregasApp/PuntosEntregaYRemisiones.vue","webpack:///./src/views/Helexium/EntregasApp/PuntosEntregaYRemisiones.vue?15b8","webpack:///./src/views/Helexium/EntregasApp/PuntosEntregaYRemisiones.vue?cc43","webpack:///./src/components/exportExcel/exportExcel.vue?f016","webpack:///./src/views/Helexium/EntregasApp/PuntosEntregaYRemisiones.vue?bb55","webpack:///./src/components/cardTable/CardTable.vue?a98d"],"names":["render","_vm","this","_c","_self","scopedSlots","_u","key","fn","_v","proxy","attrs","on","$event","active","staticClass","isAnySelected","generateReport","model","value","callback","$$v","expression","fileName","items","_l","headers","item","index","valoresSeleccionados","_s","header","staticRenderFns","name","props","type","Array","required","data","computed","length","methods","keys","map","v","$store","dispatch","path","e","$message","error","watch","newVal","component","staticStyle","card","_card$sizeValue","style","boxShadow","activeCard","color","showCursorGlow","hideCursorGlow","event","handleMouseMove","toggleActive","showGlow","left","cursorX","top","cursorY","glowStyle","opacity","_e","class","width","height","backgroundColor","computeBorderRadius","tipo","iconName","computeAnimateIcon","animated","animatedState","shouldAnimateTitle","title","fontSize","sizeValue","evaluateValue","default","onActivate","onDeactivate","animationFrameId","beat","beatFade","bounce","fade","flip","shake","spin","spinReverse","spinPulse","tipoIcon","circle","squared","shield","water","mounted","onResize","window","addEventListener","beforeDestroy","removeEventListener","forEach","_","checkTitleLength","$nextTick","titleElement","$el","querySelectorAll","scrollWidth","clientWidth","$set","rect","currentTarget","getBoundingClientRect","targetX","clientX","targetY","clientY","cancelAnimationFrame","animate","startX","startY","dx","dy","Math","abs","requestAnimationFrame","loading","directives","rawName","filtros","fechaInicio","domProps","target","composing","fechaFin","busqueda","aplicarBusqueda","limpiarBusqueda","buscarPuntosEntrega","mostrarFiltrosAvanzados","estadoPuntoEntrega","$$selectedVal","prototype","filter","call","options","o","selected","val","_value","multiple","aplicarFiltrosAvanzados","estadoRuta","centroCosto","cliente","dataCards","listaPuntosEntrega","exportarRemisiones","paginacion","registrosPorPagina","cambiarRegistrosPorPagina","totalFiltrados","listaPuntosEntregaFiltrados","id","formatDateTime","fechaHoraInicio","fechaHoraEntrega","fechaHoraFin","lugarEntrega","nombreRuta","descripcionRuta","numeroDocumentoEntrega","nombreCliente","direccionPuntoEntrega","codigoSN","nombrePersonaCliente","contactoPersonaCliente","placa","nombreCompleto","getBadgeClass","paginaActual","totalPaginas","disabled","preventDefault","cambiarPagina","paginasVisibles","pagina","components","CardTable","exportExcel","persona","dataTableInstance","getFormattedDate","Date","from","i","aplicarFiltros","personaStr","localStorage","getItem","JSON","parse","date","toISOString","split","formatDateForBackend","dateString","empresa","empresaId","url","res","success","Id","EmpresaId","NumeroDocumentoEntrega","descripcionPuntoEntrega","DescripcionPuntoEntrega","NombreCliente","DireccionPuntoEntrega","CodigoSN","NombrePersonaCliente","ContactoPersonaCliente","distanciaRecorrida","DistanciaRecorrida","tiempoRecorrido","TiempoRecorrido","FechaHoraInicio","FechaHoraEntrega","FechaHoraFin","tiempoDescarga","TiempoDescarga","EstadoPuntoEntrega","plantillaRutasId","PlantillaRutasId","puntosEntregaGeneralesId","PuntosEntregaGeneralesId","LugarEntrega","latUbicacionEntrega","LatUbicacionEntrega","longUbicacionEntrega","LongUbicacionEntrega","fechaHoraInicioRuta","FechaHoraInicioRuta","NombreRuta","DescripcionRuta","Placa","distanciaTotalRecorrida","DistanciaTotalRecorrida","tiempoTotalRecorrido","TiempoTotalRecorrido","EstadoRuta","actualizarPaginacion","toLowerCase","trim","datosFiltrados","cumpleBusqueda","Object","values","some","undefined","toString","includes","cumpleEstadoPunto","cumpleEstadoRuta","cumpleCentroCosto","cumpleCliente","inicio","fin","slice","ceil","dateTimeStr","toLocaleString","year","month","day","hour","minute","estado"],"mappings":"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","file":"js/chunk-5712ee11.1e16d7d59b4b0b33f295.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',[_c('vs-tooltip',{scopedSlots:_vm._u([{key:\"tooltip\",fn:function(){return [_vm._v(\" Generar reporte \")]},proxy:true}])},[_c('vs-button',{attrs:{\"border\":\"\"},on:{\"click\":function($event){_vm.active = !_vm.active}}},[_c('i',{staticClass:\"fa-regular fa-file-excel\"})])],1)],1),_c('vs-dialog',{attrs:{\"width\":\"400px\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('span',{staticClass:\"not-margin h3\"},[_vm._v(\"EXPORTAR DATOS\")])]},proxy:true},{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"footer-container\"},[_c('vs-button',{attrs:{\"disabled\":_vm.isAnySelected,\"primary\":\"\"},on:{\"click\":_vm.generateReport}},[_c('i',{staticClass:\"bx bx-download mr-2\"}),_vm._v(\" Generar reporte \")]),_c('vs-button',{attrs:{\"danger\":\"\",\"transparent\":\"\"},on:{\"click\":function($event){_vm.active = false}}},[_vm._v(\" Cancelar \")])],1)]},proxy:true}]),model:{value:(_vm.active),callback:function ($$v) {_vm.active=$$v},expression:\"active\"}},[_c('div',{staticClass:\"con-content\"},[_c('vs-input',{staticClass:\"mb-4\",attrs:{\"placeholder\":\"Nombre del archivo\",\"border\":\"\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('i',{staticClass:\"fa-regular fa-file\"})]},proxy:true}]),model:{value:(_vm.fileName),callback:function ($$v) {_vm.fileName=$$v},expression:\"fileName\"}}),_c('div',{staticClass:\"checklist-container\"},[_c('h5',{staticClass:\"mb-3 text-gray-600\"},[_vm._v(\"Selecciona los campos a exportar:\")]),(_vm.items)?_c('div',{staticClass:\"checklist\"},_vm._l((_vm.headers),function(item,index){return _c('vs-checkbox',{key:index,staticClass:\"checklist-item\",attrs:{\"val\":item},model:{value:(_vm.valoresSeleccionados),callback:function ($$v) {_vm.valoresSeleccionados=$$v},expression:\"valoresSeleccionados\"}},[_c('div',{staticClass:\"checklist-content\"},[_c('span',{staticClass:\"checklist-label\"},[_vm._v(_vm._s(item.header))])])])}),1):_c('div',{staticClass:\"d-flex justify-content-center\"},[_c('span',{staticClass:\"checklist-label h4\"},[_vm._v(\"¡Sin valores!\")])])])],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div>\r\n    <div>\r\n      <vs-tooltip>\r\n        <vs-button border @click=\"active = !active\">\r\n          <i class=\"fa-regular fa-file-excel\"></i>\r\n        </vs-button>\r\n        <template #tooltip>\r\n          Generar reporte\r\n        </template>\r\n      </vs-tooltip>\r\n    </div>\r\n    <vs-dialog width=\"400px\"  v-model=\"active\">\r\n      <template #header>\r\n        <span class=\"not-margin h3\">EXPORTAR DATOS</span>\r\n      </template>\r\n      <div class=\"con-content \">\r\n        <vs-input \r\n          v-model=\"fileName\" \r\n          placeholder=\"Nombre del archivo\"\r\n          class=\"mb-4\"\r\n          border\r\n        >\r\n          <template #icon>\r\n            <i class=\"fa-regular fa-file\"></i>\r\n          </template>\r\n        </vs-input>\r\n        <div class=\"checklist-container\">\r\n          <h5 class=\"mb-3 text-gray-600\">Selecciona los campos a exportar:</h5>\r\n          <div class=\"checklist\" v-if = \"items\">\r\n            <vs-checkbox \r\n              v-for=\"(item, index) in headers\"\r\n              :key=\"index\"\r\n              v-model=\"valoresSeleccionados\"\r\n              :val=\"item\" \r\n              class=\"checklist-item\"\r\n            >\r\n          <div class=\"checklist-content\">\r\n            <span class=\"checklist-label\">{{ item.header }}</span>\r\n          </div>\r\n    </vs-checkbox>\r\n          </div>\r\n          <div v-else class=\"d-flex justify-content-center\">\r\n            <span class=\"checklist-label h4\">¡Sin valores!</span>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <template #footer>\r\n        <div class=\"footer-container\">\r\n          <vs-button \r\n            @click=\"generateReport\" \r\n            :disabled=\"isAnySelected\"\r\n            primary\r\n          >\r\n            <i class='bx bx-download mr-2'></i>\r\n            Generar reporte\r\n          </vs-button>\r\n          <vs-button @click=\"active = false\" danger transparent>\r\n            Cancelar\r\n          </vs-button>\r\n        </div>\r\n      </template>\r\n    </vs-dialog>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"exportExcel\",\r\n  props: {\r\n    items: {\r\n      type: Array,\r\n      required: true,\r\n    },\r\n    headers: {\r\n    }\r\n    \r\n  },\r\n  data() {\r\n    return {\r\n      active: false,\r\n      valoresSeleccionados:[],\r\n      fileName: \"\",\r\n      };\r\n  },\r\n  computed: {\r\n    isAnySelected() {\r\n      return this.valoresSeleccionados.length === 0;\r\n    }\r\n  },\r\n  methods: {\r\n   async generateReport(){\r\n      let keys = this.valoresSeleccionados.map(v => v.key)\r\n      let headers = this.valoresSeleccionados.map(v => v.header)\r\n\r\n      console.log(\"Valores para el informe\", this.valoresSeleccionados)\r\n      console.log(\"Valores para el informe key\", keys)\r\n      console.log(\"Valores para el informe headers\", headers)\r\n\r\n      const data = {\r\n            \"propiedades\": keys, \r\n            \"headers\": headers,  \r\n            \"data\": this.items,\r\n            \"nombreArchivo\": this.fileName\r\n          };\r\n\r\n          try {\r\n            // Hacer la solicitud POST al endpoint\r\n            const response = await this.$store.dispatch(\"hl_post_excelReport\", {\r\n            path: \"ExcelReportes/generate-excelHL\",\r\n            data: data,\r\n            \r\n          });\r\n          console.log(response)\r\n   \r\n        }catch (e) {\r\n          console.error(\"Error al generar el informe\", e);\r\n          this.$message.error(\"Error al generar el informe\");\r\n        }\r\n    }\r\n  },\r\n  watch: {\r\n    active(newVal) {\r\n    if (!newVal) {\r\n      // this.items = {},\r\n      this.valoresSeleccionados = [],\r\n      this.fileName = \"\"\r\n      // this.headers = {}\r\n    }\r\n  },\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n\r\n.con-footer {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: flex-end;\r\n}\r\n\r\n.con-footer .vs-button {\r\n  margin: 0px;\r\n}\r\n\r\n.con-footer .vs-button .vs-button__content {\r\n  padding: 10px 30px;\r\n}\r\n/* .con-footer .vs-button__content{\r\n  background-color: rgb(191, 0, 34)\r\n} */\r\n.con-footer .vs-button ~ .vs-button {\r\n  margin-left: 10px;\r\n}\r\n\r\n.not-margin {\r\n  margin: 0px;\r\n  font-weight: normal;\r\n  padding: 10px;\r\n  padding-bottom: 0px;\r\n}\r\n\r\n.con-content {\r\n  width: 100%;\r\n}\r\n\r\n.con-content p {\r\n  font-size: 0.8rem;\r\n  padding: 0px 10px;\r\n}\r\n\r\n.con-content .vs-checkbox-label {\r\n  font-size: 0.8rem;\r\n}\r\n\r\n.con-content .vs-input-parent {\r\n  width: 100%;\r\n}\r\n\r\n.con-content .vs-input-content {\r\n  margin: 10px 0px;\r\n  width: calc(100%);\r\n}\r\n\r\n.con-content .vs-input-content .vs-input {\r\n  width: 100%;\r\n}\r\n\r\n.footer-dialog {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  flex-direction: column;\r\n  width: calc(100%);\r\n}\r\n\r\n.footer-dialog .new {\r\n  margin: 0px;\r\n  margin-top: 20px;\r\n  padding: 0px;\r\n  font-size: 0.7rem;\r\n}\r\n\r\n.footer-dialog .new a {\r\n  color: var(--primary-color) !important;\r\n  margin-left: 6px;\r\n}\r\n\r\n.footer-dialog .new a:hover {\r\n  text-decoration: underline;\r\n}\r\n\r\n.footer-dialog .vs-button {\r\n  margin: 0px;\r\n}\r\n\r\n</style>\r\n\r\n<style scoped>\r\n.checklist-container {\r\n  max-height: 300px;\r\n  overflow-y: auto;\r\n  padding-right: 8px;\r\n}\r\n\r\n.checklist {\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: 12px;\r\n}\r\n\r\n.checklist-item {\r\n  padding: 8px;\r\n  border-radius: 8px;\r\n  transition: background-color 0.2s;\r\n}\r\n\r\n.checklist-item:hover {\r\n  background-color: rgba(var(--vs-primary), 0.1);\r\n}\r\n\r\n.checklist-content {\r\n  display: flex;\r\n  flex-direction: column;\r\n  margin-left: 8px;\r\n}\r\n\r\n.checklist-label {\r\n  font-weight: 500;\r\n}\r\n\r\n.checklist-description {\r\n  font-size: 0.875rem;\r\n}\r\n\r\n.footer-container {\r\n  display: flex;\r\n  justify-content: flex-end;\r\n  gap: 12px;\r\n  padding: 16px;\r\n}\r\n\r\n.checklist-container::-webkit-scrollbar {\r\n  width: 6px;\r\n}\r\n\r\n.checklist-container::-webkit-scrollbar-track {\r\n  background: #f1f1f1;\r\n  border-radius: 3px;\r\n}\r\n\r\n.checklist-container::-webkit-scrollbar-thumb {\r\n  background: #888;\r\n  border-radius: 3px;\r\n}\r\n\r\n.checklist-container::-webkit-scrollbar-thumb:hover {\r\n  background: #555;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exportExcel.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exportExcel.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./exportExcel.vue?vue&type=template&id=77d2f6e9&scoped=true\"\nimport script from \"./exportExcel.vue?vue&type=script&lang=js\"\nexport * from \"./exportExcel.vue?vue&type=script&lang=js\"\nimport style0 from \"./exportExcel.vue?vue&type=style&index=0&id=77d2f6e9&prod&lang=css\"\nimport style1 from \"./exportExcel.vue?vue&type=style&index=1&id=77d2f6e9&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"77d2f6e9\",\n  null\n  \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exportExcel.vue?vue&type=style&index=1&id=77d2f6e9&prod&scoped=true&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row justify-content-center\",staticStyle:{\"gap\":\"1rem\"}},_vm._l((_vm.data),function(card,index){return _c('div',{key:index,staticClass:\"col-12 col-sm-5 col-md d-flex justify-content-between align-items-center rounded p-2 glow-box bg-dark\",style:({\n      boxShadow:\n        _vm.activeCard === index ? `inset 0 0 0 2px ${card.color}` : 'none',\n    }),on:{\"mouseenter\":function($event){return _vm.showCursorGlow(index)},\"mouseleave\":function($event){return _vm.hideCursorGlow(index)},\"mousemove\":(event) => _vm.handleMouseMove(event, index),\"click\":function($event){return _vm.toggleActive(index)}}},[(_vm.showGlow)?_c('div',{staticClass:\"cursor-glow\",style:({\n        left: _vm.cursorX[index] + 'px',\n        top: _vm.cursorY[index] + 'px',\n        ..._vm.glowStyle(card.color),\n        opacity: _vm.showGlow[index] ? '1' : '0',\n      })}):_vm._e(),_c('div',{class:`d-flex align-items-center justify-content-center`,style:({\n        width: '60px',\n        height: '60px',\n        backgroundColor: card.color,\n        'border-radius': _vm.computeBorderRadius(card.tipo),\n        '-webkit-box-shadow': `0px -1px 33px -8px ${card.color}`,\n        '-moz-box-shadow': `0px -1px 33px -8px ${card.color}`,\n        'box-shadow': `0px -1px 33px -8px ${card.color}`,\n      })},[_c('i',{class:`fas fa-${card.iconName} ${_vm.computeAnimateIcon(\n          card.animated,\n          index\n        )}`,staticStyle:{\"font-size\":\"1.5rem\"}})]),_c('div',{staticClass:\"d-flex flex-column align-items-center\",staticStyle:{\"flex-grow\":\"1\",\"max-width\":\"calc(100% - 60px)\"}},[_c('div',{class:`title-container`},[_c('span',{staticClass:\"font-weight-bold\",class:[\n            _vm.showGlow[index] &&\n            _vm.animatedState[index] &&\n            _vm.shouldAnimateTitle[index]\n              ? 'title-animate'\n              : 'title-static',\n          ]},[_vm._v(\" \"+_vm._s(card.title)+\" \")])]),_c('span',{staticClass:\"font-weight-bold\",style:({\n          fontSize: `${card.sizeValue ?? 40}px`,\n        })},[_vm._v(_vm._s(_vm.evaluateValue(card.value)))])])])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!-- card table info -->\r\n<template>\r\n  <div class=\"row justify-content-center\" style=\"gap: 1rem\">\r\n    <div\r\n      v-for=\"(card, index) in data\"\r\n      :key=\"index\"\r\n      class=\"col-12 col-sm-5 col-md d-flex justify-content-between align-items-center rounded p-2 glow-box bg-dark\"\r\n      :style=\"{\r\n        boxShadow:\r\n          activeCard === index ? `inset 0 0 0 2px ${card.color}` : 'none',\r\n      }\"\r\n      @mouseenter=\"showCursorGlow(index)\"\r\n      @mouseleave=\"hideCursorGlow(index)\"\r\n      @mousemove=\"(event) => handleMouseMove(event, index)\"\r\n      @click=\"toggleActive(index)\"\r\n    >\r\n      <!-- linar-style cursor glow -->\r\n      <div\r\n        v-if=\"showGlow\"\r\n        class=\"cursor-glow\"\r\n        :style=\"{\r\n          left: cursorX[index] + 'px',\r\n          top: cursorY[index] + 'px',\r\n          ...glowStyle(card.color),\r\n          opacity: showGlow[index] ? '1' : '0',\r\n        }\"\r\n      ></div>\r\n      <div\r\n        :class=\"`d-flex align-items-center justify-content-center`\"\r\n        :style=\"{\r\n          width: '60px',\r\n          height: '60px',\r\n          backgroundColor: card.color,\r\n          'border-radius': computeBorderRadius(card.tipo),\r\n          '-webkit-box-shadow': `0px -1px 33px -8px ${card.color}`,\r\n          '-moz-box-shadow': `0px -1px 33px -8px ${card.color}`,\r\n          'box-shadow': `0px -1px 33px -8px ${card.color}`,\r\n        }\"\r\n      >\r\n        <i\r\n          :class=\"`fas fa-${card.iconName} ${computeAnimateIcon(\r\n            card.animated,\r\n            index\r\n          )}`\"\r\n          style=\"font-size: 1.5rem\"\r\n        ></i>\r\n      </div>\r\n      <div\r\n        class=\"d-flex flex-column align-items-center\"\r\n        style=\"flex-grow: 1; max-width: calc(100% - 60px)\"\r\n      >\r\n        <div :class=\"`title-container`\">\r\n          <span\r\n            :class=\"[\r\n              showGlow[index] &&\r\n              animatedState[index] &&\r\n              shouldAnimateTitle[index]\r\n                ? 'title-animate'\r\n                : 'title-static',\r\n            ]\"\r\n            class=\"font-weight-bold\"\r\n          >\r\n            {{ card.title }}\r\n          </span>\r\n        </div>\r\n        <span\r\n          class=\"font-weight-bold\"\r\n          :style=\"{\r\n            fontSize: `${card.sizeValue ?? 40}px`,\r\n          }\"\r\n          >{{ evaluateValue(card.value) }}</span\r\n        >\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  // Documentación del componente CardTable.js\r\n\r\n  /**\r\n   * Este componente Vue.js se utiliza para renderizar un conjunto de tarjetas de información.\r\n   * Cada tarjeta es interactiva y muestra diferentes tipos de datos y un ícono.\r\n   *\r\n   * Propiedades:\r\n   * - data: Un array de objetos que contiene la información para renderizar cada tarjeta.\r\n   *\r\n   * Estado interno:\r\n   * - showGlow: Un objeto que controla si el efecto de brillo debe mostrarse en cada tarjeta.\r\n   * - cursorX: Un objeto que contiene la coordenada X del cursor para cada tarjeta.\r\n   * - cursorY: Un objeto que contiene la coordenada Y del cursor para cada tarjeta.\r\n   * - animationFrameId: Un objeto que guarda el ID de la solicitud de animación para cada tarjeta.\r\n   * - animatedState: Un objeto que guarda el estado de animación para cada tarjeta.\r\n   * - activeCard: Un número que indica el índice de la tarjeta activa. Null si no hay ninguna tarjeta activa.\r\n   * - shouldAnimateTitle: Un objeto que determina si el título de la tarjeta debe animarse para cada tarjeta.\r\n   *\r\n   * Métodos:\r\n   * - toggleActive: Cambia el estado activo de una tarjeta.\r\n   * - computeBorderRadius: Calcula el radio del borde según el tipo de tarjeta.\r\n   * - computeAnimateIcon: Devuelve la clase de animación apropiada para el ícono.\r\n   * - evaluateValue: Evalúa el valor que debe mostrarse en la tarjeta.\r\n   * - glowStyle: Devuelve el estilo CSS para el efecto de brillo del cursor.\r\n   * - handleMouseMove: Maneja el movimiento del mouse para el efecto de brillo del cursor.\r\n   * - showCursorGlow: Activa el efecto de brillo del cursor.\r\n   * - hideCursorGlow: Desactiva el efecto de brillo del cursor.\r\n   * - onResize: Maneja el evento de cambio de tamaño de la ventana.\r\n   * - checkTitleLength: Verifica la longitud del título para determinar si necesita animación.\r\n   */\r\n\r\n  props: {\r\n    /*\r\n       // Ejemplo de un objeto dentro del array 'data':\r\n          {\r\n          title: \"Finalizadas\",\r\n          value: () => this.listaItems.filter((cap) => cap.estadoCap && cap.disponible).length,\r\n          iconName: \"calendar-check\",\r\n          color: \"rgba(22, 162, 117, 1)\",\r\n          tipo: \"squared\",\r\n          animated: \"shake\",\r\n          onActivate: () => { console.log(\"Tarjeta activada\"); },\r\n          onDeactivate: () => { console.log(\"Tarjeta desactivada\"); }\r\n        },\r\n        */\r\n    data: {\r\n      type: Array,\r\n      default: () => [\r\n        {\r\n          title: \"Título\",\r\n          value: 0,\r\n          sizeValue: 40,\r\n          iconName: \"crown\",\r\n          color: \"rgba(223, 18, 46, 1)\",\r\n          tipo: \"circle\",\r\n          animated: \"shake\",\r\n          onActivate: null,\r\n          onDeactivate: null,\r\n        },\r\n      ],\r\n    },\r\n  },\r\n  data() {\r\n    return {\r\n      showGlow: {},\r\n      cursorX: {},\r\n      cursorY: {},\r\n      animationFrameId: {},\r\n      animatedState: {},\r\n      activeCard: null,\r\n      shouldAnimateTitle: {},\r\n      animated: {\r\n        beat: \"fa-beat\",\r\n        beatFade: \"fa-beat-fade\",\r\n        bounce: \"fa-bounce\",\r\n        fade: \"fa-fade\",\r\n        flip: \"fa-flip\",\r\n        shake: \"fa-shake\",\r\n        spin: \"fa-spin\",\r\n        spinReverse: \"fa-spin fa-spin-reverse\",\r\n        spinPulse: \"fa-spin-pulse\",\r\n      },\r\n      tipoIcon: {\r\n        circle: \"50%\",\r\n        squared: \"20%\",\r\n        shield: \"49% 51% 48% 52% / 29% 29% 71% 71%\",\r\n        water: \"60% 40% 78% 22% / 73% 66% 34% 27%\",\r\n      },\r\n    };\r\n  },\r\n  /*\r\nEventos de Ciclo de Vida:\r\n- mounted: Se añade un escuchador para el evento de redimensionamiento de la ventana.\r\n- beforeDestroy: Se elimina el escuchador para el evento de redimensionamiento de la ventana.\r\n*/\r\n  mounted() {\r\n    this.onResize();\r\n    window.addEventListener(\"resize\", this.onResize);\r\n  },\r\n  beforeDestroy() {\r\n    window.removeEventListener(\"resize\", this.onResize);\r\n  },\r\n  methods: {\r\n    onResize() {\r\n      this.data.forEach((_, index) => {\r\n        this.checkTitleLength(index);\r\n      });\r\n    },\r\n    checkTitleLength(index) {\r\n      this.$nextTick(() => {\r\n        const titleElement = this.$el.querySelectorAll(\".title-container span\")[\r\n          index\r\n        ];\r\n        if (titleElement) {\r\n          // console.log(\"Client Width: \", titleElement.clientWidth);\r\n          // console.log(\"Scroll Width: \", titleElement.scrollWidth);\r\n\r\n          if (titleElement.scrollWidth > titleElement.clientWidth) {\r\n            this.$set(this.shouldAnimateTitle, index, true);\r\n          } else {\r\n            this.$set(this.shouldAnimateTitle, index, false);\r\n          }\r\n        }\r\n      });\r\n    },\r\n    toggleActive(index) {\r\n      // Desactivar tarjeta anterior si es diferente de la actual\r\n      if (this.activeCard !== null && this.activeCard !== index) {\r\n        if (typeof this.data[this.activeCard].onDeactivate === \"function\") {\r\n          this.data[this.activeCard].onDeactivate();\r\n        }\r\n      }\r\n\r\n      // Cambiar la tarjeta activa\r\n      this.activeCard = this.activeCard === index ? null : index;\r\n\r\n      // Ejecutar la función de activación o desactivación correspondiente\r\n      if (this.activeCard !== null) {\r\n        if (typeof this.data[this.activeCard].onActivate === \"function\") {\r\n          this.data[this.activeCard].onActivate();\r\n        }\r\n      } else {\r\n        if (typeof this.data[index].onDeactivate === \"function\") {\r\n          this.data[index].onDeactivate();\r\n        }\r\n      }\r\n    },\r\n    computeBorderRadius(tipo) {\r\n      return this.tipoIcon[tipo] || \"20% 40% 20% 40%\";\r\n    },\r\n    computeAnimateIcon(tipo, index) {\r\n      if (this.animatedState[index]) {\r\n        return this.animated[tipo] || \"\";\r\n      }\r\n    },\r\n    evaluateValue(value) {\r\n      if (typeof value === \"function\") {\r\n        return value();\r\n      }\r\n      return value;\r\n    },\r\n    glowStyle(color) {\r\n      return {\r\n        boxShadow: `0 0 40px 20px ${color}`,\r\n      };\r\n    },\r\n    handleMouseMove(event, index) {\r\n      const rect = event.currentTarget.getBoundingClientRect();\r\n      const targetX = event.clientX - rect.left;\r\n      const targetY = event.clientY - rect.top;\r\n\r\n      // Cancelar la animación anterior si está en curso\r\n      if (this.animationFrameId[index]) {\r\n        cancelAnimationFrame(this.animationFrameId[index]);\r\n      }\r\n\r\n      // Iniciar una nueva animación\r\n      const animate = () => {\r\n        const startX = this.cursorX[index] || 0;\r\n        const startY = this.cursorY[index] || 0;\r\n        const dx = (targetX - startX) * 0.1; // Factor de suavizado\r\n        const dy = (targetY - startY) * 0.1; // Factor de suavizado\r\n\r\n        this.$set(this.cursorX, index, startX + dx);\r\n        this.$set(this.cursorY, index, startY + dy);\r\n\r\n        if (Math.abs(dx) > 0.1 || Math.abs(dy) > 0.1) {\r\n          // Continuar la animación\r\n          this.animationFrameId[index] = requestAnimationFrame(animate);\r\n        }\r\n      };\r\n\r\n      // Iniciar la animación\r\n      this.animationFrameId[index] = requestAnimationFrame(animate);\r\n    },\r\n    showCursorGlow(index) {\r\n      this.$set(this.animatedState, index, true);\r\n      this.$set(this.showGlow, index, true);\r\n    },\r\n    hideCursorGlow(index) {\r\n      this.$set(this.animatedState, index, false);\r\n      this.$set(this.showGlow, index, false);\r\n    },\r\n  },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n/*\r\nEstilos:\r\n- glow-box: Configuración base para el efecto de resplandor.\r\n- cursor-glow: Estilo para el resplandor del cursor.\r\n- title-container: Contenedor para el título de la tarjeta.\r\n- title-animate: Animación para el título de la tarjeta.\r\n- title-static: Estilo estático para el título de la tarjeta.\r\n*/\r\n\r\n.glow-box {\r\n  position: relative;\r\n  overflow: hidden;\r\n  transition: box-shadow 0.3s ease;\r\n  cursor: default;\r\n}\r\n\r\n.cursor-glow {\r\n  position: absolute;\r\n  width: 0;\r\n  height: 0;\r\n  border-radius: 50%;\r\n  pointer-events: none;\r\n  transition: left 0.2s, top 0.2s, opacity 0.5s ease;\r\n}\r\n\r\n.title-container {\r\n  max-width: calc(100% - 20px);\r\n  overflow: hidden;\r\n  height: 20px;\r\n}\r\n\r\n.title-animate {\r\n  display: inline-block;\r\n  white-space: nowrap;\r\n  animation: marquee 5s linear infinite;\r\n  transition: transform 0.3s ease;\r\n}\r\n\r\n.title-static {\r\n  display: inline-block;\r\n  max-width: 100%; /* Se ajusta al tamaño del contenedor */\r\n  white-space: nowrap;\r\n  overflow: hidden;\r\n  text-overflow: ellipsis;\r\n}\r\n\r\n@keyframes marquee {\r\n  from {\r\n    transform: translateX(0%);\r\n  }\r\n  to {\r\n    transform: translateX(-100%);\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CardTable.vue?vue&type=template&id=73483910&scoped=true\"\nimport script from \"./CardTable.vue?vue&type=script&lang=js\"\nexport * from \"./CardTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./CardTable.vue?vue&type=style&index=0&id=73483910&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"73483910\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('HXContentCard',{attrs:{\"title\":\"Listado de Puntos de Entrega y Rutas\"}},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.loading)?_c('div',{staticClass:\"text-center\"},[_c('div',{},[_c('div',{staticClass:\"emoji-container\"},[_c('span',{staticClass:\"emoji\",attrs:{\"role\":\"img\",\"aria-label\":\"Truck\"}},[_vm._v(\"🚚\")]),_c('span',{staticClass:\"emoji\",attrs:{\"role\":\"img\",\"aria-label\":\"Hourglass\"}},[_vm._v(\"⏳\")]),_c('span',{staticClass:\"emoji\",attrs:{\"role\":\"img\",\"aria-label\":\"Map\"}},[_vm._v(\"🗺️\")])]),_c('span',{staticClass:\"h2 font-weight-bold\"},[_vm._v(\"Cargando datos...\")]),_c('p',{staticClass:\"loading-message\"},[_vm._v(\"Espere un momento mientras preparamos la información.\")])])]):_vm._e()]),(!_vm.loading)?_c('div',[_c('div',{staticClass:\"px-4 mt-3 mb-4\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"fechaInicio\"}},[_vm._v(\"Fecha de inicio:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filtros.fechaInicio),expression:\"filtros.fechaInicio\"}],staticClass:\"form-control\",attrs:{\"type\":\"date\",\"id\":\"fechaInicio\"},domProps:{\"value\":(_vm.filtros.fechaInicio)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.filtros, \"fechaInicio\", $event.target.value)}}})])]),_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"fechaFin\"}},[_vm._v(\"Fecha de fin (opcional):\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filtros.fechaFin),expression:\"filtros.fechaFin\"}],staticClass:\"form-control\",attrs:{\"type\":\"date\",\"id\":\"fechaFin\"},domProps:{\"value\":(_vm.filtros.fechaFin)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.filtros, \"fechaFin\", $event.target.value)}}})])]),_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"busqueda\"}},[_vm._v(\"Búsqueda:\")]),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filtros.busqueda),expression:\"filtros.busqueda\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"busqueda\",\"placeholder\":\"Buscar en todos los campos...\"},domProps:{\"value\":(_vm.filtros.busqueda)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.filtros, \"busqueda\", $event.target.value)},_vm.aplicarBusqueda]}}),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.limpiarBusqueda}},[_c('i',{staticClass:\"fas fa-times\"})])])])])]),_c('div',{staticClass:\"col-md-3 d-flex align-items-end\"},[_c('button',{staticClass:\"btn btn-primary w-100\",on:{\"click\":_vm.buscarPuntosEntrega}},[_c('i',{staticClass:\"fas fa-search mr-2\"}),_vm._v(\" Buscar \")])])]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-12\"},[_c('button',{staticClass:\"btn btn-sm btn-outline-secondary\",on:{\"click\":function($event){_vm.mostrarFiltrosAvanzados = !_vm.mostrarFiltrosAvanzados}}},[_c('i',{staticClass:\"fas\",class:_vm.mostrarFiltrosAvanzados ? 'fa-chevron-up' : 'fa-chevron-down'}),_vm._v(\" \"+_vm._s(_vm.mostrarFiltrosAvanzados ? 'Ocultar filtros avanzados' : 'Mostrar filtros avanzados')+\" \")])])]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.mostrarFiltrosAvanzados)?_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"filtroEstadoPunto\"}},[_vm._v(\"Estado Punto Entrega:\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filtros.estadoPuntoEntrega),expression:\"filtros.estadoPuntoEntrega\"}],staticClass:\"form-control\",attrs:{\"id\":\"filtroEstadoPunto\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.filtros, \"estadoPuntoEntrega\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},_vm.aplicarFiltrosAvanzados]}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"Todos\")]),_c('option',{attrs:{\"value\":\"No ha iniciado\"}},[_vm._v(\"No ha iniciado\")]),_c('option',{attrs:{\"value\":\"En proceso\"}},[_vm._v(\"En proceso\")]),_c('option',{attrs:{\"value\":\"Completado\"}},[_vm._v(\"Completado\")]),_c('option',{attrs:{\"value\":\"Cancelado\"}},[_vm._v(\"Cancelado\")])])])]),_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"filtroEstadoRuta\"}},[_vm._v(\"Estado Ruta:\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filtros.estadoRuta),expression:\"filtros.estadoRuta\"}],staticClass:\"form-control\",attrs:{\"id\":\"filtroEstadoRuta\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.filtros, \"estadoRuta\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},_vm.aplicarFiltrosAvanzados]}},[_c('option',{attrs:{\"value\":\"\"}},[_vm._v(\"Todos\")]),_c('option',{attrs:{\"value\":\"Pendiente\"}},[_vm._v(\"Pendiente\")]),_c('option',{attrs:{\"value\":\"Iniciada\"}},[_vm._v(\"Iniciada\")]),_c('option',{attrs:{\"value\":\"Finalizada\"}},[_vm._v(\"Finalizada\")])])])]),_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"filtroCentroCosto\"}},[_vm._v(\"Centro de Costo:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filtros.centroCosto),expression:\"filtros.centroCosto\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"filtroCentroCosto\"},domProps:{\"value\":(_vm.filtros.centroCosto)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.filtros, \"centroCosto\", $event.target.value)},_vm.aplicarFiltrosAvanzados]}})])]),_c('div',{staticClass:\"col-md-3\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"filtroCliente\"}},[_vm._v(\"Cliente:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filtros.cliente),expression:\"filtros.cliente\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"filtroCliente\"},domProps:{\"value\":(_vm.filtros.cliente)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.filtros, \"cliente\", $event.target.value)},_vm.aplicarFiltrosAvanzados]}})])])]):_vm._e()])],1),_c('div',{staticClass:\"px-4 mt-3\"},[_c('CardTable',{attrs:{\"data\":_vm.dataCards}})],1),(_vm.listaPuntosEntrega.length > 0)?_c('exportExcel',{attrs:{\"headers\":_vm.exportarRemisiones,\"items\":_vm.listaPuntosEntrega}}):_vm._e(),_c('div',{staticClass:\"px-4 mt-3\"},[_c('div',{staticClass:\"table-responsive\"},[_c('div',{staticClass:\"mb-3 d-flex justify-content-between align-items-center\"},[_c('div',[_c('span',{staticClass:\"mr-2\"},[_vm._v(\"Mostrar\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paginacion.registrosPorPagina),expression:\"paginacion.registrosPorPagina\"}],staticClass:\"form-control form-control-sm d-inline-block\",staticStyle:{\"width\":\"auto\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.paginacion, \"registrosPorPagina\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},_vm.cambiarRegistrosPorPagina]}},[_c('option',{attrs:{\"value\":\"10\"}},[_vm._v(\"10\")]),_c('option',{attrs:{\"value\":\"25\"}},[_vm._v(\"25\")]),_c('option',{attrs:{\"value\":\"50\"}},[_vm._v(\"50\")]),_c('option',{attrs:{\"value\":\"100\"}},[_vm._v(\"100\")])]),_c('span',{staticClass:\"ml-2\"},[_vm._v(\"registros\")])]),_c('div',[_c('span',[_vm._v(\"Mostrando \"+_vm._s(_vm.paginacion.totalFiltrados)+\" de \"+_vm._s(_vm.listaPuntosEntrega.length)+\" registros\")])])]),_c('table',{staticClass:\"table table-bordered table-responsive-md table-striped text-center\",attrs:{\"id\":\"datatable_puntosEntrega\"}},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Fecha/Hora Inicio\")]),_c('th',[_vm._v(\"Fecha/Hora Entrega\")]),_c('th',[_vm._v(\"Fecha/Hora Fin\")]),_c('th',[_vm._v(\"Centro de Costo\")]),_c('th',[_vm._v(\"Nombre Ruta\")]),_c('th',[_vm._v(\"Descripción Ruta\")]),_c('th',[_vm._v(\"Número de Remisión\")]),_c('th',[_vm._v(\"Nombre del Cliente\")]),_c('th',[_vm._v(\"Dirección del Punto de Entrega\")]),_c('th',[_vm._v(\"Nit\")]),_c('th',[_vm._v(\"Persona Que recibió\")]),_c('th',[_vm._v(\"Contacto Persona Que recibió\")]),_c('th',[_vm._v(\"Placa\")]),_c('th',[_vm._v(\"Conductor asignado\")]),_c('th',[_vm._v(\"Estado Punto Entrega\")]),_c('th',[_vm._v(\"Estado Ruta\")])])]),_c('tbody',[_vm._l((_vm.listaPuntosEntregaFiltrados),function(item){return _c('tr',{key:item.id,staticClass:\"animated-row\"},[_c('td',[_vm._v(_vm._s(_vm.formatDateTime(item.fechaHoraInicio)))]),_c('td',[_vm._v(_vm._s(_vm.formatDateTime(item.fechaHoraEntrega)))]),_c('td',[_vm._v(_vm._s(_vm.formatDateTime(item.fechaHoraFin)))]),_c('td',[_vm._v(_vm._s(item.lugarEntrega ? item.lugarEntrega : \"No encontrado\"))]),_c('td',[_vm._v(_vm._s(item.nombreRuta ? item.nombreRuta : \"No encontrado\"))]),_c('td',[_vm._v(_vm._s(item.descripcionRuta ? item.descripcionRuta : \"No encontrado\"))]),_c('td',[_vm._v(_vm._s(item.numeroDocumentoEntrega ? item.numeroDocumentoEntrega : \"No encontrado\")+\" \")]),_c('td',[_vm._v(_vm._s(item.nombreCliente ? item.nombreCliente : \"No encontrado\"))]),_c('td',[_vm._v(_vm._s(item.direccionPuntoEntrega ? item.direccionPuntoEntrega : \"No encontrado\"))]),_c('td',[_vm._v(_vm._s(item.codigoSN ? item.codigoSN : \"No encontrado\"))]),_c('td',[_vm._v(_vm._s(item.nombrePersonaCliente ? item.nombrePersonaCliente : \"No encontrado\"))]),_c('td',[_vm._v(_vm._s(item.contactoPersonaCliente ? item.contactoPersonaCliente : \"No encontrado\")+\" \")]),_c('td',[_vm._v(_vm._s(item.placa ? item.placa : \"No encontrado\"))]),_c('td',[_vm._v(_vm._s(item.nombreCompleto ? item.nombreCompleto : \"No encontrado\"))]),_c('td',[_c('span',{staticClass:\"badge\",class:_vm.getBadgeClass(item.estadoPuntoEntrega)},[_vm._v(\" \"+_vm._s(item.estadoPuntoEntrega)+\" \")])]),_c('td',[_c('span',{staticClass:\"badge\",class:_vm.getBadgeClass(item.estadoRuta)},[_vm._v(\" \"+_vm._s(item.estadoRuta)+\" \")])])])}),(_vm.listaPuntosEntregaFiltrados.length === 0)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"15\"}},[_vm._v(\"No se encontraron registros que coincidan con los criterios de búsqueda\")])]):_vm._e()],2)]),_c('div',{staticClass:\"d-flex justify-content-between align-items-center mt-3\"},[_c('div',[_c('span',[_vm._v(\"Página \"+_vm._s(_vm.paginacion.paginaActual)+\" de \"+_vm._s(_vm.paginacion.totalPaginas))])]),_c('div',[_c('nav',{attrs:{\"aria-label\":\"Navegación de páginas\"}},[_c('ul',{staticClass:\"pagination justify-content-end mb-0\"},[_c('li',{staticClass:\"page-item\",class:{ disabled: _vm.paginacion.paginaActual === 1 }},[_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.cambiarPagina(1)}}},[_c('i',{staticClass:\"fas fa-angle-double-left\"})])]),_c('li',{staticClass:\"page-item\",class:{ disabled: _vm.paginacion.paginaActual === 1 }},[_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.cambiarPagina(_vm.paginacion.paginaActual - 1)}}},[_c('i',{staticClass:\"fas fa-angle-left\"})])]),_vm._l((_vm.paginasVisibles),function(pagina){return _c('li',{key:pagina,staticClass:\"page-item\",class:{ active: pagina === _vm.paginacion.paginaActual }},[_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.cambiarPagina(pagina)}}},[_vm._v(_vm._s(pagina))])])}),_c('li',{staticClass:\"page-item\",class:{ disabled: _vm.paginacion.paginaActual === _vm.paginacion.totalPaginas || _vm.paginacion.totalPaginas === 0 }},[_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.cambiarPagina(_vm.paginacion.paginaActual + 1)}}},[_c('i',{staticClass:\"fas fa-angle-right\"})])]),_c('li',{staticClass:\"page-item\",class:{ disabled: _vm.paginacion.paginaActual === _vm.paginacion.totalPaginas || _vm.paginacion.totalPaginas === 0 }},[_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.cambiarPagina(_vm.paginacion.totalPaginas)}}},[_c('i',{staticClass:\"fas fa-angle-double-right\"})])])],2)])])])])])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n    <HXContentCard title=\"Listado de Puntos de Entrega y Rutas\">\r\n        <!-- Pantalla de carga -->\r\n        <transition name=\"fade\">\r\n            <div v-if=\"loading\" class=\"text-center\">\r\n                <div class=\"\">\r\n                    <div class=\"emoji-container\">\r\n                        <span class=\"emoji\" role=\"img\" aria-label=\"Truck\">🚚</span>\r\n                        <span class=\"emoji\" role=\"img\" aria-label=\"Hourglass\">⏳</span>\r\n                        <span class=\"emoji\" role=\"img\" aria-label=\"Map\">🗺️</span>\r\n                    </div>\r\n                    <span class=\"h2 font-weight-bold\">Cargando datos...</span>\r\n                    <p class=\"loading-message\">Espere un momento mientras preparamos la información.</p>\r\n                </div>\r\n            </div>\r\n        </transition>\r\n\r\n        <!-- Contenido principal -->\r\n        <div v-if=\"!loading\">\r\n            <!-- Filtros de fecha -->\r\n            <div class=\"px-4 mt-3 mb-4\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-md-3\">\r\n                        <div class=\"form-group\">\r\n                            <label for=\"fechaInicio\">Fecha de inicio:</label>\r\n                            <input type=\"date\" id=\"fechaInicio\" class=\"form-control\" v-model=\"filtros.fechaInicio\">\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-md-3\">\r\n                        <div class=\"form-group\">\r\n                            <label for=\"fechaFin\">Fecha de fin (opcional):</label>\r\n                            <input type=\"date\" id=\"fechaFin\" class=\"form-control\" v-model=\"filtros.fechaFin\">\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-md-3\">\r\n                        <div class=\"form-group\">\r\n                            <label for=\"busqueda\">Búsqueda:</label>\r\n                            <div class=\"input-group\">\r\n                                <input type=\"text\" id=\"busqueda\" class=\"form-control\"\r\n                                    placeholder=\"Buscar en todos los campos...\" v-model=\"filtros.busqueda\"\r\n                                    @input=\"aplicarBusqueda\">\r\n                                <div class=\"input-group-append\">\r\n                                    <button class=\"btn btn-outline-secondary\" type=\"button\" @click=\"limpiarBusqueda\">\r\n                                        <i class=\"fas fa-times\"></i>\r\n                                    </button>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-md-3 d-flex align-items-end\">\r\n                        <button class=\"btn btn-primary w-100\" @click=\"buscarPuntosEntrega\">\r\n                            <i class=\"fas fa-search mr-2\"></i> Buscar\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n\r\n                <!-- Filtros avanzados -->\r\n                <div class=\"row mt-2\">\r\n                    <div class=\"col-12\">\r\n                        <button class=\"btn btn-sm btn-outline-secondary\"\r\n                            @click=\"mostrarFiltrosAvanzados = !mostrarFiltrosAvanzados\">\r\n                            <i class=\"fas\" :class=\"mostrarFiltrosAvanzados ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\r\n                            {{ mostrarFiltrosAvanzados ? 'Ocultar filtros avanzados' : 'Mostrar filtros avanzados' }}\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n\r\n                <transition name=\"fade\">\r\n                    <div class=\"row mt-3\" v-if=\"mostrarFiltrosAvanzados\">\r\n                        <div class=\"col-md-3\">\r\n                            <div class=\"form-group\">\r\n                                <label for=\"filtroEstadoPunto\">Estado Punto Entrega:</label>\r\n                                <select id=\"filtroEstadoPunto\" class=\"form-control\" v-model=\"filtros.estadoPuntoEntrega\"\r\n                                    @change=\"aplicarFiltrosAvanzados\">\r\n                                    <option value=\"\">Todos</option>\r\n                                    <option value=\"No ha iniciado\">No ha iniciado</option>\r\n                                    <option value=\"En proceso\">En proceso</option>\r\n                                    <option value=\"Completado\">Completado</option>\r\n                                    <option value=\"Cancelado\">Cancelado</option>\r\n                                </select>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"col-md-3\">\r\n                            <div class=\"form-group\">\r\n                                <label for=\"filtroEstadoRuta\">Estado Ruta:</label>\r\n                                <select id=\"filtroEstadoRuta\" class=\"form-control\" v-model=\"filtros.estadoRuta\"\r\n                                    @change=\"aplicarFiltrosAvanzados\">\r\n                                    <option value=\"\">Todos</option>\r\n                                    <option value=\"Pendiente\">Pendiente</option>\r\n                                    <option value=\"Iniciada\">Iniciada</option>\r\n                                    <option value=\"Finalizada\">Finalizada</option>\r\n                                </select>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"col-md-3\">\r\n                            <div class=\"form-group\">\r\n                                <label for=\"filtroCentroCosto\">Centro de Costo:</label>\r\n                                <input type=\"text\" id=\"filtroCentroCosto\" class=\"form-control\"\r\n                                    v-model=\"filtros.centroCosto\" @input=\"aplicarFiltrosAvanzados\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"col-md-3\">\r\n                            <div class=\"form-group\">\r\n                                <label for=\"filtroCliente\">Cliente:</label>\r\n                                <input type=\"text\" id=\"filtroCliente\" class=\"form-control\" v-model=\"filtros.cliente\"\r\n                                    @input=\"aplicarFiltrosAvanzados\">\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </transition>\r\n            </div>\r\n\r\n            <!-- Tarjetas de Resumen -->\r\n            <div class=\"px-4 mt-3\">\r\n                <CardTable :data=\"dataCards\" />\r\n            </div>\r\n            <exportExcel v-if=\"listaPuntosEntrega.length > 0\" :headers=\"exportarRemisiones\"\r\n                :items=\"listaPuntosEntrega\" />\r\n\r\n            <!-- Tabla de Puntos de Entrega -->\r\n            <div class=\"px-4 mt-3\">\r\n                <div class=\"table-responsive\">\r\n                    <div class=\"mb-3 d-flex justify-content-between align-items-center\">\r\n                        <div>\r\n                            <span class=\"mr-2\">Mostrar</span>\r\n                            <select v-model=\"paginacion.registrosPorPagina\"\r\n                                class=\"form-control form-control-sm d-inline-block\" style=\"width: auto\"\r\n                                @change=\"cambiarRegistrosPorPagina\">\r\n                                <option value=\"10\">10</option>\r\n                                <option value=\"25\">25</option>\r\n                                <option value=\"50\">50</option>\r\n                                <option value=\"100\">100</option>\r\n                            </select>\r\n                            <span class=\"ml-2\">registros</span>\r\n                        </div>\r\n                        <div>\r\n                            <span>Mostrando {{ paginacion.totalFiltrados }} de {{ listaPuntosEntrega.length }}\r\n                                registros</span>\r\n                        </div>\r\n                    </div>\r\n                    <table id=\"datatable_puntosEntrega\"\r\n                        class=\"table table-bordered table-responsive-md table-striped text-center\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th>Fecha/Hora Inicio</th>\r\n                                <th>Fecha/Hora Entrega</th>\r\n                                <th>Fecha/Hora Fin</th>\r\n                                <th>Centro de Costo</th>\r\n                                <th>Nombre Ruta</th>\r\n                                <th>Descripción Ruta</th>\r\n                                <th>Número de Remisión</th>\r\n                                <th>Nombre del Cliente</th>\r\n                                <th>Dirección del Punto de Entrega</th>\r\n                                <th>Nit</th>\r\n                                <th>Persona Que recibió</th>\r\n                                <th>Contacto Persona Que recibió</th>\r\n                                <th>Placa</th>\r\n                                <th>Conductor asignado</th>\r\n                                <th>Estado Punto Entrega</th>\r\n                                <th>Estado Ruta</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody>\r\n                            <tr v-for=\"item in listaPuntosEntregaFiltrados\" :key=\"item.id\" class=\"animated-row\">\r\n                                <td>{{ formatDateTime(item.fechaHoraInicio) }}</td>\r\n                                <td>{{ formatDateTime(item.fechaHoraEntrega) }}</td>\r\n                                <td>{{ formatDateTime(item.fechaHoraFin) }}</td>\r\n                                <td>{{ item.lugarEntrega ? item.lugarEntrega : \"No encontrado\" }}</td>\r\n                                <td>{{ item.nombreRuta ? item.nombreRuta : \"No encontrado\" }}</td>\r\n                                <td>{{ item.descripcionRuta ? item.descripcionRuta : \"No encontrado\" }}</td>\r\n                                <td>{{ item.numeroDocumentoEntrega ? item.numeroDocumentoEntrega : \"No encontrado\" }}\r\n                                </td>\r\n                                <td>{{ item.nombreCliente ? item.nombreCliente : \"No encontrado\" }}</td>\r\n                                <td>{{ item.direccionPuntoEntrega ? item.direccionPuntoEntrega : \"No encontrado\" }}</td>\r\n                                <td>{{ item.codigoSN ? item.codigoSN : \"No encontrado\" }}</td>\r\n                                <td>{{ item.nombrePersonaCliente ? item.nombrePersonaCliente : \"No encontrado\" }}</td>\r\n                                <td>{{ item.contactoPersonaCliente ? item.contactoPersonaCliente : \"No encontrado\" }}\r\n                                </td>\r\n                                <td>{{ item.placa ? item.placa : \"No encontrado\" }}</td>\r\n                                <td>{{ item.nombreCompleto ? item.nombreCompleto : \"No encontrado\" }}</td>\r\n                                <td>\r\n                                    <span class=\"badge\" :class=\"getBadgeClass(item.estadoPuntoEntrega)\">\r\n                                        {{ item.estadoPuntoEntrega }}\r\n                                    </span>\r\n                                </td>\r\n                                <td>\r\n                                    <span class=\"badge\" :class=\"getBadgeClass(item.estadoRuta)\">\r\n                                        {{ item.estadoRuta }}\r\n                                    </span>\r\n                                </td>\r\n                            </tr>\r\n                            <tr v-if=\"listaPuntosEntregaFiltrados.length === 0\">\r\n                                <td colspan=\"15\" class=\"text-center\">No se encontraron registros que coincidan con los\r\n                                    criterios de búsqueda</td>\r\n                            </tr>\r\n                        </tbody>\r\n                    </table>\r\n\r\n                    <!-- Paginación -->\r\n                    <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n                        <div>\r\n                            <span>Página {{ paginacion.paginaActual }} de {{ paginacion.totalPaginas }}</span>\r\n                        </div>\r\n                        <div>\r\n                            <nav aria-label=\"Navegación de páginas\">\r\n                                <ul class=\"pagination justify-content-end mb-0\">\r\n                                    <li class=\"page-item\" :class=\"{ disabled: paginacion.paginaActual === 1 }\">\r\n                                        <a class=\"page-link\" href=\"#\" @click.prevent=\"cambiarPagina(1)\">\r\n                                            <i class=\"fas fa-angle-double-left\"></i>\r\n                                        </a>\r\n                                    </li>\r\n                                    <li class=\"page-item\" :class=\"{ disabled: paginacion.paginaActual === 1 }\">\r\n                                        <a class=\"page-link\" href=\"#\"\r\n                                            @click.prevent=\"cambiarPagina(paginacion.paginaActual - 1)\">\r\n                                            <i class=\"fas fa-angle-left\"></i>\r\n                                        </a>\r\n                                    </li>\r\n                                    <li v-for=\"pagina in paginasVisibles\" :key=\"pagina\" class=\"page-item\"\r\n                                        :class=\"{ active: pagina === paginacion.paginaActual }\">\r\n                                        <a class=\"page-link\" href=\"#\" @click.prevent=\"cambiarPagina(pagina)\">{{ pagina\r\n                                        }}</a>\r\n                                    </li>\r\n                                    <li class=\"page-item\"\r\n                                        :class=\"{ disabled: paginacion.paginaActual === paginacion.totalPaginas || paginacion.totalPaginas === 0 }\">\r\n                                        <a class=\"page-link\" href=\"#\"\r\n                                            @click.prevent=\"cambiarPagina(paginacion.paginaActual + 1)\">\r\n                                            <i class=\"fas fa-angle-right\"></i>\r\n                                        </a>\r\n                                    </li>\r\n                                    <li class=\"page-item\"\r\n                                        :class=\"{ disabled: paginacion.paginaActual === paginacion.totalPaginas || paginacion.totalPaginas === 0 }\">\r\n                                        <a class=\"page-link\" href=\"#\"\r\n                                            @click.prevent=\"cambiarPagina(paginacion.totalPaginas)\">\r\n                                            <i class=\"fas fa-angle-double-right\"></i>\r\n                                        </a>\r\n                                    </li>\r\n                                </ul>\r\n                            </nav>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </HXContentCard>\r\n</template>\r\n\r\n<script>\r\nimport CardTable from \"../../../components/cardTable/CardTable.vue\";\r\nimport exportExcel from \"../../../components/exportExcel/exportExcel.vue\";\r\n\r\nexport default {\r\n    name: \"DashboardPuntosEntrega\",\r\n    components: {\r\n        CardTable,\r\n        exportExcel\r\n    },\r\n    data() {\r\n        return {\r\n            persona: null,\r\n            listaPuntosEntrega: [],\r\n            listaPuntosEntregaFiltrados: [],\r\n            loading: false,\r\n            error: null,\r\n            dataTableInstance: null,\r\n            mostrarFiltrosAvanzados: false,\r\n            filtros: {\r\n                fechaInicio: this.getFormattedDate(new Date()),\r\n                fechaFin: null,\r\n                busqueda: \"\",\r\n                estadoPuntoEntrega: \"\",\r\n                estadoRuta: \"\",\r\n                centroCosto: \"\",\r\n                cliente: \"\"\r\n            },\r\n            paginacion: {\r\n                paginaActual: 1,\r\n                registrosPorPagina: 10,\r\n                totalPaginas: 0,\r\n                totalFiltrados: 0\r\n            },\r\n            dataCards: [\r\n                {\r\n                    title: \"Total de Puntos de Entrega\",\r\n                    value: () => this.listaPuntosEntrega.length,\r\n                    iconName: \"fas fa-map-marker-alt\",\r\n                    color: \"rgba(254, 114, 28, 1)\",\r\n                    tipo: \"squared\",\r\n                    animated: \"bounce\",\r\n                },\r\n                {\r\n                    title: \"Rutas Iniciadas\",\r\n                    value: () => this.listaPuntosEntrega.filter(item => item.estadoRuta === \"Iniciada\").length,\r\n                    iconName: \"fas fa-play-circle\",\r\n                    color: \"rgba(22, 162, 117, 1)\",\r\n                    tipo: \"squared\",\r\n                    animated: \"bounce\",\r\n                },\r\n                {\r\n                    title: \"Puntos No Iniciados\",\r\n                    value: () => this.listaPuntosEntrega.filter(item => item.estadoPuntoEntrega === \"No ha iniciado\").length,\r\n                    iconName: \"fas fa-hourglass-start\",\r\n                    color: \"rgba(71, 136, 255, 1)\",\r\n                    tipo: \"squared\",\r\n                    animated: \"bounce\",\r\n                },\r\n                {\r\n                    title: \"Puntos Completados\",\r\n                    value: () => this.listaPuntosEntrega.filter(item => item.estadoPuntoEntrega === \"Completado\").length,\r\n                    iconName: \"fas fa-check-circle\",\r\n                    color: \"rgba(255, 193, 7, 1)\",\r\n                    tipo: \"squared\",\r\n                    animated: \"bounce\",\r\n                },\r\n            ],\r\n\r\n            exportarRemisiones: [\r\n                { key: \"numeroDocumentoEntrega\", header: \"Número Documento Entrega\" },\r\n                { key: \"descripcionPuntoEntrega\", header: \"Descripción Punto Entrega\" },\r\n                { key: \"nombreCliente\", header: \"Nombre Cliente\" },\r\n                { key: \"direccionPuntoEntrega\", header: \"Dirección Punto Entrega\" },\r\n                { key: \"codigoSN\", header: \"Código SN\" },\r\n                { key: \"nombrePersonaCliente\", header: \"Nombre Persona Cliente\" },\r\n                { key: \"contactoPersonaCliente\", header: \"Contacto Persona Cliente\" },\r\n                { key: \"distanciaRecorrida\", header: \"Distancia Recorrida\" },\r\n                { key: \"tiempoRecorrido\", header: \"Tiempo Recorrido\" },\r\n                { key: \"fechaHoraInicio\", header: \"Fecha Hora Inicio\" },\r\n                { key: \"fechaHoraEntrega\", header: \"Fecha Hora Entrega\" },\r\n                { key: \"fechaHoraFin\", header: \"Fecha Hora Fin\" },\r\n                { key: \"tiempoDescarga\", header: \"Tiempo Descarga\" },\r\n                { key: \"estadoPuntoEntrega\", header: \"Estado Punto Entrega\" },\r\n                { key: \"plantillaRutasId\", header: \"Plantilla Rutas ID\" },\r\n                { key: \"puntosEntregaGeneralesId\", header: \"Puntos Entrega Generales ID\" },\r\n                { key: \"lugarEntrega\", header: \"Lugar Entrega\" },\r\n                { key: \"latUbicacionEntrega\", header: \"Lat Ubicacion Entrega\" },\r\n                { key: \"longUbicacionEntrega\", header: \"Long Ubicacion Entrega\" },\r\n                { key: \"fechaHoraInicioRuta\", header: \"Fecha Hora Inicio Ruta\" },\r\n                { key: \"nombreRuta\", header: \"Nombre Ruta\" },\r\n                { key: \"descripcionRuta\", header: \"Descripción Ruta\" },\r\n                { key: \"placa\", header: \"Placa\" },\r\n                { key: \"nombreCompleto\", header: \"Nombre Completo\" },\r\n                { key: \"distanciaTotalRecorrida\", header: \"Distancia Total Recorrida\" },\r\n                { key: \"tiempoTotalRecorrido\", header: \"Tiempo Total Recorrido\" },\r\n                { key: \"estadoRuta\", header: \"Estado Ruta\" }\r\n            ],\r\n        };\r\n    },\r\n    computed: {\r\n        paginasVisibles() {\r\n            const totalPaginas = this.paginacion.totalPaginas;\r\n            const paginaActual = this.paginacion.paginaActual;\r\n\r\n            if (totalPaginas <= 5) {\r\n                return Array.from({ length: totalPaginas }, (_, i) => i + 1);\r\n            }\r\n\r\n            if (paginaActual <= 3) {\r\n                return [1, 2, 3, 4, 5];\r\n            }\r\n\r\n            if (paginaActual >= totalPaginas - 2) {\r\n                return [\r\n                    totalPaginas - 4,\r\n                    totalPaginas - 3,\r\n                    totalPaginas - 2,\r\n                    totalPaginas - 1,\r\n                    totalPaginas\r\n                ];\r\n            }\r\n\r\n            return [\r\n                paginaActual - 2,\r\n                paginaActual - 1,\r\n                paginaActual,\r\n                paginaActual + 1,\r\n                paginaActual + 2\r\n            ];\r\n        }\r\n    },\r\n    watch: {\r\n        'filtros.busqueda': function () {\r\n            this.paginacion.paginaActual = 1;\r\n            this.aplicarFiltros();\r\n        }\r\n    },\r\n    async mounted() {\r\n        try {\r\n            const personaStr = localStorage.getItem(\"setPersonaAct\");\r\n            if (personaStr) {\r\n                this.persona = JSON.parse(personaStr);\r\n                await this.buscarPuntosEntrega();\r\n            } else {\r\n                console.log(\"No se encontró información de la persona en localStorage\");\r\n            }\r\n        } catch (error) {\r\n            console.error(\"Error al obtener la información de la persona:\", error);\r\n            console.log(\"Error al obtener la información de la persona\");\r\n        }\r\n    },\r\n    methods: {\r\n        getFormattedDate(date) {\r\n            return date.toISOString().split('T')[0];\r\n        },\r\n\r\n        formatDateForBackend(dateString) {\r\n            if (!dateString) return null;\r\n            const date = new Date(dateString);\r\n            return date.toISOString();\r\n        },\r\n\r\n        async buscarPuntosEntrega() {\r\n            if (!this.persona || !this.persona.empresa || !this.persona.empresa.id) {\r\n                console.error(\"No se pudo obtener la información de la empresa\");\r\n                this.error = \"Información de empresa no disponible\";\r\n                return;\r\n            }\r\n\r\n            this.loading = true;\r\n            this.error = null;\r\n\r\n            try {\r\n                const fechaInicio = this.formatDateForBackend(this.filtros.fechaInicio);\r\n                const fechaFin = this.formatDateForBackend(this.filtros.fechaFin);\r\n                const empresaId = this.persona.empresa.id;\r\n\r\n                console.log(\"Empresa ID:\", empresaId);\r\n                console.log(\"Fecha inicio:\", fechaInicio);\r\n                console.log(\"Fecha fin:\", fechaFin);\r\n\r\n                let url = `EntregasApp/GetPuntosEntregaYRemisiones?EmpresaId=${empresaId}&fechaInicio=${fechaInicio}`;\r\n                if (fechaFin) {\r\n                    url += `&fechaFin=${fechaFin}`;\r\n                }\r\n\r\n                console.log(\"URL completa:\", url);\r\n\r\n                let res = await this.$store.dispatch(\"hl_get\", { path: url });\r\n                console.log(\"Respuesta completa:\", res);\r\n\r\n                if (res.success) {\r\n                    console.log(\"Datos recibidos:\", res.data);\r\n\r\n                    this.listaPuntosEntrega = res.data.map(item => ({\r\n                        id: item.Id || item.id,\r\n                        empresaId: item.EmpresaId || item.empresaId,\r\n\r\n                        numeroDocumentoEntrega: item.NumeroDocumentoEntrega || item.numeroDocumentoEntrega,\r\n                        descripcionPuntoEntrega: item.DescripcionPuntoEntrega || item.descripcionPuntoEntrega,\r\n                        nombreCliente: item.NombreCliente || item.nombreCliente,\r\n                        direccionPuntoEntrega: item.DireccionPuntoEntrega || item.direccionPuntoEntrega,\r\n                        codigoSN: item.CodigoSN || item.codigoSN,\r\n                        nombrePersonaCliente: item.NombrePersonaCliente || item.nombrePersonaCliente,\r\n                        contactoPersonaCliente: item.ContactoPersonaCliente || item.contactoPersonaCliente,\r\n\r\n                        distanciaRecorrida: item.DistanciaRecorrida || item.distanciaRecorrida,\r\n                        tiempoRecorrido: item.TiempoRecorrido || item.tiempoRecorrido,\r\n                        fechaHoraInicio: item.FechaHoraInicio || item.fechaHoraInicio,\r\n                        fechaHoraEntrega: item.FechaHoraEntrega || item.fechaHoraEntrega,\r\n                        fechaHoraFin: item.FechaHoraFin || item.fechaHoraFin,\r\n                        tiempoDescarga: item.TiempoDescarga || item.tiempoDescarga,\r\n                        estadoPuntoEntrega: item.EstadoPuntoEntrega || item.estadoPuntoEntrega,\r\n                        plantillaRutasId: item.PlantillaRutasId || item.plantillaRutasId,\r\n                        puntosEntregaGeneralesId: item.PuntosEntregaGeneralesId || item.puntosEntregaGeneralesId,\r\n                        lugarEntrega: item.LugarEntrega || item.lugarEntrega,\r\n                        latUbicacionEntrega: item.LatUbicacionEntrega || item.latUbicacionEntrega,\r\n                        longUbicacionEntrega: item.LongUbicacionEntrega || item.longUbicacionEntrega,\r\n                        fechaHoraInicioRuta: item.FechaHoraInicioRuta || item.fechaHoraInicioRuta,\r\n                        nombreRuta: item.NombreRuta || item.nombreRuta,\r\n                        descripcionRuta: item.DescripcionRuta || item.descripcionRuta,\r\n                        placa: item.Placa || item.placa,\r\n                        nombreCompleto: item.nombreCompleto || item.nombreCompleto,\r\n                        distanciaTotalRecorrida: item.DistanciaTotalRecorrida || item.distanciaTotalRecorrida,\r\n                        tiempoTotalRecorrido: item.TiempoTotalRecorrido || item.tiempoTotalRecorrido,\r\n                        estadoRuta: item.EstadoRuta || item.estadoRuta,\r\n                    }));\r\n\r\n                    this.aplicarFiltros();\r\n                } else {\r\n                    console.warn(\"No se encontraron Puntos de Entrega\");\r\n                    this.listaPuntosEntrega = [];\r\n                    this.listaPuntosEntregaFiltrados = [];\r\n                    this.error = \"No se encontraron datos para los criterios especificados\";\r\n                    this.actualizarPaginacion();\r\n                }\r\n            } catch (error) {\r\n                console.error(\"Error al obtener los datos:\", error);\r\n                this.error = \"Ocurrió un error al obtener los datos. Por favor, intente nuevamente.\";\r\n                this.listaPuntosEntrega = [];\r\n                this.listaPuntosEntregaFiltrados = [];\r\n                this.actualizarPaginacion();\r\n            } finally {\r\n                this.loading = false;\r\n            }\r\n        },\r\n\r\n        aplicarBusqueda() {\r\n            this.aplicarFiltros();\r\n        },\r\n\r\n        limpiarBusqueda() {\r\n            this.filtros.busqueda = \"\";\r\n            this.aplicarFiltros();\r\n        },\r\n\r\n        aplicarFiltrosAvanzados() {\r\n            this.paginacion.paginaActual = 1;\r\n            this.aplicarFiltros();\r\n        },\r\n\r\n        aplicarFiltros() {\r\n            const busqueda = this.filtros.busqueda.toLowerCase().trim();\r\n            const estadoPuntoEntrega = this.filtros.estadoPuntoEntrega;\r\n            const estadoRuta = this.filtros.estadoRuta;\r\n            const centroCosto = this.filtros.centroCosto.toLowerCase().trim();\r\n            const cliente = this.filtros.cliente.toLowerCase().trim();\r\n\r\n            // Aplicar todos los filtros\r\n            const datosFiltrados = this.listaPuntosEntrega.filter(item => {\r\n                // Filtro de búsqueda general\r\n                const cumpleBusqueda = busqueda === \"\" ||\r\n                    Object.values(item).some(val =>\r\n                        val !== null &&\r\n                        val !== undefined &&\r\n                        val.toString().toLowerCase().includes(busqueda)\r\n                    );\r\n\r\n                // Filtros avanzados\r\n                const cumpleEstadoPunto = estadoPuntoEntrega === \"\" ||\r\n                    item.estadoPuntoEntrega === estadoPuntoEntrega;\r\n\r\n                const cumpleEstadoRuta = estadoRuta === \"\" ||\r\n                    item.estadoRuta === estadoRuta;\r\n\r\n                const cumpleCentroCosto = centroCosto === \"\" ||\r\n                    (item.lugarEntrega && item.lugarEntrega.toLowerCase().includes(centroCosto));\r\n\r\n                const cumpleCliente = cliente === \"\" ||\r\n                    (item.nombreCliente && item.nombreCliente.toLowerCase().includes(cliente));\r\n\r\n                return cumpleBusqueda && cumpleEstadoPunto && cumpleEstadoRuta &&\r\n                    cumpleCentroCosto && cumpleCliente;\r\n            });\r\n\r\n            // Actualizar datos filtrados y paginación\r\n            this.paginacion.totalFiltrados = datosFiltrados.length;\r\n            this.actualizarPaginacion();\r\n\r\n            // Aplicar paginación\r\n            const inicio = (this.paginacion.paginaActual - 1) * this.paginacion.registrosPorPagina;\r\n            const fin = inicio + this.paginacion.registrosPorPagina;\r\n            this.listaPuntosEntregaFiltrados = datosFiltrados.slice(inicio, fin);\r\n        },\r\n\r\n        actualizarPaginacion() {\r\n            this.paginacion.totalPaginas = Math.ceil(this.paginacion.totalFiltrados / this.paginacion.registrosPorPagina) || 1;\r\n\r\n            // Asegurarse de que la página actual no sea mayor que el total de páginas\r\n            if (this.paginacion.paginaActual > this.paginacion.totalPaginas) {\r\n                this.paginacion.paginaActual = this.paginacion.totalPaginas;\r\n            }\r\n        },\r\n\r\n        cambiarPagina(pagina) {\r\n            if (pagina < 1 || pagina > this.paginacion.totalPaginas) {\r\n                return;\r\n            }\r\n\r\n            this.paginacion.paginaActual = pagina;\r\n            this.aplicarFiltros();\r\n        },\r\n\r\n        cambiarRegistrosPorPagina() {\r\n            this.paginacion.paginaActual = 1;\r\n            this.aplicarFiltros();\r\n        },\r\n\r\n        formatDateTime(dateTimeStr) {\r\n            if (!dateTimeStr) return 'Fecha no encontrada';\r\n\r\n            const date = new Date(dateTimeStr);\r\n            return date.toLocaleString('es-CO', {\r\n                year: 'numeric',\r\n                month: '2-digit',\r\n                day: '2-digit',\r\n                hour: '2-digit',\r\n                minute: '2-digit'\r\n            });\r\n        },\r\n\r\n        getBadgeClass(estado) {\r\n            switch (estado.toLowerCase()) {\r\n                case 'no ha iniciado':\r\n                case 'pendiente':\r\n                    return 'badge-warning';\r\n                case 'en proceso':\r\n                case 'iniciada':\r\n                    return 'badge-info';\r\n                case 'completado':\r\n                case 'finalizada':\r\n                    return 'badge-success';\r\n                case 'cancelado':\r\n                    return 'badge-danger';\r\n                default:\r\n                    return 'badge-secondary';\r\n            }\r\n        },\r\n    }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.error-message {\r\n    color: red;\r\n    margin-top: 10px;\r\n}\r\n\r\n.modal-content {\r\n    background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);\r\n    border-radius: 15px;\r\n    padding: 30px;\r\n    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);\r\n}\r\n\r\n.modal-header {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    margin-bottom: 20px;\r\n}\r\n\r\n.modal-title {\r\n    font-size: 1.8rem;\r\n    margin-left: 15px;\r\n    color: #2c3e50;\r\n}\r\n\r\n.route-details {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 25px;\r\n}\r\n\r\n.detail-section {\r\n    background-color: rgba(255, 255, 255, 0.5);\r\n    border-radius: 12px;\r\n    padding: 15px;\r\n    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);\r\n}\r\n\r\n.section-title {\r\n    color: #2c3e50;\r\n    border-bottom: 2px solid #3498db;\r\n    padding-bottom: 8px;\r\n    margin-bottom: 15px;\r\n}\r\n\r\n.detail-item {\r\n    background-color: rgba(255, 255, 255, 0.7);\r\n    padding: 15px;\r\n    border-radius: 10px;\r\n    margin-bottom: 15px;\r\n    transition: all 0.3s ease;\r\n}\r\n\r\n.detail-item:hover {\r\n    transform: translateY(-3px);\r\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.detail-item p {\r\n    margin-bottom: 5px;\r\n}\r\n\r\n.animated {\r\n    animation-duration: 0.5s;\r\n    animation-fill-mode: both;\r\n}\r\n\r\n@keyframes fadeIn {\r\n    from {\r\n        opacity: 0;\r\n    }\r\n\r\n    to {\r\n        opacity: 1;\r\n    }\r\n}\r\n\r\n.fadeIn {\r\n    animation-name: fadeIn;\r\n}\r\n\r\n.emoji-container {\r\n    font-size: 2.5rem;\r\n    margin-bottom: 20px;\r\n}\r\n\r\n.animated-row {\r\n    transition: background-color 0.3s ease;\r\n}\r\n\r\n.animated-row:hover {\r\n    background-color: rgba(0, 0, 0, 0.05);\r\n}\r\n\r\n.form-group label {\r\n    font-weight: 600;\r\n    color: #2c3e50;\r\n}\r\n\r\n.form-control {\r\n    border-radius: 0, 0, 0.05;\r\n}\r\n\r\n.form-group label {\r\n    font-weight: 600;\r\n    color: #2c3e50;\r\n}\r\n\r\n.form-control {\r\n    border-radius: 8px;\r\n    border: 1px solid #ddd;\r\n    padding: 8px 12px;\r\n    transition: all 0.3s ease;\r\n}\r\n\r\n.form-control:focus {\r\n    border-color: #3498db;\r\n    box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.25);\r\n}\r\n\r\n.table-responsive {\r\n    overflow-x: auto;\r\n}\r\n\r\n.badge {\r\n    font-size: 0.85em;\r\n    padding: 0.35em 0.65em;\r\n}\r\n\r\n.badge-warning {\r\n    background-color: #ffc107;\r\n    color: #212529;\r\n}\r\n\r\n.badge-info {\r\n    background-color: #17a2b8;\r\n    color: #fff;\r\n}\r\n\r\n.badge-success {\r\n    background-color: #28a745;\r\n    color: #fff;\r\n}\r\n\r\n.badge-danger {\r\n    background-color: #dc3545;\r\n    color: #fff;\r\n}\r\n\r\n.badge-secondary {\r\n    background-color: #6c757d;\r\n    color: #fff;\r\n}\r\n\r\n/* Estilos para la paginación */\r\n.pagination {\r\n    margin-bottom: 0;\r\n}\r\n\r\n.page-link {\r\n    color: #3498db;\r\n    background-color: #fff;\r\n    border: 1px solid #dee2e6;\r\n}\r\n\r\n.page-link:hover {\r\n    color: #216a94;\r\n    background-color: #e9ecef;\r\n    border-color: #dee2e6;\r\n}\r\n\r\n.page-item.active .page-link {\r\n    background-color: #3498db;\r\n    border-color: #3498db;\r\n}\r\n\r\n.page-item.disabled .page-link {\r\n    color: #6c757d;\r\n    background-color: #fff;\r\n}\r\n\r\n/* Transiciones */\r\n.fade-enter-active,\r\n.fade-leave-active {\r\n    transition: opacity 0.3s;\r\n}\r\n\r\n.fade-enter,\r\n.fade-leave-to {\r\n    opacity: 0;\r\n}\r\n</style>","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PuntosEntregaYRemisiones.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PuntosEntregaYRemisiones.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PuntosEntregaYRemisiones.vue?vue&type=template&id=2458fc1a&scoped=true\"\nimport script from \"./PuntosEntregaYRemisiones.vue?vue&type=script&lang=js\"\nexport * from \"./PuntosEntregaYRemisiones.vue?vue&type=script&lang=js\"\nimport style0 from \"./PuntosEntregaYRemisiones.vue?vue&type=style&index=0&id=2458fc1a&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2458fc1a\",\n  null\n  \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./exportExcel.vue?vue&type=style&index=0&id=77d2f6e9&prod&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PuntosEntregaYRemisiones.vue?vue&type=style&index=0&id=2458fc1a&prod&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardTable.vue?vue&type=style&index=0&id=73483910&prod&scoped=true&lang=css\""],"sourceRoot":""}