<!--
 * @Author: Do not edit
 * @Date: 2024-04-22 15:49:56
 * @LastEditTime: 2024-04-24 15:28:44
 * @LastEditors: DY
 * @Description: 
-->
<template>
  <div class="weekly">
    <el-form :inline="true" :model="listQuery" class="blueTip">
      <el-form-item>
        <el-date-picker v-model="reportTime" type="week" size="small" @change="changeTime"
          :picker-options="{firstDayOfWeek: 4}" :format="'yyyy 第 WW 周' + '\u3000' + startTimeStamp + '-' + endTimeStamp"
          style="width: 350px" placeholder="选择周">
        </el-date-picker>
      </el-form-item>
      <el-button v-if="this.$auth.hasPermi('base:report-auto-production:query')" type="primary" size="small" @click="search()">
        查询
      </el-button>
      <el-button v-if="this.$auth.hasPermiAnd(['base:report-auto-original-glass:export', 'base:report-auto-production:export'])" type="primary" size="small" plain
        @click="handleExport">导出</el-button>
    </el-form>
    <glassWeek v-if="glassWeekShow" ref="glassWeek" :product="false" :params="listQuery" />
    <proWeek v-if="proWeekShow" ref="proWeek" :product="false" :params="listQuery" />
  </div>
</template>

<script>
import glassWeek from '../glass/weekly.vue'
import proWeek from '../productionWeekReport/index.vue'
import { parseTime } from '../../core/mixins/code-filter'
import FileSaver from 'file-saver'
import * as XLSX from 'xlsx/xlsx.mjs'

