|
|
|
|
@ -7,6 +7,9 @@
|
|
|
|
|
>
|
|
|
|
|
<div slot="content"></div>
|
|
|
|
|
<slot>
|
|
|
|
|
<span>
|
|
|
|
|
<el-switch v-model="type" :active-value="1" :inactive-value="2" active-text="季度" inactive-text="月度"></el-switch>
|
|
|
|
|
</span>
|
|
|
|
|
<span style="padding: 0 6px;word-break: keep-all;">年份</span>
|
|
|
|
|
<span>
|
|
|
|
|
<DatePicker :value="select.year" placeholder="请选择年份" type="year" placement="bottom-start" style="width: 160px"
|
|
|
|
|
@ -29,7 +32,7 @@
|
|
|
|
|
</slot>
|
|
|
|
|
</lx-header>
|
|
|
|
|
|
|
|
|
|
<xy-table :list="list" :table-item="table">
|
|
|
|
|
<xy-table ref="xyTable" :list="list" :table-item="table">
|
|
|
|
|
<template #btns> </template>
|
|
|
|
|
</xy-table>
|
|
|
|
|
|
|
|
|
|
@ -54,7 +57,9 @@ import { departmentMoney } from "@/api/static";
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
type: 1,
|
|
|
|
|
select: {
|
|
|
|
|
type: 1,//1季度,2月
|
|
|
|
|
page: 1,
|
|
|
|
|
page_size: 10,
|
|
|
|
|
keyword: "",
|
|
|
|
|
@ -62,7 +67,27 @@ export default {
|
|
|
|
|
year:""
|
|
|
|
|
},
|
|
|
|
|
list: [],
|
|
|
|
|
table: [
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
methods: { //日期选择
|
|
|
|
|
percent (a,b) {
|
|
|
|
|
if (b == 0) {
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
return (parseInt(a) / parseInt(b) * 100).toFixed(2)
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
async getList() {
|
|
|
|
|
this.select.type = this.type;
|
|
|
|
|
const res = await departmentMoney(this.select);
|
|
|
|
|
this.list = res;
|
|
|
|
|
this.$refs['xyTable'].doLayout()
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
computed: {
|
|
|
|
|
table () {
|
|
|
|
|
const type = this.select.type;
|
|
|
|
|
return [
|
|
|
|
|
{
|
|
|
|
|
label: '项目',
|
|
|
|
|
fixed: 'left',
|
|
|
|
|
@ -79,7 +104,7 @@ export default {
|
|
|
|
|
row.plan?.map((i,index) => {
|
|
|
|
|
return (
|
|
|
|
|
<el-tooltip class="item" effect="dark" content={i.name} placement="top">
|
|
|
|
|
<p class="split" style={{"background":index%2===0?'#ff000015':''}}>{i.name}</p>
|
|
|
|
|
<p class="split" style={{"background":index%2===0?'#ff000012':''}}>{i.name}</p>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
@ -100,7 +125,7 @@ export default {
|
|
|
|
|
customFn: row => {
|
|
|
|
|
return (
|
|
|
|
|
<div style="display: flex;flex-direction: column;">
|
|
|
|
|
<p class="split split__department" style="text-align: right;">{
|
|
|
|
|
<p class="split split__department" style="text-align: right;padding-right: 5px;">{
|
|
|
|
|
row.plan?.reduce((a, b) => {
|
|
|
|
|
return parseInt(a) + parseInt(b.money)
|
|
|
|
|
},0)
|
|
|
|
|
@ -108,7 +133,7 @@ export default {
|
|
|
|
|
{
|
|
|
|
|
row.plan?.map((i,index) => {
|
|
|
|
|
return (
|
|
|
|
|
<p class="split" style={{"text-align": "right","background":index%2===0?'#ff000015':''}}>{ i.money }</p>
|
|
|
|
|
<p class="split" style={{"text-align": "right","background":index%2===0?'#ff000012':''}}>{ i.money }</p>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
@ -119,18 +144,17 @@ export default {
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
...(() => {
|
|
|
|
|
let labels = new Map([
|
|
|
|
|
let quarterLabels = new Map([
|
|
|
|
|
[0, '第一季度'],
|
|
|
|
|
[1, '第二季度'],
|
|
|
|
|
[2, '第三季度'],
|
|
|
|
|
[3, '10月'],
|
|
|
|
|
[4, '11月'],
|
|
|
|
|
[5, '12月']
|
|
|
|
|
[3, '第四季度']
|
|
|
|
|
])
|
|
|
|
|
let monthLabels = new Map(Array.from({length: 12},(_,index)=>([index,`${index+1}月`])))
|
|
|
|
|
let arr = []
|
|
|
|
|
for (let z = 0;z < 6;z ++) {
|
|
|
|
|
for (let z = 0;z < (type === 1 ? 4 : 12);z ++) {
|
|
|
|
|
arr.push({
|
|
|
|
|
label: labels.get(z),
|
|
|
|
|
label: type === 1 ? quarterLabels.get(z) : monthLabels.get(z),
|
|
|
|
|
Fprop: '',
|
|
|
|
|
multiHd: [
|
|
|
|
|
{
|
|
|
|
|
@ -140,7 +164,7 @@ export default {
|
|
|
|
|
customFn: row => {
|
|
|
|
|
return (
|
|
|
|
|
<div style="display: flex;flex-direction: column;">
|
|
|
|
|
<p class="split split__department" style="text-align: right;">{
|
|
|
|
|
<p class="split split__department" style="text-align: right;padding-right: 5px;">{
|
|
|
|
|
row.plan?.reduce((a, b) => {
|
|
|
|
|
return parseInt(a) + parseInt(b.detail[z].plan_total)
|
|
|
|
|
},0)
|
|
|
|
|
@ -148,7 +172,7 @@ export default {
|
|
|
|
|
{
|
|
|
|
|
row.plan?.map((i,index) => {
|
|
|
|
|
return (
|
|
|
|
|
<p class="split" style={{"text-align": "right","background":index%2===0?'#ff000015':''}}>{ i.detail[z].plan_total }</p>
|
|
|
|
|
<p class="split" style={{"text-align": "right","background":index%2===0?'#ff000012':''}}>{ i.detail[z].plan_total }</p>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
@ -163,7 +187,7 @@ export default {
|
|
|
|
|
customFn: row => {
|
|
|
|
|
return (
|
|
|
|
|
<div style="display: flex;flex-direction: column;">
|
|
|
|
|
<p class="split split__department" style="text-align: right;">{
|
|
|
|
|
<p class="split split__department" style="text-align: right;padding-right: 5px;">{
|
|
|
|
|
row.plan?.reduce((a, b) => {
|
|
|
|
|
return parseInt(a) + parseInt(b.detail[z].act_total)
|
|
|
|
|
},0)
|
|
|
|
|
@ -186,7 +210,7 @@ export default {
|
|
|
|
|
customFn: row => {
|
|
|
|
|
return (
|
|
|
|
|
<div style="display: flex;flex-direction: column;">
|
|
|
|
|
<p class="split split__department" style="text-align: right;">{
|
|
|
|
|
<p class="split split__department" style="text-align: right;padding-right: 5px;">{
|
|
|
|
|
this.percent(row.plan?.reduce((a, b) => {
|
|
|
|
|
return parseInt(a) + parseInt(b.detail[z].act_total)
|
|
|
|
|
},0),row.plan?.reduce((a, b) => {
|
|
|
|
|
@ -196,7 +220,7 @@ export default {
|
|
|
|
|
{
|
|
|
|
|
row.plan?.map((i,index) => {
|
|
|
|
|
return (
|
|
|
|
|
<p class="split" style={{"text-align": "right","background":index%2===0?'#ff000015':''}}>{ this.percent(i.detail[z].act_total,i.detail[z].plan_total) }%</p>
|
|
|
|
|
<p class="split" style={{"text-align": "right","background":index%2===0?'#ff000012':''}}>{ this.percent(i.detail[z].act_total,i.detail[z].plan_total) }%</p>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
@ -221,7 +245,7 @@ export default {
|
|
|
|
|
{
|
|
|
|
|
row.plan?.map((i,index) => {
|
|
|
|
|
return (
|
|
|
|
|
<p class="split" style={{"text-align": "right","background":index%2===0?'#ff000015':''}}>{
|
|
|
|
|
<p class="split" style={{"text-align": "right","background":index%2===0?'#ff000012':''}}>{
|
|
|
|
|
i.detail?.reduce((a,b) => {
|
|
|
|
|
return a + parseInt(b.plan_total)
|
|
|
|
|
},0)
|
|
|
|
|
@ -233,23 +257,9 @@ export default {
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
methods: { //日期选择
|
|
|
|
|
percent (a,b) {
|
|
|
|
|
if (b == 0) {
|
|
|
|
|
return 0
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
return (parseInt(a) / parseInt(b) * 100).toFixed(2)
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
async getList() {
|
|
|
|
|
const res = await departmentMoney(this.select);
|
|
|
|
|
this.list = res;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
computed: {},
|
|
|
|
|
created() {
|
|
|
|
|
this.select.year = this.$moment().format('YYYY');
|
|
|
|
|
this.getList();
|
|
|
|
|
|