<template>
  <div class="page-header-index-wide">
    <a-row :gutter="24">
      <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
        <chart-card :loading="loading" title="受理量" :total="cardCount.sll | NumberFormat">
          <a-tooltip title="指标说明" slot="action">
            <a-icon type="info-circle-o"/>
          </a-tooltip>
          <div>
            <mini-area :dataSource="chartData.sll"/>
          </div>
          <template slot="footer">今日受理量:<span>{{ todaySll }}</span></template>
        </chart-card>
      </a-col>
      <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
        <chart-card :loading="loading" title="办结量" :total="cardCount.bjl | NumberFormat">
          <a-tooltip title="指标说明" slot="action">
            <a-icon type="info-circle-o"/>
          </a-tooltip>
          <div>
            <mini-area :dataSource="chartData.bjl"/>
          </div>
          <template slot="footer">今日办结量:<span>{{ todayBjl }}</span></template>
        </chart-card>
      </a-col>
      <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
        <chart-card :loading="loading" title="用户受理量" :total="cardCount.isll | NumberFormat">
          <a-tooltip title="指标说明" slot="action">
            <a-icon type="info-circle-o"/>
          </a-tooltip>
          <div>
            <mini-bar :dataSource="chartData.isll"/>
          </div>
          <template slot="footer">用户今日受理量:<span>{{ todayISll }}</span></template>
        </chart-card>
      </a-col>
      <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
        <chart-card :loading="loading" title="用户办结量" :total="cardCount.ibjl | NumberFormat">
          <a-tooltip title="指标说明" slot="action">
            <a-icon type="info-circle-o"/>
          </a-tooltip>
          <div>
            <mini-bar :dataSource="chartData.ibjl"/>
          </div>
          <template slot="footer">用户今日办结量:<span>{{ todayIBjl }}</span></template>
        </chart-card>
      </a-col>
    </a-row>

    <a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}">
      <div class="salesCard">
        <a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
          <div class="extra-wrapper" slot="tabBarExtraContent">
            <div class="extra-item">
              <a>今日</a>
              <a>本周</a>
              <a>本月</a>
              <a>本年</a>
            </div>
            <a-range-picker :style="{width: '256px'}"/>
          </div>

          <a-tab-pane loading="true" tab="受理监管" key="1">
            <a-row>
              <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
                <bar title="受理量统计"/>
              </a-col>
              <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">

                <a-card title="快速开始 / 便捷导航" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
                  <div class="item-group">
                    <a-row>
                      <a-col :class="'more-btn'" :span="12" v-for="(item,index) in registerTypeList"
                             :key=" 'registerType'+index ">
                        <a-button @click="goPage(index)" style="margin-bottom:10px" size="small" type="primary" ghost>
                          {{ item.text }}
                        </a-button>
                      </a-col>
                    </a-row>
                  </div>
                </a-card>

              </a-col>
            </a-row>
          </a-tab-pane>

          <a-tab-pane tab="交互监管" key="2">
            <a-row>
              <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
                <bar-multid :dataSource="jhjgData" :fields="jhjgFields" title="平台与部门交互量统计"></bar-multid>
              </a-col>
              <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">

                <a-card title="快速开始 / 便捷导航" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
                  <div class="item-group">
                    <a-row>
                      <a-col :class="'more-btn'" :span="12" v-for="(item,index) in registerTypeList"
                             :key=" 'registerType'+index ">
                        <a-button @click="goPage(index)" style="margin-bottom:10px" size="small" type="primary" ghost>
                          {{ item.text }}
                        </a-button>
                      </a-col>
                    </a-row>
                  </div>
                </a-card>

              </a-col>
            </a-row>
          </a-tab-pane>

          <a-tab-pane tab="效率监管" key="3">
            <a-row>
              <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
                <line-chart-multid :dataSource="xljgData" :fields="xljgFields" title="平台与部门交互效率统计"></line-chart-multid>
              </a-col>
              <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">

                <a-card title="快速开始 / 便捷导航" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
                  <div class="item-group">
                    <a-row>
                      <a-col :class="'more-btn'" :span="12" v-for="(item,index) in registerTypeList"
                             :key=" 'registerType'+index ">
                        <a-button @click="goPage(index)" style="margin-bottom:10px" size="small" type="primary" ghost>
                          {{ item.text }}
                        </a-button>
                      </a-col>
                    </a-row>
                  </div>
                </a-card>

              </a-col>
            </a-row>
          </a-tab-pane>

          <a-tab-pane tab="存储监管" key="4">
            <a-row>
              <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
                <a-row>
                  <template v-if="diskInfo && diskInfo.length>0">
                    <a-col :span="12" v-for="(item,index) in diskInfo" :key=" 'diskInfo'+index ">
                      <dash-chart-demo :title="item.name" :dataSource="item.restPPT"></dash-chart-demo>
                    </a-col>
                  </template>
                </a-row>
              </a-col>

              <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">

                <a-card title="快速开始 / 便捷导航" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
                  <div class="item-group">
                    <a-row>
                      <a-col :class="'more-btn'" :span="10" v-for="(item,index) in registerTypeList"
                             :key=" 'registerType'+index ">
                        <a-button @click="goPage(index)" style="margin-bottom:10px" size="small" type="primary" ghost>
                          {{ item.text }}
                        </a-button>
                      </a-col>
                    </a-row>
                  </div>
                </a-card>

              </a-col>
            </a-row>
          </a-tab-pane>

        </a-tabs>

      </div>
    </a-card>

    <a-row :gutter="12">
      <a-card :loading="loading" :class="{ 'anty-list-cust':true }" :bordered="false" :style="{ marginTop: '24px' }">

        <a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
          <div class="extra-wrapper" slot="tabBarExtraContent">
            <a-radio-group defaultValue="1">
              <a-radio-button value="1">转移登记</a-radio-button>
              <a-radio-button value="2">抵押登记</a-radio-button>
            </a-radio-group>
          </div>

          <a-tab-pane loading="true" tab="业务流程限时监管" key="1">

            <a-table :dataSource="dataSource1" size="default" rowKey="id" :columns="columns" :pagination="ipagination">
              <template slot="flowRate" slot-scope="text, record, index">
                <a-progress :percent="getFlowRateNumber(record.flowRate)" style="width:80px"/>
              </template>
            </a-table>
          </a-tab-pane>

          <a-tab-pane loading="true" tab="业务节点限时监管" key="2">
            <a-table :dataSource="dataSource2" size="default" rowKey="id" :columns="columns2" :pagination="ipagination">
              <template slot="flowRate" slot-scope="text, record, index">
                <span style="color: red;">{{ record.flowRate }}分钟</span>
              </template>
            </a-table>
          </a-tab-pane>

        </a-tabs>


      </a-card>
    </a-row>
  </div>
