<template>
  <div class="page">
    <el-row>
      <el-col :span="24">
        <el-card class="box-card">
          <div slot="header">
            <span class="card-title">订单数据</span>
          </div>
          <div class="flex">
            <div class="orderData flex ac">
              <div class="orderData-left flex ac fs">
                <i style="font-size: 40px; color:#1ABC9C" class="el-icon-tickets"></i>
                <div>
                  <div>今日订单总数</div>
                  <div>{{ orderData.total }}</div>
                </div>
              </div>
              <div class="orderData-right oneflex flex jw ae">
                <div class="orderData-right-item">
                  <span>待退款订单</span>
                  <span>({{ orderData.daiTuiKuan }})</span>
                </div>
                <div class="orderData-right-item">
                  <span>待核销订单</span>
                  <span>({{ orderData.daiHeXiao }})</span>
                </div>
                <div class="orderData-right-item mt">
                  <span>已核销订单</span>
                  <span>({{ orderData.yiHeXiao }})</span>
                </div>
                <div class="orderData-right-item mt">
                  <span>已退款订单</span>
                  <span>({{ orderData.yiTuiKuan }})</span>
                </div>
              </div>
            </div>
          </div>
        </el-card></el-col
      >
    </el-row>
    <el-row :gutter="20">
      <el-col :span="12">
        <el-card class="box-card">
          <div slot="header">
            <span class="card-title">商品总览</span>
          </div>
          <div class="product-card flex js ac">
            <div class="product-card-item" v-for="(item, index) in productList" :key="index">
              <div class="number">{{ item.currentNum }}</div>
              <div>{{ item.productStatus }}</div>
            </div>
          </div>
        </el-card>
      </el-col>
      <el-col :span="12">
        <el-card class="box-card">
          <div slot="header">
            <span class="card-title">用户总览</span>
          </div>
          <div class="product-card flex js ac">
            <div class="product-card-item">
              <div class="number">100</div>
              <div>今日新增</div>
            </div>
            <div class="product-card-item">
              <div class="number">100</div>
              <div>昨日新增</div>
            </div>

            <div class="product-card-item">
              <div class="number">100</div>
              <div>本月新增</div>
            </div>

            <div class="product-card-item">
              <div class="number">100</div>
              <div>会员总数</div>
            </div>
          </div>
        </el-card>
      </el-col>
    </el-row>
    <el-row>
      <el-col :span="24">
        <el-card class="box-card">
          <div slot="header">
            <span class="card-title">订单统计</span>
          </div>
          <div class="orderStatistics-card flex">
            <div class="orderStatistics-card-left flex column jc">
              <div class="orderStatistics-card-left-item">
                <div class="orderStatistics-card-left-item-title">本月订单总数</div>
                <div class="orderStatistics-card-left-item-number">{{ month }}</div>
                <!-- <div class="orderStatistics-card-left-item-title">10% 同比上周</div> -->
              </div>
              <div class="orderStatistics-card-left-item mt">
                <div class="orderStatistics-card-left-item-title">本周订单数量</div>
                <div class="orderStatistics-card-left-item-number">{{ week }}</div>
                <!-- <div class="orderStatistics-card-left-item-title">10% 同比上周</div> -->
              </div>
            </div>
            <div class="orderStatistics-card-right oneflex">
              <div class="flex ac">
                <div style="width: 100%;">近一周订单统计</div>
                <el-date-picker
                  v-model="createTime"
                  type="daterange"
                  align="right"
                  unlink-panels
                  value-format="yyyy-MM-dd"
                  range-separator="~"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                  :picker-options="pickerOptions"
                >
                </el-date-picker>
                <el-button type="primary" @click="userSearchs" style="margin-left:10px">查询</el-button>
              </div>

              <div style="width: 100%; height:500px;margin-top:20px" id="chart"></div>
            </div>
          </div>
        </el-card>
      </el-col>
    </el-row>
  </div>
</template>

<script>
import echarts from 'echarts'
import orderInfoApi from '@/api/order/orderInfo.js'

