router

En el directorio src creamos el directorio router y en este directorio creamos el archivo index.js
 
      
     
     import { createWebHistory, createRouter } from "vue-router";
import MiVacunaApp from '../components/MiVacunaApp.vue';
import Estadistica from '../components/Estadistica.vue';



const routes = [{
        path: "/",
        name: "MiVacunaApp",
        component: MiVacunaApp,
    },
    {
        path: "/estadistica",
        name: "Estadistica",
        component: Estadistica,
    }
];

const router = createRouter({
    history: createWebHistory(),
    routes,
});

export default router;
     
     
     
     
       
   

Nos cambiamos al archivo main.js y escribimos lo siguiente:
 
           
          
   import { createApp } from 'vue'
import App from './App.vue'
import router from './router';
import PrimeVue from 'primevue/config';
import ToastService from 'primevue/toastservice';
import Panel from 'primevue/panel';
import InputText from 'primevue/inputtext';
import InputNumber from 'primevue/inputnumber';
import Button from 'primevue/button';
import Toast from 'primevue/toast';
import Breadcrumb from 'primevue/breadcrumb';
import DataTable from 'primevue/datatable';
import Column from 'primevue/column';
import ColumnGroup from 'primevue/columngroup';

import 'primevue/resources/themes/bootstrap4-light-blue/theme.css';
import 'primevue/resources/primevue.min.css';
import 'primeicons/primeicons.css';




const app = createApp(App);
app.use(PrimeVue);
app.use(router);
app.use(ToastService);
app.component('Panel', Panel);
app.component('InputText', InputText);
app.component('InputNumber', InputNumber);
app.component('Button', Button);
app.component('Toast', Toast);
app.component('Breadcrumb', Breadcrumb);
app.component('DataTable', DataTable);
app.component('Column', Column);
app.component('ColumnGroup', ColumnGroup);
app.mount('#app')         
      
          
   

Ahora nos pasamos al archivo App.vue lo dejamos de la siguiente forma:
 
               
    <template>
  <div id="app" style="margin:0 auto;width:80%" >
     <Breadcrumb :home="home" :model="items" /> 
         <router-view></router-view>
  </div>
</template>

<script>
import Breadcrumb from 'primevue/breadcrumb';

export default {
  name: 'App',
  components: {
    Breadcrumb
  },
  setup(){
    return{
      items: [
                 {label:'Preregistro',icon: 'pi pi-book',to:'/'},
                {label:'Estadística',icon:'pi pi-chart-bar',to:'/estadistica'}
                
            ],

    };


  }
}
</script>

<style>

</style>        
            
        
   

Nos pasamos al directorio src/service y modidicamos el archivo Poblacion2021Service.js
 
                      
            
            
      import axios from 'axios';

export default class Poblacion2021Service {

    url = "http://localhost:8080/api/poblacion2021/";


    insertarPoblacion2021(poblacion) {

        return axios.post(this.url + "save", poblacion, {
            headers: {
                'Content-Type': 'application/json'
            }
        });
    }

    getDatosEstadisticos(codigoPostal) {


        return axios.get(this.url + "mostrar/" + codigoPostal);
    }


}      
            
            
            
            
      
   

Nos cambiamos al directorio src/components y creamos el archivo Estadistica.vue
 
               
     <template>
    <div style="margin:0 auto;width:70%">
        <Panel header="Estadística Mi Vacuna Covid 2021">
         
          <span class="p-float-label">
          <InputNumber  id="codigoPostal"  v-model="codigoPostal" 
          class="p-invalid"  />
        <label for="codigoPostal">Código Postal</label>
         </span>
         <br/> <br/>

        <Button label="Mostrar Datos" icon="pi pi-check" @click="buscar" />
         <br/> <br/>
         <Button label="Volve a calcular" icon="pi pi-trash" @click="limpiar" />  

        <div class="card">

          <h4>El Número de personas registradas es : {{counterPersona.totalPoblacion}}</h4>

          <h5>El Número de personas registradas en el codigo postal  {{codigoPostal }} es : {{counterPersona.totalCodigoPostal}}</h5>


            <DataTable :value="personas" :paginator="true" :rows="10">
        <Column field="edad" header="Edad de Personas"></Column>
        <Column field="cantidad" header="Cantidad de personas"></Column>
        <Column field="porcentaje" header="Porcentaje de personas">
        <template #body="slotProps">
                {{slotProps.data.porcentaje}}%
            </template>
        
        
        </Column>
        
      </DataTable>

          
          
           


          






        </div>



        


       
        </Panel>






    </div>
</template>

<script>
import Poblacion2021Service from "../service/Poblacion2021Service";

    export default{
        name : "Estadistica",
        data(){
            return{
             
              codigoPostal:null,
              counterPersona:{
                  totalPoblacion:null,
                  totalCodigoPostal:null,
                  totalEdad:null,
                  porcentajeEdad:null

              },
             personas:[],
             edad:18  
            };
        },
       
        poblacion2021Service:null,
        created(){
            this.poblacion2021Service=new Poblacion2021Service();
        },
         
        methods:{

            buscar(){
           
           
               if (!this.codigoPostal){
               alert("Debes agregar el código postal!");
               return;
               }
               

                this.poblacion2021Service.getDatosEstadisticos(this.codigoPostal).then(data => {
                 this.counterPersona = data.data;
                 

                 for(var i in this.counterPersona.totalEdad){
                 this.personas.push({edad:this.edad,cantidad:this.counterPersona.totalEdad[i],
                 porcentaje:this.counterPersona.porcentajeEdad[i]});
                       this.edad++;
                 }
                                  


      });
          
             


           },
           limpiar(){
             this.personas.length=0;
              this.codigoPostal=null;
              this.counterPersona.totalPoblacion=null;
              this.counterPersona.totalCodigoPostal=null;
              this.edad=18;
           }
            
        }

        
        };


    


</script>       
            
        
   

Probando la aplicación

Una vez ya modificado el proyecto procedmos a probar la aplicación no olvidar que también hay que correr la api rest de spring boot para que funcione:
Seleccionamos en el menú Estadistica y colocamos el código postal 52924 nota:esta prueba queda a su criterio de pruebas. y posteriormente Mostrar Datos
spring boot
spring boot
Vemos que el total de personas registradas en el sistema son 4 y este codigo postal hay 4 personas registradas en la tabla se muestra edad de la persona,cantidad de personas registradas con la edad correspondiente y el porcentaje que representan en base a la candidad de personas que hay en el código postal.
Para probar como cambian los datos cuando se registra otra persona nos vamos a la opción de preregistro y registramos una persona de 18 años llamada juan perez con el codigo postal 52924 y su curp jp123456HM00.
spring boot
Volvemos hacer la misma consulta en estadística y vemos como se modificaron los datos:
spring boot