175 lines
4.3 KiB
Vue
Raw Normal View History

2024-01-24 23:15:59 +08:00
<template>
<el-card style="width: 49.9%;">
<template #header>
<div class="card-header">
<span>项目付款统计</span>
</div>
</template>
2024-01-26 00:20:03 +08:00
<div style="height:40px">
<el-date-picker v-model="year" @change='getCustom' value-format="YYYY" type="year" style="float:right"
2024-01-26 09:10:54 +08:00
:placeholder="year" />
2024-01-26 00:20:03 +08:00
</div>
2024-01-24 23:15:59 +08:00
<div style="display: flex;justify-content: space-around;">
2024-02-01 11:42:31 +08:00
<router-link :to="{
path: item.url,
query: item.query ? { year } : null
}" v-for=" item in customList" :key="item" class="header-btn">
<div>
<div>{{ item.value }}</div>
<div>{{ item.name }}</div>
</div>
</router-link>
2024-01-24 23:15:59 +08:00
</div>
2024-07-06 17:03:43 +08:00
<div class="chart">
<v-charts style="height: 300px" :option="visitorOption" :autoresize="true" />
</div>
2024-01-24 23:15:59 +08:00
</el-card>
</template>
<script setup>
2024-07-06 17:03:43 +08:00
import vCharts from 'vue-echarts'
2024-01-24 23:15:59 +08:00
import { apistatisticsprojectPayment } from '@/api/statistics'
2024-01-26 09:10:54 +08:00
const year = ref(new Date().getFullYear())
2024-07-06 17:03:43 +08:00
let visitorOption = ref({})
2024-01-26 09:10:54 +08:00
2024-01-26 00:20:03 +08:00
const showChart = ref(true)
2024-01-24 23:15:59 +08:00
const customList = reactive([
{
2024-01-25 16:31:34 +08:00
name: "年度回票金额",
2024-02-01 11:42:31 +08:00
value: 0,
url: "/construction/finance/payment/finance_receipt_record"
2024-01-24 23:15:59 +08:00
},
{
2024-01-25 16:31:34 +08:00
name: "年度付款金额",
2024-02-01 11:42:31 +08:00
value: 0,
url: "/construction/finance/payment/finance_payment_plan"
2024-01-24 23:15:59 +08:00
},
{
2024-01-25 16:31:34 +08:00
name: "年度付款计划金额",
2024-02-01 11:42:31 +08:00
value: 0,
url: "/construction/finance/payment/finance_payment_plan"
2024-01-24 23:15:59 +08:00
},
])
const labelOption = {
show: true,
rich: {
name: {}
}
};
const getCustom = async () => {
2024-01-26 00:20:03 +08:00
showChart.value = false
2024-01-29 18:13:13 +08:00
let res = await apistatisticsprojectPayment({ year: year.value })
2024-01-26 00:20:03 +08:00
showChart.value = true
await nextTick()
2024-01-24 23:15:59 +08:00
var option4 = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {
data: [res.invoice_series.name, res.payment_plan_series.name, res.payment_series.name,]
},
toolbox: {
show: true,
orient: 'vertical',
left: 'right',
top: 'center',
},
xAxis: [
{
type: 'category',
axisTick: { show: false },
data: res.column
}
],
yAxis: [
{
type: 'value'
}
],
series: [
{
name: res.invoice_series.name,
type: 'bar',
barGap: 0,
label: labelOption,
emphasis: {
focus: 'series'
},
2024-01-25 16:31:34 +08:00
data: res.invoice_series.data,
2024-01-24 23:15:59 +08:00
itemStyle: {
normal: {
label: {
}
}
}
},
{
name: res.payment_plan_series.name,
type: 'bar',
label: labelOption,
emphasis: {
focus: 'series'
},
data: res.payment_plan_series.data,
itemStyle: {
normal: {
label: {
}
}
}
},
{
name: res.payment_series.name,
type: 'bar',
label: labelOption,
emphasis: {
focus: 'series'
},
data: res.payment_series.data,
itemStyle: {
normal: {
label: {
}
}
}
},
]
};
2024-07-06 17:03:43 +08:00
visitorOption.value = option4
2024-01-24 23:15:59 +08:00
customList[0].value = res.year_invoicing_amount
customList[1].value = res.year_payment_amount
customList[2].value = res.year_payment_plan_amount
}
2024-07-06 17:03:43 +08:00
onMounted(() => {
getCustom()
})
2024-01-24 23:15:59 +08:00
</script>
<style lang="scss" scoped>
.chart {
width: 100%;
height: 300px;
}
2024-02-01 11:42:31 +08:00
.header-btn {
text-align: center;
cursor: pointer;
padding: 0px 10px;
}
.header-btn:active {
background-color: #EDEFFF;
}
2024-01-24 23:15:59 +08:00
</style>