255 lines
7.3 KiB
Vue
255 lines
7.3 KiB
Vue
<template>
|
|
<div>
|
|
<CustomSubHeader>
|
|
<CBreadcrumb class="border-0 mb-0">{{ title }}</CBreadcrumb>
|
|
</CustomSubHeader>
|
|
|
|
<CCard>
|
|
<CCardBody>
|
|
<CRow>
|
|
<CCol sm="6">
|
|
<div>از تاریخ:</div>
|
|
<div class="mt-3"><date-picker type="datetime" v-model="startDate" clearable format="YYYY-MM-DD HH:mm" display-format="jYYYY-jMM-jDD HH:mm"/></div>
|
|
</CCol>
|
|
<CCol sm="6">
|
|
<div>تا تاریخ:</div>
|
|
<div class="mt-3"><date-picker type="datetime" v-model="endDate" clearable format="YYYY-MM-DD HH:mm" display-format="jYYYY-jMM-jDD HH:mm"/></div>
|
|
</CCol>
|
|
<CCol sm="12" class="text-center mt-4">
|
|
<CButton size="sm" color="success" class="mr-1" @click="getReports">گرفتن گزارش</CButton>
|
|
</CCol>
|
|
</CRow>
|
|
<!-- <div class="d-flex justify-content-center align-items-center">-->
|
|
<!-- <span>از تاریخ: </span>-->
|
|
<!-- <span><date-picker v-model="date" clearable format="YYYY-MM-DD" display-format="jYYYY-jMM-jDD"/></span>-->
|
|
<!-- </div>-->
|
|
</CCardBody>
|
|
</CCard>
|
|
|
|
<CCard>
|
|
<CCardBody>
|
|
<CRow>
|
|
<CCol col="12" sm="6">
|
|
<CCallout color="info">
|
|
<small class="text-muted">جمع کل</small><br>
|
|
<strong class="h4">{{ reports.total.toLocaleString() + ' ریال' }}</strong>
|
|
</CCallout>
|
|
</CCol>
|
|
<CCol col="12" sm="6">
|
|
<CCallout color="danger">
|
|
<small class="text-muted">تعداد سفارشات</small><br>
|
|
<strong class="h4">{{ reports.count }}</strong>
|
|
</CCallout>
|
|
</CCol>
|
|
</CRow>
|
|
</CCardBody>
|
|
</CCard>
|
|
|
|
<!-- <CCard>-->
|
|
<!-- <CCardHeader>-->
|
|
<!-- <strong>-->
|
|
<!-- <span>نمودار تعداد سفارشات</span>-->
|
|
<!-- </strong>-->
|
|
<!-- </CCardHeader>-->
|
|
<!-- <CCardBody>-->
|
|
<!-- <canvas id="myChart" width="400" height="400"></canvas>-->
|
|
<!-- </CCardBody>-->
|
|
<!-- </CCard>-->
|
|
|
|
<CCard>
|
|
<CCardHeader>
|
|
<slot name="header">
|
|
<span>{{ list_title }}</span>
|
|
</slot>
|
|
</CCardHeader>
|
|
<CCardBody>
|
|
<CRow>
|
|
<CCol sm="6">
|
|
<div class="mt-3">
|
|
<span>
|
|
<i class="fal fa-money-bill-wave"></i>
|
|
جمع کل:
|
|
</span>
|
|
<span>{{reports.total.toLocaleString() + ' ریال'}}</span>
|
|
</div>
|
|
<div class="mt-3">
|
|
<span>
|
|
<i class="fal fa-money-bill-wave"></i>
|
|
جمع پرداخت آنلاین:
|
|
</span>
|
|
<span>{{reports.payOnline.toLocaleString() + ' ریال'}}</span>
|
|
</div>
|
|
<div class="mt-3">
|
|
<span>
|
|
<i class="fal fa-money-bill-wave"></i>
|
|
جمع هزینه ارسال:
|
|
</span>
|
|
<span>{{reports.routePrice.toLocaleString() + ' ریال'}}</span>
|
|
</div>
|
|
</CCol>
|
|
<CCol sm="6">
|
|
<div class="mt-3">
|
|
<span>
|
|
<i class="fal fa-money-bill-wave"></i>
|
|
جمع کل مبلغ استفاده شده کیف پول:
|
|
</span>
|
|
<span>{{reports.bagCost.toLocaleString() + ' ریال'}}</span>
|
|
</div>
|
|
<div class="mt-3">
|
|
<span>
|
|
<i class="fal fa-money-bill-wave"></i>
|
|
جمع امتیاز استفاده شده:
|
|
</span>
|
|
<span>{{reports.scorePoint}}</span>
|
|
</div>
|
|
<div class="mt-3">
|
|
<span>
|
|
<i class="fal fa-money-bill-wave"></i>
|
|
جمع ارزش امتیازات استفاده شده:
|
|
</span>
|
|
<span>{{reports.scoreCost.toLocaleString() + ' ریال'}}</span>
|
|
</div>
|
|
</CCol>
|
|
</CRow>
|
|
</CCardBody>
|
|
</CCard>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import moment from 'moment-jalaali'
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
title: 'گزارشات',
|
|
list_title: 'گزارش',
|
|
// base data
|
|
reports: null,
|
|
startDate : '',
|
|
endDate : '',
|
|
// validation
|
|
validation: {}
|
|
}
|
|
},
|
|
watch: {
|
|
|
|
},
|
|
computed: {
|
|
|
|
},
|
|
methods: {
|
|
jDate(date) {
|
|
return moment(date, 'X').format('jYYYY/jMM/jDD')
|
|
},
|
|
getReports(){
|
|
this.validation = {}
|
|
const data = {
|
|
startDate : this.startDate,
|
|
endDate :this.endDate
|
|
}
|
|
|
|
this.$axios.$post(`/api/admin/order/report`, data)
|
|
.then(response => {
|
|
this.reports = response
|
|
})
|
|
.catch(err => {
|
|
if (err.response.status === 401) {
|
|
return this.$message({
|
|
type: 'error',
|
|
message: 'لطفا دوباره وارد سیستم شوید.'
|
|
})
|
|
}
|
|
if (err.response.status === 422) {
|
|
this.validation = err.response.data.validation
|
|
this.$message({
|
|
type: 'error',
|
|
message: 'اطلاعات رو بررسی و دوباره تلاش کنید'
|
|
})
|
|
} else {
|
|
this.$message({
|
|
type: 'error',
|
|
message: err.response.data.message
|
|
})
|
|
}
|
|
})
|
|
}
|
|
},
|
|
head() {
|
|
return {
|
|
title: this.title
|
|
}
|
|
},
|
|
// async mounted() {
|
|
// const counts = {};
|
|
// // this.customers.forEach(function (x) { counts[x.job] = (counts[x.job] || 0) + 1; });
|
|
// let keys = [1,2,3,4,5,6,7];
|
|
// let values = [10,15,4,5,68,15,1];
|
|
//
|
|
// const CHART_COLORS = {
|
|
// red: 'rgb(255, 99, 132)',
|
|
// orange: 'rgb(255, 159, 64)',
|
|
// yellow: 'rgb(255, 205, 86)',
|
|
// green: 'rgb(75, 192, 192)',
|
|
// blue: 'rgb(54, 162, 235)',
|
|
// purple: 'rgb(153, 102, 255)',
|
|
// grey: 'rgb(201, 203, 207)'
|
|
// };
|
|
//
|
|
// const ctx = document.getElementById('myChart');
|
|
// const myChart = new Chart(ctx, {
|
|
// type: 'line',
|
|
// data: {
|
|
// labels: keys,
|
|
// datasets: [{
|
|
// // label: '# of Votes',
|
|
// data: values,
|
|
// borderColor: 'rgb(54, 162, 235)',
|
|
// fill: false,
|
|
// borderWidth: 2
|
|
// }]
|
|
// },
|
|
// options: {
|
|
// responsive: true,
|
|
// legend: {
|
|
// position: 'top',
|
|
// },
|
|
// scales: {
|
|
// y: {
|
|
// beginAtZero: true
|
|
// }
|
|
// }
|
|
// }
|
|
// });
|
|
// },
|
|
layout: 'admin',
|
|
async asyncData({$axios, query, error, params}) {
|
|
try {
|
|
const reports = await $axios.$post(`/api/admin/order/report/${params?.branch}`)
|
|
return {
|
|
reports
|
|
}
|
|
} catch (e) {
|
|
if (e?.response?.status === 401) {
|
|
error({
|
|
status: 401,
|
|
message: 'شما اجازه دسترسی به این صفحه را ندارید لطفا دوباره وارد شوید'
|
|
})
|
|
} else {
|
|
error({
|
|
status: 500,
|
|
message: "مشکلی در گرفتن اطلاعات بوجود آمده است",
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|
|
.el-button:focus {
|
|
outline-color: #39f !important;
|
|
}
|
|
</style>
|