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.
151 lines
5.0 KiB
151 lines
5.0 KiB
<template>
|
|
<div id="print" ref="print"
|
|
class="tw-px-[15px] tw-mb-[60px] md:tw-px-[60px] xl:tw-max-w-screen-xl xl:tw-mx-auto xl:tw-grid xl:tw-grid-cols-1">
|
|
<section class="section section-one tw-my-[40px]">
|
|
<StepInfo :step_active="step"></StepInfo>
|
|
</section>
|
|
<section class="section section-two tw-w-full xl:tw-max-w-[822px] xl:tw-mx-auto xl:tw-mt-[40px]">
|
|
<PaymentStatusOther :status="status"></PaymentStatusOther>
|
|
<WireTransferInfoOther ></WireTransferInfoOther>
|
|
<DoneTotalPrice
|
|
:subTotal="totalPrice" :total="totalPrice" :orderStatus="orderStatus"></DoneTotalPrice>
|
|
<div class="element tw-flex tw-justify-center tw-items-center xl:tw-justify-end tw-mt-[30px] no-print">
|
|
<a class="tw-transition no-print tw-btn-md tw-no-underline tw-text-neutrals-0 tw-bg-primary-1 tw-px-[30px] tw-py-[9.5px] tw-rounded-2xl hover:tw-bg-primary-2"
|
|
:href="localePath('/user/booking/' + orderStatus.bookingNo)">
|
|
{{ $t("Booking Details") }}
|
|
</a>
|
|
</div>
|
|
<div class="element tw-hidden xl:tw-flex xl:tw-justify-center xl:tw-items-center xl:tw-mt-[12px] no-print">
|
|
<button v-if="status == 'success'" @click="onPrint()"
|
|
class="print tw-transition tw-flex tw-justify-center tw-items-center tw-btn-md tw-text-primary-1 tw-bg-neutrals-0 tw-border tw-border-solid tw-border-primary-1 tw-px-[30px] tw-py-[13.5px] tw-rounded-xl hover:tw-bg-primary-3">
|
|
{{ $t("Print this page") }}
|
|
</button>
|
|
</div>
|
|
</section>
|
|
<section class="section section-three tw-w-full tw-mt-[60px] xl:tw-max-w-[822px] xl:tw-mx-auto">
|
|
<DoneBookingDetails v-if="status == 'success'" :info="content" :orderStatus="orderStatus"
|
|
:totalPrice="totalPrice"></DoneBookingDetails>
|
|
</section>
|
|
<loading :isLoading="isLoading"></loading>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import StepInfo from "@/components/service/StepInfo";
|
|
// import BookingInfoItem from "@/components/service/BookingInfoItem";
|
|
// import PurchaserInfo from "@/components/service/PurchaserInfo";
|
|
// import ChooseMethod from "@/components/service/ChooseMethod";
|
|
// import PriceInfo from "@/components/service/PriceInfo";
|
|
// import TotalPrice from "@/components/service/TotalPrice";
|
|
import DoneTotalPrice from "@/components/service/DoneTotalPrice";
|
|
import PaymentStatusOther from "@/components/service/PaymentStatusOther";
|
|
import WireTransferInfoOther from "@/components/service/WireTransferInfoOther";
|
|
import DoneBookingDetails from "@/components/service/DoneBookingDetails";
|
|
import loading from "@/components/newComponent/loading/loading.vue";
|
|
export default {
|
|
name: "done",
|
|
layout: "service",
|
|
auth: false,
|
|
components: {
|
|
StepInfo,
|
|
// BookingInfoItem,
|
|
// PurchaserInfo,
|
|
// ChooseMethod,
|
|
// PriceInfo,
|
|
// TotalPrice,
|
|
DoneTotalPrice,
|
|
PaymentStatusOther,
|
|
WireTransferInfoOther,
|
|
DoneBookingDetails,
|
|
loading,
|
|
},
|
|
data() {
|
|
return {
|
|
step: "3",
|
|
subTotal: 0,
|
|
methoodType: "",
|
|
serviceId: "",
|
|
status: "success",
|
|
content: {
|
|
preview_image: "",
|
|
name: "",
|
|
bookingItems: []
|
|
},
|
|
orderStatus: {
|
|
bookingNo: '',
|
|
service_date: '',
|
|
service_date: '',
|
|
currency: '',
|
|
created_at: ''
|
|
},
|
|
totalPrice: 0,
|
|
subTotal: 0,
|
|
isLoading: false,
|
|
};
|
|
},
|
|
async created() {
|
|
this.isLoading = true;
|
|
let data = this.$route.query;
|
|
if(data){
|
|
let ret = JSON.parse(decodeURIComponent(data.data));
|
|
this.status = data.status;
|
|
if(ret && ret.TotalPrice!=undefined){
|
|
this.totalPrice = (ret.TotalPrice!=null && ret.TotalPrice!="") ? Math.round(Number(ret.TotalPrice)): 0;
|
|
this.subTotal = (ret.SubTotal!=null && ret.SubTotal!="") ? Math.round(Number(ret.SubTotal)): 0;
|
|
this.content = {
|
|
preview_image: ret.ServicePictrue,
|
|
name: ret.ServiceName,
|
|
exhibitionName: ret.ExhibitionName,
|
|
bookingItems: JSON.parse(ret.BookingItem)
|
|
};
|
|
this.orderStatus = {
|
|
bookingNo: ret.BookingNo,
|
|
service_date: ret.ServiceDateSFormat,
|
|
created_at: ret.BookingDateFormat,
|
|
currency: ret.CurrencyName,
|
|
};
|
|
}
|
|
}
|
|
this.$nextTick(()=>{
|
|
this.isLoading = false;
|
|
});
|
|
},
|
|
mounted() { },
|
|
computed: {
|
|
currency() {
|
|
return this.orderStatus.currency;
|
|
},
|
|
},
|
|
methods: {
|
|
print() {
|
|
if (process.browser) {
|
|
this.$nextTick(()=>{
|
|
window.print();
|
|
});
|
|
}
|
|
},
|
|
onPrint() {
|
|
this.$print(this.$refs.print)
|
|
this.$nextTick(()=>{
|
|
let arr=document.getElementsByClassName('isNeedRemove')
|
|
if(arr.length) arr[0].remove();
|
|
})
|
|
},
|
|
}
|
|
};
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.print {
|
|
&::before {
|
|
content: "";
|
|
display: inline-block;
|
|
position: relative;
|
|
background-image: url("~/assets/svg/print.svg");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
background-size: cover;
|
|
width: 20px;
|
|
height: 20px;
|
|
margin-right: 14px;
|
|
}
|
|
}
|
|
</style>
|