付延余
2022-04-29 41d6da7f5f8f0ce37c3521f6c4d639ab77ed9aac
src/pages/show/shehuiBaozhang/shehuiBaozhangChildren/shebaoShouzhiZongbiao.vue
@@ -3,316 +3,233 @@
    <div class="shebaoShouzhiZongbiao-table">
      <h1>社会保障基金统计表</h1>
      <el-table
        :cell-style="handleCellStyle"
        :data="tableData"
        style="width: 100%">
        <el-table-column
          align="center"
          prop="name"
          label="项目"
          fixed>
        </el-table-column>
        <el-table-column label="1月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
        <template v-for="(item,index) in headerArry">
          <template v-if="index == 0">
            <el-table-column
              align="center"
              :prop="item.name"
              label="项目"
              fixed>
              <template slot-scope="scope">
                <span :class="[Number(item.taxesIncome) < 0 ? 'fontColorRed' : '']" style="margin-left: 10px">{{item.name}}</span>
              </template>
            </el-table-column>
          </template>
          <el-table-column :label="item.month" align="center">
            <el-table-column
              align="center"
              label="总收入">
              <template slot-scope="scope">
                <span :class="[Number(item.totalIncome) < 0 ? 'fontColorRed' : '']" style="margin-left: 10px">{{item.totalIncome}}</span>
              </template>
            </el-table-column>
            <el-table-column
              align="center"
              label="征集收入">
              <template slot-scope="scope">
                <span :class="[Number(item.taxesIncome) < 0 ? 'fontColorRed' : '']" style="margin-left: 10px">{{item.taxesIncome}}</span>
              </template>
            </el-table-column>
            <el-table-column
              align="center"
              label="本月支出">
              <template slot-scope="scope">
                <span :class="[Number(item.pay) < 0 ? 'fontColorRed' : '']" style="margin-left: 10px">{{item.pay}}</span>
              </template>
            </el-table-column>
            <el-table-column
              align="center"
              label="本月结余">
              <template slot-scope="scope">
                <span :class="[Number(item.balance) < 0 ? 'fontColorRed' : '']" style="margin-left: 10px">{{item.balance}}</span>
              </template>
            </el-table-column>
          </el-table-column>
          <el-table-column
            align="center"
            prop="zhengjishouru"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="benyuezhichu"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="item.benyuejieyu"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="2月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="3月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="4月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="5月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="6月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="7月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="9月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="10月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="11月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="12月" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column label="本年累计" align="center">
          <el-table-column
            align="center"
            prop="totalMoney"
            label="总收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="征集收入">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月支出">
          </el-table-column>
          <el-table-column
            align="center"
            prop="totalMoney"
            label="本月结余">
          </el-table-column>
        </el-table-column>
        <el-table-column
          align="center"
          prop="name"
          label="累计结余">
        </el-table-column>
          <template v-if="index == headerArry.length - 1">
            <el-table-column
              align="center"
              :prop="item.surplus"
              label="累计结余">
              <template slot-scope="scope">
                <span :class="[Number(item.surplus) < 0 ? 'fontColorRed' : '']" style="margin-left: 10px">{{item.surplus}}</span>
              </template>
            </el-table-column>
          </template>
        </template>
      </el-table>
      <div class="shebaoShouzhiZongbiaoEcharts" id="shebaoShouzhiZongbiaoEcharts"></div>
    </div>
  </div>
</template>
<script>
  import nowSize from "../../../../libs/nowSize";
  import {getStatisticsTable,getStatisticsChart } from '@/api/shehuiBaozhang'
