115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Vue
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Vue
		
	
	
		
			Executable File
		
	
	
	
	
| <script setup lang="ts">
 | |
| import Select from '@/components/Select.vue'
 | |
| import DatePicker from '@/components/DatePicker.vue'
 | |
| import InlineRadioGroup from '@/components/Form/InlineRadioGroup.vue'
 | |
| import {
 | |
|   selectedUid,
 | |
|   selectedUp3Ulp,
 | |
|   selectedUlp,
 | |
|   fetchUid,
 | |
|   itemsUid,
 | |
|   itemsUp3,
 | |
|   itemsUlp
 | |
| } from './reference'
 | |
| import { onMounted, ref } from 'vue'
 | |
| 
 | |
| const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah'
 | |
| const up3Placeholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan'
 | |
| const ulpPlaceholder = 'Semua Unit Layanan Pelanggan'
 | |
| const up3 = ref({ id: 0, name: up3Placeholder })
 | |
| const uid = ref({ id: 0, name: uidPlaceholder })
 | |
| const ulp = ref({ id: 0, name: ulpPlaceholder })
 | |
| const emit = defineEmits(['update:filters'])
 | |
| const data = ref({
 | |
|   uid: uid.value,
 | |
|   up3: up3.value,
 | |
|   ulp: ulp.value,
 | |
|   periode: '',
 | |
|   groupBy: false
 | |
| })
 | |
| 
 | |
| const setUid = (value: any) => {
 | |
|   uid.value = value
 | |
|   selectedUid(value)
 | |
|   up3.value = { id: 0, name: up3Placeholder }
 | |
|   data.value.uid = value
 | |
| }
 | |
| 
 | |
| const setUp3 = (value: any) => {
 | |
|   up3.value = value
 | |
|   selectedUp3Ulp(value)
 | |
|   ulp.value = { id: 0, name: ulpPlaceholder }
 | |
|   data.value.up3 = value
 | |
| }
 | |
| 
 | |
| const setUlp = (value: any) => {
 | |
|   ulp.value = value
 | |
|   selectedUlp(value)
 | |
|   data.value.ulp = value
 | |
| 
 | |
|   console.log('data.value', data.value)
 | |
| }
 | |
| 
 | |
| onMounted(() => {
 | |
|   emit('update:filters', data.value)
 | |
|   fetchUid()
 | |
| })
 | |
| </script>
 | |
| 
 | |
| <template>
 | |
|   <div class="grid grid-cols-1 gap-4 md:grid-cols-2">
 | |
|     <div class="flex flex-col flex-1 space-y-2">
 | |
|       <label class="filter-input-label">Unit Induk Distribusi/Wilayah:</label>
 | |
| 
 | |
|       <Select @update:selected="setUid($event)" :data="itemsUid" :placeholder="uidPlaceholder" />
 | |
|     </div>
 | |
| 
 | |
|     <div class="flex flex-col flex-1 space-y-2">
 | |
|       <label class="filter-input-label">Unit Pelaksanaan Pelayanan Pelanggan:</label>
 | |
| 
 | |
|       <Select
 | |
|         @update:selected="setUp3($event)"
 | |
|         :data="itemsUp3"
 | |
|         :selected="up3"
 | |
|         :placeholder="up3Placeholder"
 | |
|       />
 | |
|     </div>
 | |
| 
 | |
|     <div class="flex flex-col flex-1 space-y-2">
 | |
|       <label class="filter-input-label">Unit Layanan Pelanggan:</label>
 | |
|       <Select
 | |
|         @update:selected="setUlp($event)"
 | |
|         :data="itemsUlp"
 | |
|         :selected="ulp"
 | |
|         :placeholder="ulpPlaceholder"
 | |
|       />
 | |
|     </div>
 | |
| 
 | |
|     <div class="flex flex-col flex-1 space-y-2">
 | |
|       <label class="filter-input-label">Periode Tanggal:</label>
 | |
|       <DatePicker @update:date-value="(value) => (data.periode = value)" />
 | |
|     </div>
 | |
| 
 | |
|     <div class="flex flex-col flex-1 space-y-2" v-if="ulp.id == 0">
 | |
|       <label class="filter-input-label"
 | |
|         >Group By
 | |
|         {{
 | |
|           uid.id != 0
 | |
|             ? up3.id != 0
 | |
|               ? 'Unit Layanan Pelanggan/Posko'
 | |
|               : 'Unit Pelaksanaan Pelayanan Pelanggan'
 | |
|             : 'Kode Unit Distribusi'
 | |
|         }}:</label
 | |
|       >
 | |
| 
 | |
|       <InlineRadioGroup
 | |
|         @update:group-value="(value) => (data.groupBy = value.id === 2)"
 | |
|         :radio-items="[
 | |
|           { id: 1, title: 'Tidak' },
 | |
|           { id: 2, title: 'Ya, Grupkan' }
 | |
|         ]"
 | |
|       />
 | |
|     </div>
 | |
|   </div>
 | |
| </template>
 |