You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
5.9 KiB
174 lines
5.9 KiB
<template>
|
|
<div
|
|
class="booking-info-item tw-p-[20px] tw-mb-[20px] tw-bg-white tw-border tw-border-solid tw-border-[#e5e5e5] tw-rounded-[20px] xl:tw-p-[20px]"
|
|
>
|
|
<nuxt-link :to="localePath('/user/booking/' + info.BookingNo)">
|
|
<div
|
|
class="tw-grid tw-grid-cols-[16%_82%] lg:tw-grid-cols-[13%_84%] tw-gap-x-2 lg:tw-gap-x-5"
|
|
>
|
|
<div>
|
|
<img class="tw-w-[100px] tw-h-[75px] tw-rounded-[10px ]" :src="info.OnSiteService.Logo"/>
|
|
<!-- <nuxt-link :to="localePath('/user/booking/' + info.BookingNo)"> -->
|
|
<!-- </nuxt-link> -->
|
|
</div>
|
|
<div class="element content-text">
|
|
<div class="tw-text-[18px] tw-font-medium tw-mb-[17px]">
|
|
<span :class="bookingColor(mybookingStatusMap(info.BookingStatus))"
|
|
>{{ $t(mybookingStatusMap(info.BookingStatus)) }}, </span
|
|
>
|
|
<span
|
|
:class="
|
|
bookingColor(
|
|
mypaymentStatusMap(info.PaymentStatus)
|
|
)
|
|
"
|
|
>{{ $t(mypaymentStatusMap(info.PaymentStatus)) }}</span
|
|
>
|
|
</div>
|
|
<h3
|
|
class="t12 tw-font-bold tw-text-black tw-mb-[8px] md:tw-text-[16px]"
|
|
>
|
|
{{ info.OnSiteService.ServiceName }}
|
|
</h3>
|
|
<div class="order-id tw-body-5 tw-mb-[4px] tw-text-neutrals-800">
|
|
#{{ info.BookingNo }}
|
|
</div>
|
|
<div
|
|
class="detail tw-body-5 tw-mb-[4px] xl:tw-text-neutrals-800"
|
|
v-for="(item, key) in info.BookingDetail" :key="key"
|
|
>
|
|
{{ item }}
|
|
</div>
|
|
<div class="service-date tw-body-5 tw-mb-[4px] xl:tw-text-neutrals-800"
|
|
>
|
|
{{ $t("Service Date:")
|
|
}} {{ new Date(info.OnSiteService.ServiceStartDate).toLocaleString() }} - {{ new Date(info.OnSiteService.ServiceEndDate).toLocaleString() }}
|
|
</div>
|
|
<div v-if="info.BookingDate" class="booking-date tw-body-5 tw-mb-[8px] tw-text-neutrals-800">
|
|
{{ $t("Booking Date:")
|
|
}} {{ new Date(info.BookingDate).toLocaleString() }}
|
|
</div>
|
|
<div
|
|
class="total tw-mb-[10px] md:tw-flex md:tw-justify-between md:tw-items-center md:tw-mb-0"
|
|
>
|
|
<span class="tw-text-[16px] tw-text-primary-1">
|
|
${{ formatTotal(info.TotalPrice) }} {{ info.Currency.CurrencyName }}
|
|
</span>
|
|
<div class="btn tw-mt-[10px] tw-flex md:tw-mt-0">
|
|
<button
|
|
@click.prevent="$emit('contact-us')"
|
|
class="tw-transition tw-justify-center tw-items-center tw-btn-md tw-text-primary-1 tw-border tw-border-solid tw-border-primary-1 tw-px-[30px] tw-py-[8.5px] tw-rounded-xl hover:tw-bg-primary-3 tw-hidden md:tw-flex tw-w-fit tw-h-fit tw-mr-[10px]"
|
|
>
|
|
{{ $t("Contact Us") }}
|
|
</button>
|
|
<button
|
|
v-if="
|
|
mybookingStatusMap(info.BookingStatus) === 'Processing' &&
|
|
mypaymentStatusMap(info.PaymentStatus) ===
|
|
'Unpaid'
|
|
"
|
|
@click.prevent="$emit('upload-remittance-slip', info.BookingID)"
|
|
class="tw-transition tw-justify-center tw-items-center tw-btn-md tw-text-white tw-bg-primary-1 tw-px-[30px] tw-py-[8.5px] tw-rounded-xl tw-w-fit tw-h-fit"
|
|
>
|
|
{{ $t("Upload Remittance Slip") }}
|
|
</button>
|
|
<!-- <button
|
|
v-if="mypaymentStatusMap(info.PaymentStatus) === 'Unpaid'"
|
|
class="tw-transition tw-justify-center tw-items-center tw-btn-md tw-text-white tw-bg-primary-1 tw-px-[30px] tw-py-[8.5px] tw-rounded-xl tw-w-fit tw-h-fit"
|
|
@click="goToPay()"
|
|
>
|
|
{{ $t("Go To Pay") }}
|
|
</button> -->
|
|
<!-- <button
|
|
v-if="mybookingStatusMap(info.BookingStatus) === 'Completed'"
|
|
class="tw-transition tw-justify-center tw-items-center tw-btn-md tw-text-white tw-bg-primary-1 tw-px-[30px] tw-py-[8.5px] tw-rounded-xl tw-w-fit tw-h-fit"
|
|
>
|
|
{{ $t("Write a Review") }}
|
|
</button> -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nuxt-link>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import elementTextarea from "@/components/newComponent/form/ElementTextarea";
|
|
import elementPromoCode from "@/components/newComponent/form/ElementPromoCode";
|
|
import elementTimePicker from "@/components/newComponent/form/ElementTimePicker";
|
|
import {
|
|
bookingStatusMap,
|
|
mybookingStatusMap,
|
|
paymentStatusMap,
|
|
mypaymentStatusMap,
|
|
bookingColor,
|
|
} from "@/plugins/util.js";
|
|
export default {
|
|
components: {
|
|
elementTextarea,
|
|
elementPromoCode,
|
|
elementTimePicker,
|
|
},
|
|
props: {
|
|
info: {
|
|
type: Object,
|
|
},
|
|
active: {
|
|
type: Number,
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
apiUrl: process.env.SERVICE_CONSOLE,
|
|
img:"",
|
|
};
|
|
},
|
|
computed: {
|
|
activeLabel() {
|
|
return this.active;
|
|
},
|
|
formatTotal() {
|
|
return function (total) {
|
|
return total.toLocaleString("en-US");
|
|
};
|
|
},
|
|
},
|
|
mounted() {
|
|
//this.getServiceData(this.info);
|
|
},
|
|
methods: {
|
|
onLabelClick(label) {
|
|
this.$emit("changeActiveLabel", label);
|
|
},
|
|
bookingStatusMap,
|
|
mybookingStatusMap,
|
|
paymentStatusMap,
|
|
mypaymentStatusMap,
|
|
bookingColor,
|
|
goToPay() {
|
|
this.$router.push(
|
|
this.localePath("/user/booking/" + this.info.BookingNo)
|
|
);
|
|
},
|
|
// async getServiceData(object) {
|
|
// this.$axios
|
|
// .get(
|
|
// `${this.apiUrl}/user-services/content?service_id=${object.service_id}&lang_code=${this.$i18n.localeProperties["langQuery"]}¤cy=${object.currency}`
|
|
// )
|
|
// .then((res) => {
|
|
// this.img = res.data.preview_image;
|
|
// console.log(this.img);
|
|
// })
|
|
// .catch((error) => console.log(error));
|
|
// },
|
|
},
|
|
};
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.booking-info-item {
|
|
&:hover {
|
|
box-shadow: 10px 10px 10px rgba(155, 155, 155, 0.25);
|
|
}
|
|
}
|
|
|
|
</style>
|