purityselect/resources/js/pages/agent-call.vue
2024-10-25 01:05:27 +05:00

239 lines
6.6 KiB
Vue

<script setup>
import leaftmap from '@/pages/leaftmap.vue';
import { ref } from 'vue';
const count = ref(5);
const showIframe = ref(true);
const activeTab1 = ref('info');
const overlay = ref(false);
const userAbout = ref('');
const userStatus = ref('active');
const settingsGroup = ref([]);
const twoStepVerification = ref(true);
const editLocation = ref('');
const editAddress = ref('');
const editCity = ref('');
const picker = ref();
const isDialogVisible = ref(false)
const isLoadingVisible = ref(false)
const isSuccessVisible = ref(false)
const selectedDate = ref();
const isDisabled = ref(true)
const chooseDate = ref([]);
const closeSidebar = () => {
// Implement close sidebar logic
};
const logout = () => {
// Implement logout logic
};
const findLab = () => {
console.log('Test');
activeTab1.value = 'lab_locator';
// Implement find lab logic
};
const editInfo = () => {
// Implement edit info logic
activeTab1.value = 'edit_form';
};
const updateInfo = () => {
// Implement update info logic
};
const backToInfo = () => {
// Implement back to info logic
activeTab1.value = 'info';
};
const backToLabLoc = () => {
// Implement back to lab locator logic
activeTab1.value = 'info';
};
const responseUrl = ref(localStorage.getItem('meeting-url'));
const datepick = () => {
console.log("ppicker",picker.value);
// isLoadingVisible.value = true;
chooseDate.value = '';
selectedDate.value = '';
if (picker.value) {
const selectedDate = new Date(picker.value);
const dateWithoutTime = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), selectedDate.getDate());
// Format the date as needed
const formattedDate = dateWithoutTime.toISOString().slice(0, 10);
console.log("formattedDate",formattedDate);
// if (formattedDate) {
// console.log('in');
// axios.get('/api/available-slots/' + formattedDate)
// .then(response => {
// console.log("Data", response.data.available_slots);
// chooseDate.value = Object.values(response.data.available_slots);
// // isLoadingVisible.value = false;
// // console.log(chooseDate);
// })
// .catch(error => {
// console.error(error.response.data);
// });
// } else {
// chooseDate.value = [];
// }
}
}
const isBookSlotDisabled = computed(() => {
// Check if a date is selected
return !selectedDate.value;
});
const bookSlot = () => {
isLoadingVisible.value = true;
console.log("selectedData", selectedDate.value);
if (selectedDate.value) {
const userData = localStorage.getItem('userData');
isLoadingVisible.value = false;
axios.post('/api/book-appointment/', {
patient_id: userData,
appointment_time: selectedDate.value
})
.then(response => {
console.log(response.data.message);
isDialogVisible.value = true;
isSuccessVisible.value = true;
chooseDate.value = '';
selectedDate.value = '';
})
.catch(error => {
console.error(error.response.data);
isLoadingVisible.value = false;
});
}
}
const done = () => {
isDialogVisible.value = false;
isLoadingVisible.value = true;
router.replace(route.query.to && route.query.to != '/login' ? String(route.query.to) : '/appointments')
}
</script>
<template>
<VRow>
<VCol cols="12" md="8">
<VCard class="text-center text-sm-start rounded-0">
<!-- Show the iframe when countdown reaches 1 -->
<iframe v-if="showIframe" ref="myIframe" :src="responseUrl" width="100%" height="400" style="border:0"></iframe>
<div v-else>
Loading iframe...
</div>
</VCard>
</VCol>
<!-- 👉 Profit -->
<VCol cols="4">
<VRow>
<VCol cols="12">
<VCard rounded="0">
<!-- About User -->
<v-col v-if="activeTab1 === 'info'">
<VList col="4">
<v-list-item class="m-0">
<span class="text-heading"><b>Location:</b></span> <span>Court Street 78</span>
</v-list-item>
<v-list-item>
<span class="text-heading"><b>Address:</b></span> <span>Court Street 78</span>
</v-list-item>
<v-list-item>
<span class="text-heading"><b>City:</b></span> <span>Court Street 78</span>
</v-list-item>
</VList>
<!-- Add other user info here -->
<VRow>
<v-col>
<v-btn @click="findLab" class="btn btn-primary waves-effect waves-light">
Find Lab
</v-btn>
</v-col>
<v-col>
<v-btn @click="editInfo" class="btn btn-primary waves-effect waves-light">
Edit Info
</v-btn>
</v-col>
</VRow>
</v-col>
<v-col xs="12" v-else-if="activeTab1 === 'edit_form'" id="edit_form">
<v-form @submit.prevent="updateInfo">
<v-text-field class="mb-3" v-model="editLocation" label="Location"></v-text-field>
<v-text-field class="mb-3" v-model="editAddress" label="Address"></v-text-field>
<v-text-field class="mb-3" v-model="editCity" label="City"></v-text-field>
<v-btn type="submit" class="btn btn-primary waves-effect waves-light mr-2">Update</v-btn>
<v-btn @click="backToInfo">Back</v-btn>
</v-form>
</v-col>
<v-col xs="12" v-else-if="activeTab1 === 'lab_locator'" style="display: block;" id="lab_locator">
<small class="text-uppercase">Lab Locate</small>
<!-- Leaflet Map goes here -->
<leaftmap></leaftmap>
<v-btn @click="backToLabLoc">Back</v-btn>
</v-col>
</VCard>
</VCol>
<VCol cols="12">
<v-date-picker v-model="selectedDate" @update:modelValue="datepick"></v-date-picker>
<VCard rounded="0">
<div class="ml-3 mr-3">
<v-flex xs12 sm6 d-flex>
<v-select v-model="selectedDate" :items="chooseDate" label="Slots" width="1000"></v-select>
</v-flex>
<div class="text-right mt-5 mb-4">
<v-btn outline color="primary" @click=bookSlot :disabled="isBookSlotDisabled">
Book Slot
</v-btn>
</div>
</div>
</VCard>
</VCol>
</VRow>
</VCol>
<!-- 👉 Sales -->
</VRow>
</template>
<style scoped>
.v-list-item--density-default.v-list-item--one-line {
min-height: 30px;
}
</style>