<template>
  <el-dialog
    :visible.sync="visible"
    :title="'智能填表'"
    :close-on-click-modal="true"
    :close-on-press-escape="true"
    width="850px"
    :top="diaTop"
  >
    <el-table
      v-loading="loading"
      :data="list"
      row-key="id"
      border
      :height="tableHeight"
      style="width: 100%"
    >
      <el-table-column type="index" label="序号" width="50" />
      <el-table-column
        prop="reportName"
        label="模板名称"
        header-align="center"
        min-width="150"
      ></el-table-column>
      <el-table-column
        label="操作"
        fixed="right"
        header-align="center"
        align="center"
        width="150"
      >
        <template slot-scope="scope">
          <el-button type="text" size="small" @click="fillIn(scope.row)"
            >填写</el-button
          >
        </template>
      </el-table-column>
    </el-table>
  </el-dialog>
</template>

<script>
import { Loading } from "element-ui"; // 引入Loading服务
import { requestPost, requestGet } from "@/js/dai/request";
import { mapGetters } from "vuex";
import axios from "axios";

export default {
  data() {
    return {
      loading: false,

      visible: false,

      list: [], //客户列表

      elseParams: {},
    };
  },

  computed: {
    tableHeight() {
      // return this.resolution === 'small' ? this.clientHeight - 210 : this.clientHeight - 220
      return this.clientHeight - 300;
    },
    diaWidth() {
      return this.resolution === "small" ? 60 : 50;
    },
    diaHeight() {
      return this.resolution === "small" ? 350 : 600;
    },
    diaTop() {
      return this.resolution === "small" ? "30px" : "100px";
    },
    ...mapGetters(["clientHeight", "resolution"]),
  },

  mounted() {},

  methods: {
    async existsTemplate(row) {
      console.log("baobiao----------existsTemplate", row);
      const { elseParams } = row;
      this.list = [];
      this.elseParams = { ...elseParams };
      await this.getList();
      return this.list.length > 0;
    },

    async init(row) {
      console.log("baobiao----------init", row);
      const { elseParams } = row;
      this.visible = true;
      this.elseParams = { ...elseParams };

      this.list = [];

      await this.getList();
    },

    //获取所有客户列表
    async getList() {
      this.loading = true;
      const { elseParams } = this;
      const { data, code, msg } = await requestPost(
        "/oper/customize/icCustomerReport/report-list",
        {
          ...elseParams,
        }
      );
      this.loading = false;
      if (code === 0) {
        this.list = data.map((item) => {
          return item;
        });
      } else {
        this.$message.error(msg);
      }
    },

    async fillIn(item) {
      const { reportId, reportName } = item;
      const url = "/oper/customize/icCustomerReport/preview";
      const parmas = {
        ...this.elseParams,
        reportId,
      };

      const { data, code, msg } = await requestPost(url, parmas);

      if (code === 0) {
        let token = localStorage.getItem("token");
        let prefix = window.SITE_CONFIG["apiURL"].slice(0, -4);
        if (item.isList) {
          this.exportAll(reportId, data.paramKey, reportName);
        } else {
          window.open(
            `${prefix}/jmreport/view/${reportId}?token=${token}&paramKey=${data.paramKey}`
          );
        }

        // this.visible = false;
        this.$emit("afterFillIn");
      } else {
        this.$message.error(msg);
      }
    },

    async exportAll(reportId, paramKey, reportName) {
      const url = "/oper/customize/icCustomerReport/batch-export";
      axios({
        url: window.SITE_CONFIG["apiURL"] + url,
        method: "post",
        data: {
          reportId,
          paramKey,
        },
        responseType: "blob",
      })
        .then((res) => {
          console.log("批量导出接口返回", res);
          // let fileName = window.decodeURI(
          //   res.headers["content-disposition"].split(";")[1].split("=")[1]
          // );
          let fileName = reportName;
          console.log("filename", fileName);
          let blob = new Blob([res.data], { type: "application/zip" });
          var url = window.URL.createObjectURL(blob);
          var aLink = document.createElement("a");
          aLink.style.display = "none";
          aLink.href = url;
          aLink.setAttribute("download", fileName);
          document.body.appendChild(aLink);
          aLink.click();
          document.body.removeChild(aLink); //下载完成移除元素
          window.URL.revokeObjectURL(url); //释放掉blob对象
        })
        .catch((err) => {
          console.log("批量导出失败", err);
          return this.$message.error("网络错误");
        });
    },
  },
};
</script>

<style lang="scss" scoped></style>
