component, master loket, edit loket

This commit is contained in:
bagus-arie05
2025-08-26 14:57:13 +07:00
parent 1f5b25a873
commit 15c49262f1
4 changed files with 256 additions and 36 deletions

No files matched your search

+113
View File
@@ -0,0 +1,113 @@
<template>
<v-container>
<v-card>
<v-card-title>Edit Loket</v-card-title>
<v-card-text>
<v-form @submit.prevent="simpanLoket">
<v-text-field label="Nama Loket" v-model="loket.namaLoket"></v-text-field>
<v-text-field label="Kuota Bangku" v-model="loket.kuota" type="number"></v-text-field>
<v-select
label="Status Pelayanan"
:items="['RAWAT JALAN', 'RAWAT INAP']"
v-model="loket.statusPelayanan"
></v-select>
<v-select
label="Pembayaran"
:items="['JKN', 'UMUM']"
v-model="loket.pembayaran"
></v-select>
<v-select
label="Keterangan"
:items="['ONLINE', 'MANUAL']"
v-model="loket.keterangan"
></v-select>
<div class="my-4">
<h3 class="text-h6">Pelayanan</h3>
<TabelLayanan
:headers="serviceHeaders"
:items="availableServices"
v-model:selected-items="loket.pelayanan"
/>
</div>
<v-btn color="success" type="submit" class="mr-2">Simpan</v-btn>
<v-btn color="secondary" @click="cancelEdit">Batal</v-btn>
</v-form>
</v-card-text>
</v-card>
</v-container>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import TabelLayanan from '../../components/TabelLayanan.vue';
const route = useRoute();
const router = useRouter();
// Data dummy loket yang sama seperti di Master-Loket.vue
const loketData = ref([
{ id: 1, no: 1, namaLoket: 'Loket 1', kuota: 500, pelayanan: ['RADIOTERAPI', 'REHAB MEDIK', 'TINDAKAN'], pembayaran: 'JKN', keterangan: 'ONLINE' },
{ id: 2, no: 2, namaLoket: 'Loket 2', kuota: 666, pelayanan: ['JIWA', 'SARAF'], pembayaran: 'JKN', keterangan: 'ONLINE' },
{ id: 3, no: 3, namaLoket: 'Loket 3', kuota: 666, pelayanan: ['ANESTESI', 'JANTUNG'], pembayaran: 'JKN', keterangan: 'ONLINE' },
{ id: 4, no: 4, namaLoket: 'Loket 4', kuota: 3676, pelayanan: ['KULIT KELAMIN', 'PARU'], pembayaran: 'JKN', keterangan: 'ONLINE' },
]);
const loket = ref({
id: null,
namaLoket: '',
kuota: 0,
statusPelayanan: '',
pembayaran: '',
keterangan: '',
pelayanan: [],
});
const serviceHeaders = ref([
{ title: '#', value: 'no', sortable: false },
{ title: 'Kode', value: 'id' },
{ title: 'Klinik', value: 'nama' },
{ title: 'Pilih', value: 'pilih', sortable: false },
]);
const availableServices = ref([
{ no: 1, id: 'AN', nama: 'ANAK' },
{ no: 2, id: 'AS', nama: 'ANESTESI' },
{ no: 3, id: 'BD', nama: 'BEDAH' },
{ no: 4, id: 'GR', nama: 'GERIATRI' },
{ no: 5, id: 'GI', nama: 'GIGI DAN MULUT' },
{ no: 6, id: 'GZ', nama: 'GIZI' },
{ no: 7, id: 'HO', nama: 'HOM' },
{ no: 8, id: 'IP', nama: 'IPD' },
]);
onMounted(() => {
// Cari loket yang sesuai dengan ID di URL
const selectedLoket = loketData.value.find(loket => loket.id === parseInt(route.params.id));
if (selectedLoket) {
// Jika data ditemukan, salin ke objek loket
loket.value = { ...selectedLoket };
// Konversi string pelayanan menjadi array untuk checkbox
if (typeof loket.value.pelayanan === 'string') {
loket.value.pelayanan = loket.value.pelayanan.split(', ').map(s => s.trim());
}
}
});
const simpanLoket = () => {
// Dalam aplikasi nyata, ini adalah tempat untuk memanggil API update data
// Untuk simulasi, kita akan kembali ke halaman master
router.back();
};
const cancelEdit = () => {
router.back();
};
</script>
+61
View File
@@ -0,0 +1,61 @@
<template>
<v-container>
<v-card>
<v-card-title class="d-flex justify-space-between align-center">
<span>Master Loket</span>
<v-btn color="primary" @click="tambahLoket">Tambah Baru</v-btn>
</v-card-title>
<TabelData
:headers="loketHeaders"
:items="loketData"
title="Master Loket"
>
<template #actions="{ item }">
<v-btn small color="info" @click="editLoket(item)" class="mr-2">Edit</v-btn>
<v-btn small color="error" @click="deleteLoket(item)">Delete</v-btn>
</template>
</TabelData>
</v-card>
</v-container>
</template>
<script setup>
import { ref } from 'vue';
import TabelData from '../../components/TabelData.vue';
import { useRouter } from 'vue-router';
const router = useRouter();
const loketHeaders = ref([
{ title: 'No', value: 'no' },
{ title: 'Nama Loket', value: 'namaLoket' },
{ title: 'Kuota', value: 'kuota' },
{ title: 'Pelayanan', value: 'pelayanan' },
{ title: 'Pembayaran', value: 'pembayaran' },
{ title: 'Keterangan', value: 'keterangan' },
{ title: 'Aksi', value: 'aksi', sortable: false }, // 'value' harus 'actions'
]);
// Master-Loket.vue
const loketData = ref([
{ id: 1, no: 1, namaLoket: 'Loket 1', kuota: 500, pelayanan: ['RADIOTERAPI', 'REHAB MEDIK', 'TINDAKAN'], pembayaran: 'JKN', keterangan: 'ONLINE' },
{ id: 2, no: 2, namaLoket: 'Loket 2', kuota: 666, pelayanan: ['JIWA', 'SARAF'], pembayaran: 'JKN', keterangan: 'ONLINE' },
{ id: 3, no: 3, namaLoket: 'Loket 3', kuota: 666, pelayanan: ['ANESTESI', 'JANTUNG'], pembayaran: 'JKN', keterangan: 'ONLINE' },
{ id: 4, no: 4, namaLoket: 'Loket 4', kuota: 3676, pelayanan: ['KULIT KELAMIN', 'PARU'], pembayaran: 'JKN', keterangan: 'ONLINE' },
]);
const editLoket = (item) => {
router.push({ path: `/Setting/Edit-Loket/${item.id}` });
};
const deleteLoket = (item) => {
const index = loketData.value.findIndex(loket => loket.id === item.id);
if (index !== -1) {
loketData.value.splice(index, 1);
}
};
const tambahLoket = () => {
router.push({ path: '/Setting/Tambah-Loket' });
};
</script>