</template>

<script>
import ChartCard from '@/components/ChartCard'
import ACol from "ant-design-vue/es/grid/Col"
import ATooltip from "ant-design-vue/es/tooltip/Tooltip"
import MiniArea from '@/components/chart/MiniArea'
import MiniBar from '@/components/chart/MiniBar'
import LineChartMultid from '@/components/chart/LineChartMultid'
import AreaChartTy from '@/components/chart/AreaChartTy'
import DashChartDemo from '@/components/chart/DashChartDemo'
import BarMultid from '@/components/chart/BarMultid'
import MiniProgress from '@/components/chart/MiniProgress'
import RankList from '@/components/chart/RankList'
import Bar from '@/components/chart/Bar'
import Trend from '@/components/Trend'
import {getAction} from '@/api/manage'
import {filterObj} from '@/utils/util'
import moment from 'dayjs'

const rankList = []
for (let i = 0; i < 7; i++) {
  rankList.push({
    name: '白鹭岛 ' + (i + 1) + ' 号店',
    total: 1234.56 - i * 100
  })
}

const dataCol1 = [{
  title: '业务号',
  align: "center",
  dataIndex: 'reBizCode'
}, {
  title: '权利类型',
  align: "center",
  dataIndex: 'droitType'
}, {
  title: '登记类型',
  align: "center",
  dataIndex: 'registeType'
}, {
  title: '座落',
  align: "center",
  dataIndex: 'beLocated'
}, {
  title: '权利人',
  align: "center",
  dataIndex: 'qlr'
}, {
  title: '义务人',
  align: "center",
  dataIndex: 'ywr'
}, {
  title: '受理人',
  align: "center",
  dataIndex: 'acceptBy'
}, {
  title: '受理时间',
  align: "center",
  dataIndex: 'acceptDate'
}, {
  title: '当前节点',
  align: "center",
  dataIndex: 'curNode'
}, {
  title: '办理进度',
  align: "center",
  dataIndex: 'flowRate',
  scopedSlots: {customRender: 'flowRate'}
}];

