<template>

  <div style="background-color:#f7f7f7;padding:10px 10px;">
    <div class="history">
      <div style="height:58px;line-height:58px;">
        <div style="color:#0006"> <span>渠道额统计分析</span> <span style="padding:0 5px;">></span> <span
            style="color:#000000e6">销售总额统计</span></div>
      </div>
     <div >

         <!-- 顶部搜索 -->
         <div class="toolbar">
           <el-form ref="formParams" :inline="true" :model="pageIndex">
             <el-form-item label="渠道">
             <el-select  placeholder="全部"
               v-model="pageIndex.ticketChannel"
               style="width: 120px;margin-right: 15px">
               <el-option label="大麦" value="大麦" />
               <el-option label="猫眼" value="猫眼" />
               <el-option label="携程" value="携程" />
               <el-option label="美团" value="美团" />
             </el-select>
             </el-form-item>
             <el-form-item label="票种">
             <el-select  placeholder="全部"   v-model="pageIndex.ticketType"
               style="width: 120px;margin-right: 15px">
               <el-option label="电影票" value="电影票" />
               <el-option label="演唱会票" value="演唱会票" />
             </el-select>
             </el-form-item>
             <el-form-item label="日期">
               <el-date-picker
                 v-model="pageIndex.list"
                 type="daterange"

                 range-separator="至"
                 start-placeholder="开始时间"
                 end-placeholder="结束时间"
                 value-format="yyyy-MM-dd"
               />
             </el-form-item>

             <el-form-item label-width="0">
               <el-button   @click="search('formParams')" style="background-color: #3F9B6A;color: #fff">查询</el-button>
               <el-button  @click="clear('formParams')" class="buttonHover"
              style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;">重置</el-button>
             </el-form-item>
           </el-form>
         </div>
         <div style="margin-bottom:20px;">
           <el-button  style="background-color: #3F9B6A;color: #fff" @click="daochu">导出</el-button>
         </div>
     </div>
        <!-- 表格 -->
        <div class="content_table" style="padding: 15px 10px 10px 20px;background-color:#F2F3F5">
          <div style="background-color: #fff;padding: 10px;margin-bottom: 20px;">
          <div style='padding:20px 10px;background-color:#fff;'>
            <div style="display:flex;font-size:14px;justify-content: space-around">
              <div style="width:10%;border-right:1px solid #F2F2F2">
                <div style="margin-bottom: 10px;font-weight: 600;">总销售额(元)</div>
                <div style="font-weight: 600;">{{moyeOne}}</div>
              </div>
              <div style="width:10%;border-right:1px solid #F2F2F2">
                <div style="margin-bottom: 10px;font-weight: 600;">美团销售总额(元)</div>
                <div style="font-weight: 600;">{{meimoye}}</div>
              </div>
              <div style="width:10%;border-right:1px solid #F2F2F2">
                 <div style="margin-bottom: 10px;font-weight: 600;">大麦销售总额(元)</div>
                <div style="font-weight: 600;">{{moyeTwo}}</div>
              </div>
              <div style="width:10%;border-right:1px solid #F2F2F2">
                 <div style="margin-bottom: 10px;font-weight: 600;">携程销售总额(元)</div>
                 <div style="font-weight: 600;">{{moyethree}}</div>
              </div>
     <!--         <div style="width:10%;border-right:1px solid #F2F2F2">
                <div style="margin-bottom: 10px;font-weight: 600;">票种1销售总额(元)</div>
                 <div style="font-weight: 600;">100,000.00</div>
              </div>
              <div style="width:10%;border-right:1px solid #F2F2F2">
                <div style="margin-bottom: 10px;font-weight: 600;">票种1销售总额(元)</div>
                 <div style="font-weight: 600;">100,000.00</div>
              </div>
              <div style="width:10%">
                <div style="margin-bottom: 10px;font-weight: 600;">票种2销售总额(元)</div>
                 <div style="font-weight: 600;">100,000.00</div>
              </div> -->
            </div>
          </div>
       </div>
       <!-- 图表 -->
               <div style="display: flex;">
                      <div style="background-color: #fff;padding: 10px;margin-right: 10px;width: 32%;">
                        <div style="display: flex;border-bottom:1px solid #F2F2F2;justify-content: space-between;padding: 5px; 0 15px 0">
                          <div style="line-height: 200%;">总销售额趋势表</div>
                          <!-- <el-button  style="background-color: #3F9B6A;color: #fff">导出</el-button> -->
                        </div>
                        <div style="margin:10px 0 15px 0">
                           <!-- <el-date-picker

                                v-model="value1"
                                value-format="yyyy-mm-dd"
                                type="daterange"
                                range-separator="至"
                                start-placeholder="开始日期"
                                end-placeholder="结束日期">
                              </el-date-picker> -->
                        </div>
                        <div style="color:#000">单位：张</div>
                        <!--    折线图-->
                          <div ref="container1" style="width: 400px; height: 400px;"></div>

                      </div>
                      <div style="background-color: #fff;padding: 10px;margin-right: 10px;width: 32%;">
                        <div style="display: flex;border-bottom:1px solid #F2F2F2;justify-content: space-between;padding: 5px; 0 15px 0">
                          <div style="line-height: 200%;">渠道销售情况表</div>
                          <!-- <el-button  style="background-color: #3F9B6A;color: #fff">导出</el-button> -->
                        </div>
                        <!-- <div style="margin:10px 0 15px 0">
                             <el-radio-group v-model="radio1">
                                 <el-radio-button label="全部"></el-radio-button>
                                 <el-radio-button label="美团"></el-radio-button>
                                 <el-radio-button label="大麦"></el-radio-button>
                                 <el-radio-button label="携程"></el-radio-button>
                               </el-radio-group>
                        </div> -->
                        <div style="color:#000">单位：元</div>
                        <!--    柱状图-->
                          <div ref="container2" style="width: 400px; height: 400px;"></div>

                      </div>
                      <div style="background-color: #fff;padding: 10px;width: 32%;">
                        <div style="display: flex;border-bottom:1px solid #F2F2F2;justify-content: space-between;padding: 5px; 0 15px 0">
                          <div style="line-height: 200%;">票种销售额情况表</div>
                          <!-- <el-button  style="background-color: #3F9B6A;color: #fff">导出</el-button> -->
                        </div>
                        <!-- <div style="margin:10px 0 15px 0">
                           <el-radio-group v-model="radio2">
                               <el-radio-button label="全部"></el-radio-button>
                               <el-radio-button label="票种1"></el-radio-button>
                               <el-radio-button label="票种2"></el-radio-button>
                               <el-radio-button label="票种3"></el-radio-button>
                             </el-radio-group>
                        </div> -->
                        <div style="color:#000">单位：元</div>
                        <!--    柱状图-->
                          <div ref="container3" style="width: 400px; height: 400px;"></div>

                      </div>
               </div>
        </div>

    </div>
  </div>
