Files
exchange-2.0/resources/assets/vue/components/bookings/elements/DownloadBillingWithDatesComponent.vue
T
2024-05-16 10:56:02 +08:00

107 lines
4.1 KiB
Vue

<template>
<div class="row m-b-20">
<div class="col">
<div class="row">
<div class="col">
<div class="row m-l-0 m-r-0">
<div class="col-12 col-md mb-2 mb-md-0 p-l-3 p-r-3 p-md-0">
<validation-wrapper-component :validator="$v.parameters.startDate">
<label class="all-caps">Start Date</label>
<date-picker-component :parameters="parameters" v-model.lazy="parameters.startDate"></date-picker-component>
</validation-wrapper-component>
</div>
<div class="col-12 col-md mb-2 mb-md-0 p-l-3 p-r-3 p-md-0">
<validation-wrapper-component :validator="$v.parameters.endDate">
<label class="all-caps">End Date</label>
<date-picker-component :parameters="parameters" v-model.lazy="parameters.endDate"></date-picker-component>
</validation-wrapper-component>
</div>
<div class="col-12 col-md mb-2 mb-md-0 p-l-3 p-r-3 p-md-0">
<validation-wrapper-component selectable :validator="$v.parameters.reportType">
<label class="all-caps">Report Type</label>
<select-component :options="['Payments Report', 'Wallets Report', 'White Form Report']" v-model="parameters.reportType"></select-component>
</validation-wrapper-component>
</div>
<div class="col-12 col-md-auto p-l-3 p-r-3 p-md-0">
<div class="btn btn-lg btn-primary fs-11 w-100 h-100 d-flex justify-content-center align-items-center" @click="downloadReport()">
<span>
Export
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import componentHandler from "../../../general/mixins/componentHandler";
import { required } from "vuelidate/lib/validators";
export default {
props: {
section:{
type: String,
required: true
}
},
data(){
return {
parameters: {
startDate: '',
endDate: '',
reportType: '',
},
}
},
mounted(){
switch(this.section) {
case 'paymentsReportSection':
this.parameters.reportType = 'Payments Report'
break;
case 'walletsReportSection':
this.parameters.reportType = 'Wallets Report'
break;
}
},
validations: {
parameters: {
startDate: {
required
},
endDate: {
required
},
reportType: {
required
},
}
},
methods: {
downloadReport(){
var apiRoute = '';
if(!this.validate()){ return; }
switch(this.parameters.reportType) {
case 'Payments Report':
apiRoute = route('paymentTransactions.export');
break;
case 'Wallets Report':
apiRoute = route('walletTransactions.export');
break;
case 'White Form Report':
apiRoute = route('whiteFormTransactions.export');
break;
}
window.open(apiRoute + '?startDate=' + this.parameters.startDate + '&endDate=' + this.parameters.endDate, '_blank');
},
updateDocumentType(documentType) {
this.parameters.type = documentType;
this.selectedDocumentStatus = !this.selectedDocumentStatus
}
},
mixins: [componentHandler]
};
</script>