const dataCol2 = [{
  title: '业务号',
  align: "center",
  dataIndex: 'reBizCode'
}, {
  title: '权利类型',
  align: "center",
  dataIndex: 'droitType'
}, {
  title: '登记类型',
  align: "center",
  dataIndex: 'registeType'
}, {
  title: '座落',
  align: "center",
  dataIndex: 'beLocated'
}, {
  title: '权利人',
  align: "center",
  dataIndex: 'qlr'
}, {
  title: '义务人',
  align: "center",
  dataIndex: 'ywr'
}, {
  title: '受理人',
  align: "center",
  dataIndex: 'acceptBy'
}, {
  title: '发起时间',
  align: "center",
  dataIndex: 'acceptDate'
}, {
  title: '当前节点',
  align: "center",
  dataIndex: 'curNode'
}, {
  title: '超时时间',
  align: "center",
  dataIndex: 'flowRate',
  scopedSlots: {customRender: 'flowRate'}
}];

const jhjgData = [
  {
    type: '房管',
    '一月': 900,
    '二月': 1120,
    '三月': 1380,
    '四月': 1480,
    '五月': 1450,
    '六月': 1100,
    '七月': 1300,
    '八月': 900,
    '九月': 1000,
    '十月': 1200,
    '十一月': 600,
    '十二月': 900
  },
  {
    type: '税务',
    '一月': 1200,
    '二月': 1500,
    '三月': 1980,
    '四月': 2000,
    '五月': 1000,
    '六月': 600,
    '七月': 900,
    '八月': 1100,
    '九月': 1300,
    '十月': 2000,
    '十一月': 900,
    '十二月': 1100
  },
  {
    type: '不动产',
    '一月': 2000,
    '二月': 1430,
    '三月': 1300,
    '四月': 1400,
    '五月': 900,
    '六月': 500,
    '七月': 600,
    '八月': 1000,
    '九月': 600,
    '十月': 1000,
    '十一月': 1500,
    '十二月': 1200
  }
]
const jhjgFields = [
  '一月', '二月', '三月', '四月', '五月', '六月',
  '七月', '八月', '九月', '十月', '十一月', '十二月'
]