export default {
  name: "shebaoShouzhiZongbiao",
  data() {
    return {
      tableHead:[],
      tableData:[
        {
          name: '项目1',
          mouth: '1月',
          totalMoney: '2222',
          zhengjishouru: '12333',
          benyuezhichu:'52667',
          benyuejieyu:'2332'
        },
        {
          name: '项目2',
          mouth: '1月',
          totalMoney: '2222',
          zhengjishouru: '12333',
          benyuezhichu:'52667',
          benyuejieyu:'2332'
        }
      ]
      tableData:[],
      headerArry:[],
      echartsSeries:{}
    }
  },
  mounted() {
      this.getStatisticsTable()
     this.getStatisticsChart()
  },
  methods: {
      getStatisticsTable() {
          getStatisticsTable().then(res => {
              if(res.code == 1000) {
                  this.tableData = res.list
                  this.getData()
              }
          })
      },
      getData() {
          let row = []
          this.tableData.forEach((e,index) => {
              e.dataList.forEach((c,i) => {
                  if(index == 0) {
                      row.push({
                          name: e.item,
                          "month": c.month ,
                          "totalIncome": c.totalIncome,
                          "taxesIncome": c.taxesIncome,
                          "pay": c.pay,
                          "balance": c.balance,
                          "surplus": c.surplus || null
                      })
                  }
              })
              this.headerArry = row
              console.log(this.headerArry)
          })
      },
      shebaoShouzhiZongbiaoEcharts() {
          let myEchart = this.$echarts.init(document.getElementById('shebaoShouzhiZongbiaoEcharts'))
          let option = {
              color : ['#FF5151','#51FF5D','#FFD151','#FFD151'],
              title: {
                  text: '历年社保基金累计数据分析图',
                  left: 'center',
                  top: '8%',
                  textStyle: {
                      color: '#FFFFFF',
                      fontSize: nowSize(30)
                  },
              },
              tooltip: {
                  trigger: 'axis'
              },
              legend: {
                  itemWidth: nowSize(30),
                  itemHeight: nowSize(4),
                  itemGap: nowSize(50),
                  right:'2%',
                  top: 'center',
                  orient: 'vertical',
                  textStyle: {
                      color: '#FFFFFF',
                      fontSize: nowSize(24),
                  }
              },
              grid: {
                  top: '15%',
                  left: '4%',
                  right: '18%',
                  bottom: '9%',
                  containLabel: true
              },
              xAxis: {
                  type: 'category',
                  boundaryGap: false,
                  data: this.echartsSeries.years,
                  axisLabel: {
                      show: true,
                      textStyle: {
                          color: "#fff",
                          fontSize:nowSize(24)
                      }
                  },
                  axisLine: {
                      lineStyle: {
                          color: "#999999",
                          width: 1,
                          type: "solid"
                      }
                  },
                  splitLine: {
                      show: false
                  }
              },
              yAxis: {
                  type: 'value',
                  axisLabel: {
                      show: true,
                      textStyle: {
                          color: "#fff",
                          fontSize:nowSize(24)
                      }
                  },
                  axisLine: {
                      lineStyle: {
                          color: "#999999",
                          width: 1,
                          type: "solid"
                      }
                  },
                  splitLine: {
                      show: false
                  }
              },
              series: [
                  {
                      name: '年累计总收入',
                      type: 'line',
                      data: this.echartsSeries.income
                  },
                  {
                      name: '年累计支出',
                      type: 'line',
                      data: this.echartsSeries.pay
                  },
                  {
                      name: '年累计征缴收入',
                      type: 'line',
                      data: this.echartsSeries.taxes
                  },
                  {
                      name: '年累计结余',
                      type: 'line',
                      data:this.echartsSeries.balance
                  }
              ]
          };
          myEchart.setOption(option)
          window.addEventListener('resize',function () {
              myEchart.resize()
          })
      },
      handleCellStyle({rowIndex, columnIndex}) {
          if(columnIndex == 0) {
              return { background:'#51D2FF' }
          }
      },
    //35. 查询历年社保基金数据分析图数据接口
    getStatisticsChart() {
      getStatisticsChart().then(res => {
        if(res.code ===1000){
          this.echartsSeries = res.obj
          this.shebaoShouzhiZongbiaoEcharts()
        }
      })
    }
  }
}
</script>
@@ -386,6 +303,15 @@
      text-align: center;
      line-height: 2;
    }
    .fontColorBlue {
      color: $color-blue;
    }
    .fontColorRed {
      color: #FF3939;
    }
  }
  .shebaoShouzhiZongbiaoEcharts{
    height: calc(100% - 640px - 0.33203125rem  /* 85/256 */);
  }
}
</style>