export default {
  components: { glassWeek, proWeek },
  data() {
    return {
      listQuery: {
				// pageSize: 10,
				// pageNo: 1,
				// total: 0,
				reportType: 3,
				reportTime: []
      },
      startTimeStamp: '',
      endTimeStamp: '',
      reportTime: '',
      glassWeekShow: false,
      proWeekShow: false,
      proTabaleData: []
    }
  },
  created() {
    this.getCurrentWeekStartTimeAndEndTime()
    this.glassWeekShow = true
    this.proWeekShow = true
  },
  methods: {
    // handleExport() {
    //   this.$nextTick(() => {
    //     this.$refs['glassWeek'].handleExport()
    //     this.$refs['proWeek'].handleExport()
    //   })
    // },
    handleExport() {
      const xlsxParam = { raw: true }
      let workbook = XLSX.utils.book_new()
      var ws = XLSX.utils.table_to_sheet( document.querySelector('#exportTable'), xlsxParam)
      XLSX.utils.book_append_sheet(workbook, ws, '许昌安彩周原片生产汇总')
      var prows = XLSX.utils.table_to_sheet( document.querySelector('#exportproductionTable'), xlsxParam)
      XLSX.utils.book_append_sheet(workbook, prows, '许昌安彩周成品生产汇总')
      let fileName = '生产数据汇总表-周报.xlsx';
      var wbout = XLSX.write(workbook, {
        bookType: 'xlsx',
        bookSST: true,
        type: 'array',
      });
      try {
        FileSaver.saveAs(
          new Blob([wbout], { type: 'application/octet-stream' }),
          fileName
        );
        this.$message.success('导出成功');
      } catch (e) {
        if (typeof console !== 'undefined') console.log(e, wbout);
      }
      return wbout;
    },
    search() {
      this.$nextTick(() => {
        this.$refs['glassWeek'].getDataList()
        this.$refs['proWeek'].getDataList()
      })
    },
    changeTime(val) {
      console.log(val);
			if(val) {
					let timeStamp = val.getTime(); //标准时间转为时间戳,毫秒级别
					this.startTimeStamp = this.timeFun(timeStamp - 24 * 60 * 60 * 1000); //开始时间
					this.endTimeStamp = this.timeFun(timeStamp + (24 * 60 * 60 * 1000) * 6); //结束时间
					console.log(this.startTimeStamp, this.endTimeStamp)
				this.listQuery.reportTime[0] = parseTime(new Date(this.startTimeStamp + ' 07:00:01').getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
        this.listQuery.reportTime[1] = parseTime(new Date(this.endTimeStamp + ' 07:00:00').getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
			} else {
					this.listQuery.reportTime = []
			}
		},
    getCurrentWeekStartTimeAndEndTime() {
      this.reportTime = new Date()
      var weekday = new Array(7);
      weekday[0] = "Sunday";
      weekday[1] = "Monday";
      weekday[2] = "Tuesday";
      weekday[3] = "Wednesday";
      weekday[4] = "Thursday";
      weekday[5] = "Friday";
      weekday[6] = "Saturday";
      // console.log(weekday[this.reportTime.getDay()]);
      if (weekday[this.reportTime.getDay()] === 'Monday') {
        this.startTimeStamp = this.timeFun(new Date().getTime() - 4 * 24 * 60 * 60 * 1000)
        this.endTimeStamp = this.timeFun(new Date().getTime() + 3 * 24 * 60 * 60 * 1000)
        this.listQuery.reportTime[0] = parseTime(new Date(this.startTimeStamp + ' 07:00:01').getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
        this.listQuery.reportTime[1] = parseTime(new Date(this.endTimeStamp + ' 07:00:00').getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
        // this.endTimeStamp = this.timeFun(timeStamp + (24 * 60 * 60 * 1000) * 5); //结束时间
        // this.changeTime(reportTime)
      } else if (weekday[this.reportTime.getDay()] === 'Tuesday') {
        this.startTimeStamp = this.timeFun(new Date().getTime() - 5 * 24 * 60 * 60 * 1000)
        this.endTimeStamp = this.timeFun(new Date().getTime() + 2 * 24 * 60 * 60 * 1000)
        this.listQuery.reportTime[0] = parseTime(new Date(this.startTimeStamp + ' 07:00:01').getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
        this.listQuery.reportTime[1] = parseTime(new Date(this.endTimeStamp + ' 07:00:00').getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
        // this.endTimeStamp = this.timeFun(timeStamp + (24 * 60 * 60 * 1000) * 5); //结束时间
        // this.changeTime(reportTime)
      } else if (weekday[this.reportTime.getDay()] === 'Wednesday') {
        this.startTimeStamp = this.timeFun(new Date().getTime() - 6 * 24 * 60 * 60 * 1000)
        this.endTimeStamp = this.timeFun(new Date().getTime() + 1 * 24 * 60 * 60 * 1000)
        this.listQuery.reportTime[0] = parseTime(new Date(this.startTimeStamp + ' 07:00:01').getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
        this.listQuery.reportTime[1] = parseTime(new Date(this.endTimeStamp + ' 07:00:00').getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
        // this.endTimeStamp = this.timeFun(timeStamp + (24 * 60 * 60 * 1000) * 5); //结束时间
        // this.changeTime(reportTime)
      } else if (weekday[this.reportTime.getDay()] === 'Thursday') {
        this.startTimeStamp = this.timeFun(new Date().getTime() - 7 * 24 * 60 * 60 * 1000)
        this.endTimeStamp = this.timeFun(new Date().getTime())
        this.listQuery.reportTime[0] = parseTime(new Date(this.startTimeStamp + ' 07:00:01').getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
        this.listQuery.reportTime[1] = parseTime(new Date(this.endTimeStamp + ' 07:00:00').getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
        // this.endTimeStamp = this.timeFun(timeStamp + (24 * 60 * 60 * 1000) * 5); //结束时间
        // this.changeTime(reportTime)
      } else if (weekday[this.reportTime.getDay()] === 'Friday') {
        this.startTimeStamp = this.timeFun(new Date().getTime() - 8 * 24 * 60 * 60 * 1000)
        this.endTimeStamp = this.timeFun(new Date().getTime() - 1 * 24 * 60 * 60 * 1000)
        this.listQuery.reportTime[0] = parseTime(new Date(this.startTimeStamp + ' 07:00:01').getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
        this.listQuery.reportTime[1] = parseTime(new Date(this.endTimeStamp + ' 07:00:00').getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
        // this.endTimeStamp = this.timeFun(timeStamp + (24 * 60 * 60 * 1000) * 5); //结束时间
        // this.changeTime(reportTime)
      } else if (weekday[this.reportTime.getDay()] === 'Saturday') {
        this.startTimeStamp = this.timeFun(new Date().getTime() - 9 * 24 * 60 * 60 * 1000)
        this.endTimeStamp = this.timeFun(new Date().getTime() - 2 * 24 * 60 * 60 * 1000)
        this.listQuery.reportTime[0] = parseTime(new Date(this.startTimeStamp + ' 07:00:01').getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
        this.listQuery.reportTime[1] = parseTime(new Date(this.endTimeStamp + ' 07:00:00').getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
        // this.endTimeStamp = this.timeFun(timeStamp + (24 * 60 * 60 * 1000) * 5); //结束时间
        // this.changeTime(reportTime)
      } else if (weekday[this.reportTime.getDay()] === 'Sunday') {
        this.startTimeStamp = this.timeFun(new Date().getTime() - 10 * 24 * 60 * 60 * 1000)
        this.endTimeStamp = this.timeFun(new Date().getTime() + 3 * 24 * 60 * 60 * 1000)
        this.listQuery.reportTime[0] = parseTime(new Date(this.startTimeStamp + ' 07:00:01').getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
        this.listQuery.reportTime[1] = parseTime(new Date(this.endTimeStamp + ' 07:00:00').getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
        // this.endTimeStamp = this.timeFun(timeStamp + (24 * 60 * 60 * 1000) * 5); //结束时间
        // this.changeTime(reportTime)
      }
    },
    //时间戳转为yy-mm-dd hh:mm:ss
		timeFun(unixtimestamp) {
				var unixtimestamp = new Date(unixtimestamp);
				var year = 1900 + unixtimestamp.getYear();
				var month = "0" + (unixtimestamp.getMonth() + 1);
				var date = "0" + unixtimestamp.getDate();
				return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length)
		}
  }
}
</script>

<style scoped>
.weekly {
  padding-top: 16px;
}
.blueTip::before{
  display: inline-block;
  content: '';
  width: 4px;
  height: 18px;
  background: #0B58FF;
  border-radius: 1px;
  margin-right: 8PX;
  margin-top: 8px;
  margin-left: 16px;
}
</style>