const xljgData = [
  {type: '一月', "房管": 1.12, "税务": 1.55, "不动产": 1.2},
  {type: '二月', "房管": 1.65, "税务": 1.32, "不动产": 1.42},
  {type: '三月', "房管": 1.85, "税务": 1.1, "不动产": 1.5},

  {type: '四月', "房管": 1.33, "税务": 1.63, "不动产": 1.4},
  {type: '五月', "房管": 1.63, "税务": 1.8, "不动产": 1.7},
  {type: '六月', "房管": 1.85, "税务": 1.98, "不动产": 1.8},

  {type: '七月', "房管": 1.98, "税务": 1.5, "不动产": 1.76},
  {type: '八月', "房管": 1.48, "税务": 1.2, "不动产": 1.3},
  {type: '九月', "房管": 1.41, "税务": 1.9, "不动产": 1.6},

  {type: '十月', "房管": 1.1, "税务": 1.1, "不动产": 1.4},
  {type: '十一月', "房管": 1.85, "税务": 1.6, "不动产": 1.5},
  {type: '十二月', "房管": 1.5, "税务": 1.4, "不动产": 1.3}
]
const xljgFields = ["房管", "税务", "不动产"]
export default {
  name: "Analysis",
  components: {
    ATooltip,
    ACol,
    ChartCard,
    MiniArea,
    MiniBar,
    MiniProgress,
    RankList,
    Bar,
    Trend,
    LineChartMultid,
    AreaChartTy,
    DashChartDemo,
    BarMultid
  },
  data() {
    return {
      xljgData,
      xljgFields,
      jhjgData,
      jhjgFields,
      loading: true,
      rankList,
      zsll: 0,
      zbjl: 0,
      todaySll: 0,
      todayBjl: 0,
      todayISll: 0,
      todayIBjl: 0,
      registerTypeList: [{
        text: "业务受理"
      }, {
        text: "业务管理"
      }, {
        text: "文件管理"
      }, {
        text: "信息查询"
      }],
      // 分页参数
      ipagination: {
        current: 1,
        pageSize: 5,
        pageSizeOptions: ['10', '20', '30'],
        showTotal: (total, range) => {
          return range[0] + "-" + range[1] + " 共" + total + "条"
        },
        showQuickJumper: true,
        showSizeChanger: true,
        total: 0
      },
      //数据集
      dataSource: [],
      dataSource1: [],
      dataSource2: [],
      url: {
        analysis: "/sps/register/analysis",
        list: "sps/register/virtualList",
        countSll: "sps/register/sllTenDaysCount",
        countBjl: "sps/register/bjlTenDaysCount",
        countISll: 'sps/register/ISllTenDaysCount',
        countIBjl: 'sps/register/IBjlTenDaysCount',
        queryDiskInfo: 'sys/actuator/redis/queryDiskInfo'
      },
      chartData: {
        sll: [],
        bjl: [],
        isll: [],
        ibjl: []
      },
      cardCount: {
        sll: 0,
        bjl: 0,
        isll: 0,
        ibjl: 0
      },
      columns: dataCol1,
      columns2: dataCol2,
      diskInfo: []
    }
  },
  methods: {
    goPage(index) {
      if (index == 0) {
        this.$router.push({
          path: '/isps/registerStepForm',
          name: 'isps-registerStepForm',
        });
      } else if (index == 1) {
        this.$router.push({
          path: '/isps/registerList',
          name: 'isps-registerList',
        });

      } else if (index == 2) {
        this.$router.push({
          path: '/isps/fileManage',
          name: 'isps-fileManage',
        });
      } else if (index == 3) {
        this.$router.push({
          path: '/isps/infoSearch',
          name: 'isps-infoSearch',
        });
      }
    },
    loadList(arg) {
      if (arg === 1) {
        this.ipagination.current = 1;
      }
      var params = this.getQueryParams();//查询条件
      getAction(this.url.list, params).then((res) => {
        console.log("dsdsd", res.result)
        this.dataSource1 = res.result.data1;
        this.dataSource2 = res.result.data2;
        this.ipagination.total = 5;
      });
    },
    getQueryParams() {
      var param = {flowStatus: "-3"};
      param.pageNo = this.ipagination.current;
      param.pageSize = this.ipagination.pageSize;
      return filterObj(param);
    },
    formatRespectiveHoldCert(value) {
      return (value == "1" || eval(value)) ? "是" : "否"
    },
    formatCertFormat(value) {
      if (value == "1") {
        return "单一版"
      } else if (value == "2") {
        return "集成版"
      } else {
        return value;
      }
    },
    getFlowRateNumber(value) {
      return Number(value)
    },
    getFlowPercent(record) {
      if (record.flowStatus == "3") {
        return 100
      } else if (record.flowStatus == "0") {
        return 0
      } else {
        return record.flowRate
      }
    },
    getFlowStatus(status) {
      if (status == "4") {
        return "exception";
      } else if (status == "0") {
        return "normal";
      } else if (status == "3") {
        return "success";
      } else {
        return "active";
      }

    },
    queryCount() {
      getAction(this.url.analysis).then((res) => {
        if (res.success) {
          this.cardCount = res.result
        }
        console.log(res);
      });
    },

    loadDiskInfo() {
      getAction(this.url.queryDiskInfo).then((res) => {
        if (res.success) {
          console.log(res.result)
          let one = 0, two = "";
          for (let a in res.result) {
            let tempNum = Number(res.result[a].max)
            if (tempNum > one) {
              one = tempNum
              two = res.result[a].name
            }
          }
          let ontItem = res.result.filter((item) => {
            return item.name == two
          })[0]
          ontItem.restPPT = ontItem.restPPT / 10
          this.diskInfo.push(ontItem);

          if (res.result.length > 1) {
            let one2 = 0, two2 = "";
            for (let a in res.result) {
              if (res.result[a].name == two) {
                continue;
              }
              let tempNum = Number(res.result[a].max)
              if (tempNum > one2) {
                one2 = tempNum
                two2 = res.result[a].name
              }
            }
            let one2Item = res.result.filter((item) => {
              return item.name == two2
            })[0]
            one2Item.restPPT = one2Item.restPPT / 10
            this.diskInfo.push(one2Item);
          }

        } else {
          console.log(res.message)
        }
      })
    },
    loadChartData() {
      getAction(this.url.countSll).then((res) => {
        if (res.success) {
          let map = res.result;
          for (var key in map) {
            let dataStr = key;
            let value = map[key];
            let today = moment(new Date()).format('YYYY-MM-DD');
            if (dataStr == today) {
              this.todaySll = map[today];
            }
            this.chartData.sll.push({
              x: dataStr,
              y: value
            });
          }
        }

      }),
        getAction(this.url.countBjl).then((res) => {
          if (res.success) {
            let map = res.result;
            for (var key in map) {
              let dataStr = key;
              let value = map[key];
              let today = moment(new Date()).format('YYYY-MM-DD');
              if (dataStr == today) {
                this.todayBjl = map[today];
              }
              this.chartData.bjl.push({
                x: dataStr,
                y: value
              });
            }
          }
        }),
        getAction(this.url.countISll).then((res) => {
          if (res.success) {
            let map = res.result;
            for (var key in map) {
              let dataStr = key;
              let value = map[key];
              let today = moment(new Date()).format('YYYY-MM-DD');
              if (dataStr == today) {
                this.todayISll = map[today];
              }
              this.chartData.isll.push({
                x: key,
                y: value
              });
            }
          }
        }),
        getAction(this.url.countIBjl).then((res) => {
          if (res.success) {
            let map = res.result;
            for (var key in map) {
              let dataStr = key;
              let value = map[key];
              let today = moment(new Date()).format('YYYY-MM-DD');
              if (dataStr == today) {
                this.todayIBjl = map[today];
              }
              this.chartData.ibjl.push({
                x: key,
                y: value
              });
            }
          }
        })
    }
  },
  created() {
    this.loadDiskInfo()
    this.queryCount();
    this.loadChartData();
    this.loadList(1);
    setTimeout(() => {
      this.loading = !this.loading
    }, 1000)
  }
}
</script>

