355 lines
10 KiB
Vue
355 lines
10 KiB
Vue
<template>
|
||
<div>
|
||
<vx-card title="بیشترین گزارشات ثبت شده براساس شهرودسته" class="mobile-Chart">
|
||
<apexchart width="1000" class="width_mobile_chart" height="400" type="bar" :options="chartOptions" :series="series"></apexchart>
|
||
</vx-card>
|
||
<vx-card title="نمودار دلایل گزارش آگهی" style="margin-top: 2rem">
|
||
<a-row>
|
||
<a-col :span="24">
|
||
<div >
|
||
<apexchart ref="chartDonut" type="donut" :options="chartOptionsDonut" :series="seriesDonut"></apexchart>
|
||
</div>
|
||
</a-col>
|
||
</a-row>
|
||
</vx-card>
|
||
<ASpin type="loading" :spinning="loading">
|
||
<vx-card title="نمودارخطی أگهی های گزارش شده دربازه زمانی" style="margin-top: 2rem">
|
||
<a-form :form="form" layout="inline" :wrapper-col="{ span: 24 }" @submit="lineSubmit">
|
||
<a-form-item>
|
||
<a-date-picker placeholder="تاریخ شروع" v-decorator="['start_at', { rules: [{ required: true, message: 'لطفا مقدار را وارد کنید' }] }]"/>
|
||
</a-form-item>
|
||
<a-form-item>
|
||
<a-date-picker placeholder="تاریخ پایان" v-decorator="['end_at', { rules: [{ required: true, message: 'لطفا مقدار را وارد کنید' }] }]"/>
|
||
</a-form-item>
|
||
<a-button type="primary" html-type="submit">
|
||
بررسی
|
||
</a-button>
|
||
</a-form>
|
||
<a-row>
|
||
<a-col :span="24">
|
||
<div v-if="isShow">
|
||
<apexchart height="400" type="line" :options="chartOptionsLine" :series="seriesLine"></apexchart>
|
||
</div>
|
||
</a-col>
|
||
</a-row>
|
||
</vx-card>
|
||
</ASpin>
|
||
<vx-card title="دلایل حذف آگهی" style="margin-top: 2rem">
|
||
<a-row>
|
||
<a-col :span="24">
|
||
<div>
|
||
<apexchart type="donut" :options="chartOptionsDonutDeleteAdv" :series="seriesDonutDeleteAdv"></apexchart>
|
||
</div>
|
||
</a-col>
|
||
</a-row>
|
||
</vx-card>
|
||
<vx-card title="گزارش دهنده های شاخص" style="margin-top: 2rem">
|
||
<a-table :columns="columns" :data-source="reporterLow" bordered/>
|
||
</vx-card>
|
||
<vx-card title="ثبت کننده آگهی بابیشترین آگهی گزارش شده" style="margin-top: 2rem">
|
||
<a-table :columns="columnsMaxReporter" :data-source="maxReporter" bordered/>
|
||
</vx-card>
|
||
<vx-card title="مالک آگهی بابیشترین آگهی گزارش شده" style="margin-top: 2rem">
|
||
<a-table :columns="columnsMaxOwner" :data-source="ownerReporter" bordered/>
|
||
</vx-card>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import VueApexCharts from 'vue-apexcharts'
|
||
import axios from '@/axios'
|
||
|
||
const columns = [
|
||
{
|
||
title: 'نام',
|
||
dataIndex: 'customer.name',
|
||
key: '1',
|
||
scopedSlots: { customRender: 'action' },
|
||
},
|
||
{
|
||
title: 'موبایل',
|
||
dataIndex: 'customer.mobile',
|
||
key: '2'
|
||
},
|
||
{
|
||
title: 'تعداد آگهی ثبت شده',
|
||
dataIndex: 'total',
|
||
key: '3'
|
||
}
|
||
]
|
||
const columnsMaxReporter = [
|
||
{
|
||
title: 'نام',
|
||
dataIndex: 'name',
|
||
key: '1',
|
||
scopedSlots: { customRender: 'action' },
|
||
},
|
||
{
|
||
title: 'موبایل',
|
||
dataIndex: 'mobile',
|
||
key: '2'
|
||
},
|
||
{
|
||
title: 'تعداد آگهی گزارش شده',
|
||
dataIndex: 'count_bad_adv',
|
||
key: '3'
|
||
}
|
||
]
|
||
const columnsMaxOwner = [
|
||
{
|
||
title: 'نام',
|
||
dataIndex: 'owner_adv.name',
|
||
key: '1',
|
||
scopedSlots: { customRender: 'action' },
|
||
},
|
||
{
|
||
title: 'موبایل',
|
||
dataIndex: 'owner_adv.mobile',
|
||
key: '2'
|
||
},
|
||
{
|
||
title: 'تعداد آگهی ثبت شده',
|
||
dataIndex: 'total',
|
||
key: '3'
|
||
}
|
||
]
|
||
|
||
export default {
|
||
name: "ChartDestructiveAdv",
|
||
components:{
|
||
apexchart:VueApexCharts
|
||
},
|
||
data(){
|
||
return{
|
||
columns,
|
||
columnsMaxReporter,
|
||
columnsMaxOwner,
|
||
form: this.$form.createForm(this, {name: 'coordinated'}),
|
||
isShow:false,
|
||
reporterLow:[],
|
||
maxReporter:undefined,
|
||
ownerReporter:undefined,
|
||
series:[{
|
||
name:'sss',
|
||
data:[]
|
||
}],
|
||
seriesDonut:[],
|
||
seriesLine:[],
|
||
seriesDonutDeleteAdv:[],
|
||
chartOptionsDonut:{
|
||
xaxis: {
|
||
categories: []
|
||
}
|
||
},
|
||
chartOptions:{
|
||
chart: {
|
||
toolbar: {
|
||
show: false
|
||
}
|
||
},
|
||
xaxis: {
|
||
categories: []
|
||
}
|
||
},
|
||
chartOptionsLine:{
|
||
chart: {
|
||
toolbar: {
|
||
show: false
|
||
}
|
||
},
|
||
xaxis: {
|
||
categories: []
|
||
}
|
||
},
|
||
chartOptionsDonutDeleteAdv:{}
|
||
}
|
||
},
|
||
methods:{
|
||
lineSubmit(e) {
|
||
e.preventDefault();
|
||
this.form.validateFields(async (err, values) => {
|
||
if (!err) {
|
||
try{
|
||
const data = await this.$store.dispatch('badadv/line', values);
|
||
const x = data.map((chart)=>chart.date);
|
||
const y = data.map((chart)=>chart.total);
|
||
this.seriesLine = [{
|
||
data: y
|
||
}]
|
||
this.chartOptionsLine = {
|
||
colors: ['#FF9800'],
|
||
chart: {
|
||
toolbar: {
|
||
show: false
|
||
}
|
||
},
|
||
xaxis: {
|
||
categories: x
|
||
},
|
||
bar: {
|
||
dataLabels: {
|
||
position: 'bottom'
|
||
}
|
||
},
|
||
responsive: [
|
||
{
|
||
breakpoint: 2000,
|
||
options: {
|
||
plotOptions: {
|
||
bar: {
|
||
horizontal: false
|
||
}
|
||
},
|
||
legend: {
|
||
position: "bottom"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
this.isShow = true
|
||
this.$ntSet()
|
||
}catch (e) {
|
||
this.$ntSetError()
|
||
}finally {
|
||
|
||
}
|
||
}
|
||
})
|
||
},
|
||
async getBadAdvChartCityCollection(){
|
||
const {data} = await axios.get('/admin/badadv/chart/compare')
|
||
const x = data.map(chart=>chart.city)
|
||
const y = data.map(chart=>chart.total)
|
||
this.series=[{
|
||
data: y
|
||
}]
|
||
this.chartOptions = {
|
||
colors:['#FF9800'],
|
||
xaxis: {
|
||
categories: x,
|
||
xAxis: {
|
||
labels: {
|
||
overflow: 'right',
|
||
display: 'block',
|
||
align: 'left',
|
||
x: 5,
|
||
style: {
|
||
fontSize: '1em',
|
||
color: '#000',
|
||
width: '500px'
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
async getAdvChartCollection(){
|
||
const {data} = await axios.get('/admin/badadv/chart/reason')
|
||
const label = data.map(chart=>chart.title)
|
||
const y = data.map(chart=>chart.total)
|
||
this.seriesDonut = y
|
||
this.chartOptionsDonut = {
|
||
labels: label,
|
||
chart: {
|
||
toolbar: {
|
||
show: false
|
||
}
|
||
},
|
||
responsive: [
|
||
{
|
||
breakpoint: 2000,
|
||
options: {
|
||
plotOptions: {
|
||
bar: {
|
||
horizontal: false
|
||
}
|
||
},
|
||
legend: {
|
||
position: "bottom"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
},
|
||
async getChartDeleteAdv(){
|
||
try{
|
||
const {data} = await axios.get('/admin/badadv/chart/delete')
|
||
const label = data.map(chart=>{
|
||
if(chart.reason_delete == null){
|
||
chart.reason_delete = "سایر"
|
||
}
|
||
return chart.reason_delete
|
||
|
||
})
|
||
const y = data.map(chart=>chart.total)
|
||
this.seriesDonutDeleteAdv = y
|
||
this.chartOptionsDonutDeleteAdv = {
|
||
labels: label,
|
||
chart: {
|
||
toolbar: {
|
||
show: false
|
||
}
|
||
},
|
||
responsive: [
|
||
{
|
||
breakpoint: 2000,
|
||
options: {
|
||
plotOptions: {
|
||
bar: {
|
||
horizontal: false
|
||
}
|
||
},
|
||
legend: {
|
||
position: "bottom"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
}catch (e) {
|
||
|
||
}finally {
|
||
|
||
}
|
||
|
||
},
|
||
async getReporterLower(){
|
||
const {data} = await axios.get('/admin/badadv/chart/count')
|
||
this.reporterLow = data
|
||
},
|
||
async getMaxReporter(){
|
||
const {data} = await axios.get('/admin/badadv/chart/creator')
|
||
this.maxReporter = data
|
||
},
|
||
async getOwnerReporter(){
|
||
const {data} = await axios.get('/admin/badadv/chart/owner')
|
||
console.log(data,'data')
|
||
this.ownerReporter = data
|
||
}
|
||
},
|
||
computed: {
|
||
loading() {
|
||
return this.$store.state.badadv.loading;
|
||
}
|
||
},
|
||
mounted() {
|
||
this.getBadAdvChartCityCollection()
|
||
this.getAdvChartCollection()
|
||
this.getChartDeleteAdv()
|
||
this.getReporterLower()
|
||
this.getMaxReporter()
|
||
this.getOwnerReporter()
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style>
|
||
@media(max-width:768px){
|
||
.mobile-Chart{
|
||
overflow-x: scroll;
|
||
}
|
||
}
|
||
</style>
|