export default {
  filters: {},
  data() {
    return {
      myChart: null,
      createTime: '',
      orderData: {},
      startTime: null,
      endTime: null,
      week: null,
      month: null,
      option: {
        color: ['#DBEEFC'],
        grid: {
          x: 50,
          y: 25,
          x2: 30,
          y2: 35
        },
        tooltip: {
          trigger: 'item'
        },
        xAxis: {
          type: 'category',
          boundaryGap: false
          // data: ['07-01周六', '07-02周日', '07-03周一', '07-04周二', '07-05周三', '07-06周四', '07-07周五']
        },
        yAxis: {
          type: 'value'
        },
        series: [
          {
            // data: [820, 932, 901, 934, 1290, 1330, 1320],
            type: 'line',
            smooth: true,
            itemStyle: {
              color: '#49A9EE',
              normal: {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                  {
                    offset: 0,
                    color: '#49A9EE' // 起始颜色
                  },
                  {
                    offset: 1,
                    color: '#DBEEFC' // 结束颜色
                  }
                ]),
                lineStyle: {
                  width: 2 // 线条宽度
                }
              }
            },
            areaStyle: {}
          }
        ]
      },
      pickerOptions: {
        shortcuts: [
          // {
          //   text: '今天',
          //   onClick(picker) {
          //     const end = new Date()
          //     const start = new Date()
          //     picker.$emit('pick', [start, end])
          //   }
          // },
          {
            text: '最近一周',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近一个月',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
              picker.$emit('pick', [start, end])
            }
          }
        ]
      },
      productList: []
    }
  },
  created() {
    // this.init()
  },
  mounted() {
    this.myChart = echarts.init(document.getElementById('chart'))
    var DaysAgo = this.timeBefore()
    var sevenDaysAgo = this.timeBefore7()
    this.createTime = [new Date(sevenDaysAgo), new Date(DaysAgo)]

    this.getMainDataOne()
    this.getMainDataTwo(sevenDaysAgo, DaysAgo)
    this.getProductOverview()
  },
  methods: {
    // 表格搜索
    userSearchs() {
      if (this.createTime !== null && this.createTime.length !== 0) {
        if (this.isDate(this.createTime[0])) {
          this.startTime = this.createTime[0]
          this.endTime = this.createTime[1]
        } else {
          var time1 = this.getSimpleDate(this.createTime[0])
          var time2 = this.getSimpleDate(this.createTime[1])
          this.startTime = time1
          this.endTime = time2
        }

        this.getMainDataTwo(this.startTime, this.endTime)
      } else {
        this.$message.error('请选择要查询的时间段！')
      }
    },
    // 首页订单数据
    async getMainDataOne() {
      await orderInfoApi.getMainDataOne().then(res => {
        if ((res.code = 20000)) {
          this.orderData = res.data
        }
      })
    },
    async getMainDataTwo(startTime, endTime) {
      await orderInfoApi.getMainDataTwo({ createTimeStart: startTime, createTimeEnd: endTime }).then(res => {
        if ((res.code = 20000)) {
          this.week = res.data.week
          this.month = res.data.month
          this.option.xAxis.data = res.data.date
          this.option.series[0].data = res.data.value

          this.myChart.setOption(this.option)
        }
      })
    },
    async getProductOverview() {
      await orderInfoApi.getProductOverview().then(res => {
        if ((res.code = 20000)) {
          this.productList = res.data
        }
      })
    },
    timeBefore(date) {
      if (!date) {
        date = new Date()
      }
      var y = date.getFullYear()
      var m = date.getMonth() + 1
      var d = date.getDate()
      if (d < 0) {
        m = date.getMonth()
        var d1 = new Date(y, m, 0)
        var d2 = d1.getDate()
        return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d2 + d)
      } else {
        return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d)
      }
    },
    timeBefore7(date) {
      if (!date) {
        date = new Date()
      }
      var y = date.getFullYear()
      var m = date.getMonth() + 1
      var d = date.getDate() - 7
      if (d < 0) {
        m = date.getMonth()
        var d1 = new Date(y, m, 0)
        var d2 = d1.getDate()
        return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d2 + d)
      } else {
        return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d)
      }
    },
    isDate(dateStr) {
      var pattern = /^\d{4}-\d{2}-\d{2}$/
      return pattern.test(dateStr)
    },
    getSimpleDate(date) {
      var y = date.getFullYear()
      var m = date.getMonth() + 1
      m = m < 10 ? '0' + m : m
      var d = date.getDate()
      d = d < 10 ? '0' + d : d
      // var h = date.getHours()
      // var minute = date.getMinutes()
      // minute = minute < 10 ? '0' + minute : minute
      // var s = date.getSeconds()
      // s = s < 10 ? '0' + s : s
      return y + '-' + m + '-' + d
    }
  }
}
</script>

<style scoped lang="scss">
@import './index.scss';
</style>
