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.
 
 

172 lines
5.8 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 :confirmDays="confirmDays"></WireTransferInfoOther>
<div v-if="payType == '2'" class="tw-mb-[30px] tw-grid tw-grid-cols-1 tw-gap-[6px] tw-p-[20px] tw-text-[16px] tw-bg-[#fefefe] tw-border tw-border-solid tw-border-primary-1 tw-rounded-[20px] xl:tw-mx-[90px]">
<div class="tw-text-primary-1">
銀行帳戶資訊
</div>
<div class="tw-text-black">
銀行名稱:玉山銀行 (808) 南港分行
</div>
<div>
帳戶號碼:1182-940-020288
</div>
<div>
戶名:簡單平台股份有限公司
</div>
</div>
<DoneTotalPrice
:subTotal="subTotal" :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,
confirmDays: "",
payType: "",
};
},
async created() {
this.isLoading = true;
let data = this.$route.query;
if(data){
console.log(data);
let ret = JSON.parse(decodeURIComponent(data.data));
console.log("ret:" + JSON.stringify(ret));
this.status = data.status;
if(ret && ret.TotalPrice!=undefined){
this.totalPrice = (ret.TotalPrice!=null && ret.TotalPrice!="") ? Number(ret.TotalPrice): 0;
this.subTotal = (ret.SubTotal!=null && ret.SubTotal!="") ? Number(ret.SubTotal): 0;
this.content = {
preview_image: ret.ServicePictrue,
name: ret.ServiceName,
exhibitionName: ret.ExhibitionName,
bookingItems: JSON.parse(ret.BookingItem),
bookingStatus: ret.BookingStatus,
};
this.orderStatus = {
bookingNo: ret.BookingNo,
service_date: ret.ServiceDateSFormat,
created_at: ret.BookingDateFormat,
currency: ret.CurrencyName,
};
this.confirmDays = ret.ConfirmDays;
this.payType = ret.PayType;
}
}
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>