30 lines
		
	
	
		
			971 B
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			971 B
		
	
	
	
		
			Vue
		
	
	
	
| <template>
 | |
|     <page-layout>
 | |
|         <div class="gap-6 md:grid-cols-2 xl:grid-cols-4 grid p-6">
 | |
|             <v-block v-for="(block, index) in blocks" :key="index" :title="block.title">
 | |
|                 <component :is="block.component" :data="block.data"></component>
 | |
|             </v-block>
 | |
|         </div>
 | |
|     </page-layout>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import {defineAsyncComponent} from 'vue';
 | |
| 
 | |
| export default {
 | |
|     props: {
 | |
|         data: {},
 | |
|         blocks: {},
 | |
|     },
 | |
| 
 | |
|     components: {
 | |
|         'VBlock': defineAsyncComponent(() => import('./VBlock.vue')),
 | |
|         'age-group-count': defineAsyncComponent(() => import('./AgeGroupCount.vue')),
 | |
|         'efz-pending': defineAsyncComponent(() => import('./EfzPending.vue')),
 | |
|         'ps-pending': defineAsyncComponent(() => import('./PsPending.vue')),
 | |
|         'testers': defineAsyncComponent(() => import('./Testers.vue')),
 | |
|         'member-payment': defineAsyncComponent(() => import('./MemberPayment.vue')),
 | |
|     },
 | |
| };
 | |
| </script>
 |