<style lang="less" scoped>
.extra-wrapper {
  line-height: 55px;
  padding-right: 24px;

  .extra-item {
    display: inline-block;
    margin-right: 24px;

    a {
      margin-left: 24px;
    }
  }
}

.item-group {
  padding: 20px 0 8px 24px;
  font-size: 0;

  a {
    color: rgba(0, 0, 0, 0.65);
    display: inline-block;
    font-size: 14px;
    margin-bottom: 13px;
    width: 25%;
  }
}

.item-group {
  .more-btn {
    margin-bottom: 13px;
    text-align: center;
  }
}

.list-content-item {
  color: rgba(0, 0, 0, .45);
  display: inline-block;
  vertical-align: middle;
  font-size: 14px;
  margin-left: 40px;
}

@media only screen and (min-width: 1600px) {
  .list-content-item {
    margin-left: 60px;
  }
}

@media only screen and (max-width: 1300px) {
  .list-content-item {
    margin-left: 20px;
  }

  .width-hidden4 {
    display: none
  }
}

.list-content-item {
  span {
    line-height: 20px;
  }
}

.list-content-item {
  p {
    margin-top: 4px;
    margin-bottom: 0;
    line-height: 22px;
  }
}

.anty-list-cust {
  .ant-list-item-meta {
    flex: 0.3 !important;
  }
}

.anty-list-cust {
  .ant-list-item-content {
    flex: 1 !important;
    justify-content: flex-start !important;
    margin-left: 20px;
  }
}


</style>