</template>

<script>
import * as echarts from 'echarts';
import {getTotalSales,excelToTotalSales} from '@/api/piaowu'
export default {
  data() {
    return {
      value1:'',
      radio1:'',
      radio2:'',
      total: 1,
      pageSize: 10,
      currentPage: 1,
      formParams: {
        page: 1,
        pageSize: 10
      },
      tipsList: [],
       tableData: [],
              chart1:null,
              chart2:null,
              chart3:null,
 pageIndex:{
        list: [],
            page: 1,
            pageSize: 10,
            startTime:"",
            endTime:"",
            ticketChannel:"",
            ticketType:""
        },
numOne:0,
        moyeOne:0,
        numTwo:0,
        moyeTwo:0,
        meimoye:0,
        numthree:0,
        moyethree:0,
    }
  },
  mounted() {
    this.getAll()
 // this.echar(this.$refs.container)
 //        console.log(this.$refs.container2)
 //      this.echar2(this.$refs.container2)

 //      this.echar3(this.$refs.container3)
 //      this.resizeChart = () => {
 //          try {
 //            this.chart.resize()
 //            this.chart2.resize()
 //            this.chart3.resize()
 //          } catch (error) {
 //            console.log(error);
 //          }
 //        };
 //        window.addEventListener('resize', this.resizeChart, false); // false代表事件句柄在冒泡阶段执行

      // this.$nextTick(() => {
      // this.echar(this.$refs.container)
      // this.echar2(this.$refs.container2)
      // this.echar3(this.$refs.container3)
      //   this.resizeChart = () => {
      //     try {
      //       this.chart.resize()
      //       this.chart2.resize()
      //       this.chart3.resize()
      //     } catch (error) {
      //       console.log(error);
      //     }
      //   };
      //   window.addEventListener('resize', this.resizeChart, false); // false代表事件句柄在冒泡阶段执行
      // 	})
  },

  methods: {
    async getAll(){
      let res =   await getTotalSales(this.pageIndex)
      this.tableData = res.data.list
      this.total = res.data.total

      // this.echar(res.data.list)
      let numOne =0
       let moyeOne =0
       let meimoye = 0
       let numTwo =0
        let moyeTwo =0
        let numthree=0
         let moyethree =0

      this.tableData.map(item=>{
           moyeOne += Number(item.price)
        if(item.ticketChannel == '美团'){
           numOne += item.num
          meimoye = meimoye + Number(item.price)
        }
       if(item.ticketChannel == '大麦'){
          numTwo += item.num

         moyeTwo = moyeTwo + Number(item.price)
       }
       if(item.ticketChannel == '携程'){
          numthree += item.num

         moyethree = moyethree + Number(item.price)
       }
      })
    this.numOne = numOne
    this.moyeOne = moyeOne
    this.numTwo = numTwo
    this.moyeTwo = moyeTwo
    this.meimoye = meimoye
 this.numthree = numthree
this.moyethree = moyethree
this.echar2(this.tableData)
this.echar3( this.tableData)
this.echar( this.tableData)
      },
      search(){
        if(this.pageIndex.list.length !=0){
          this.pageIndex.startTime = this.pageIndex.list[0]
          this.pageIndex.endTime = this.pageIndex.list[1]
        }
        this.getAll()
      },
      clear(){
        this.pageIndex = {
          list: [],
              page: 1,
              pageSize: 10,
              startTime:"",
              endTime:"",
              ticketChannel:"",
              ticketType:""
          }
          this.getAll()
      },
    echar(datas) {
      let Dom = this.$refs.container1
      let myChart = echarts.init(Dom)
      // let processedData = datas.map(item => ({
      //   name: item.ticketChannel,
      //   value: item.num
      // }))
   let processedData = datas.reduce((accumulator, item) => {
     // 查找当前名称是否已经存在于累加器中
     let existingItemIndex = accumulator.findIndex(i => i.name === item.time);

     // 如果存在，则累加值
     if (existingItemIndex !== -1) {
       accumulator[existingItemIndex].value += item.num;
     } else {
       // 如果不存在，则添加新项
       accumulator.push({ name: item.time, value: item.num });
     }

     return accumulator;
   }, []); // 初始值为空数组
      console.log(processedData)
      // this.chart1 = echarts.init(diameter);
      // 指定图表的配置项和数据
      let option = {
         xAxis: {
            type: 'category',
      data:processedData.map(item => item.name),
      },
          yAxis: {
            type: 'value'
          },
          series: [
            {
             data:processedData.map(item => item.value),
              type: 'line',
            }
          ]
        }

      // 使用刚指定的配置项和数据显示图表。
      option && myChart.setOption(option);
    },
    echar2(datas) {
      let Dom = this.$refs.container2
      let myChart = echarts.init(Dom)
      let processedData = datas.reduce((accumulator, item) => {
        // 查找当前名称是否已经存在于累加器中
        let existingItemIndex = accumulator.findIndex(i => i.name === item.ticketChannel);

        // 如果存在，则累加值
        if (existingItemIndex !== -1) {
          accumulator[existingItemIndex].value += Number(item.price);
        } else {
          // 如果不存在，则添加新项
          accumulator.push({ name: item.ticketChannel, value:Number(item.price)});
        }

        return accumulator;
      }, []); // 初始值为空数组
      // this.chart2= echarts.init(diameter);
     let  option = {
        xAxis: {
          type: 'category',
          data:processedData.map(item => item.name),
        },
        yAxis: {
          type: 'value'
        },
        series: [
          {
              data:processedData.map(item => item.value),
            type: 'bar'
          },

        ],

      };
         option && myChart.setOption(option);
    },
    echar3(datas) {
      let Dom = this.$refs.container3
      let myChart = echarts.init(Dom)
      let processedData = datas.reduce((accumulator, item) => {
        // 查找当前名称是否已经存在于累加器中
        let existingItemIndex = accumulator.findIndex(i => i.name === item.ticketType);

        // 如果存在，则累加值
        if (existingItemIndex !== -1) {
          accumulator[existingItemIndex].value +=Number(item.price);
        } else {
          // 如果不存在，则添加新项
          accumulator.push({ name: item.ticketType, value: Number(item.price) });
        }

        return accumulator;
      }, []); // 初始值为空数组

      // this.chart3 = echarts.init(diameter);
      // 指定图表的配置项和数据
     let  option = {
        xAxis: {
          type: 'category',
          data:processedData.map(item => item.name),
        },
        yAxis: {
          type: 'value'
        },
        series: [
          {
            data:processedData.map(item => item.value),
            type: 'bar'
          }
        ]
      };
      // 使用刚指定的配置项和数据显示图表。
      option && myChart.setOption(option)
    },
    getSummaries(param) {
            const { columns, data } = param;
            const sums = [];
            columns.forEach((column, index) => {
              if (index === 0) {
                sums[index] = '总价';
                return;
              }
              const values = data.map(item => Number(item[column.property]));
              if (!values.every(value => isNaN(value))) {
                sums[index] = values.reduce((prev, curr) => {
                  const value = Number(curr);
                  if (!isNaN(value)) {
                    return prev + curr;
                  } else {
                    return prev;
                  }
                }, 0);
                sums[index] += ' 元';
              } else {
                sums[index] = 'N/A';
              }
            });

            return sums;
          },

        handleCurrentChange(val) {
          this.currentPage = val
        },
        handleSizeChange(val) {
          this.pageSize = val
        },
       async daochu(){
          let res = await excelToTotalSales(this.pageIndex)
          if(!res){
            return
          }
          const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
          const fileName = '总销售额明细表.xls'
          if ('download' in document.createElement('a')) {
             // 非IE下载
             const elink = document.createElement('a')
             elink.download = fileName
             elink.style.display = 'none'
             elink.href = URL.createObjectURL(blob)
             document.body.appendChild(elink)
             elink.click()
             URL.revokeObjectURL(elink.href) // 释放URL 对象
             document.body.removeChild(elink)
           } else {
            // IE10+下载
            navigator.msSaveBlob(blob, fileName)
          }
          this.$message({
            message: '导出成功',
            type: 'success'
          })


        },
   }
 }
</script>

<style lang='scss' scoped>
.history{
 padding: 0 20px 20px 20px;
    min-height: calc(100vh - 50px - 20px);
    background-color: #Fff;

}
 ::v-deep .el-form-item__label{
        font-weight: normal;
         font-size: 14px;

       }
    ::v-deep .buttonHover:hover{
      color:#3f9b6a !important;
      border-color: #c5e1d2 !important;
      background-color: #ecf5f0 !important;
      outline: none;
    }

</style>
<style scoped>



</style>
<style>
.el-tooltip__popper {
  max-width: 50%;
}
</style>
