<template>
  <div>
    <el-card>
      <el-form :model="query" class="query-form" size="mini" label-width="100px" v-show="showSearch">
        <el-row>
          <el-col :span="6">
            <el-form-item label="记录ID:">
              <el-input v-model="filterQuery.genKey" style="width: 90%" placeholder="请输入记录ID"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>

      <div class="top-right-btn">
        <el-button-group style="display:flex;">
          <el-button icon="el-icon-view" type="primary" @click="hideSearch">显示/隐藏搜索栏</el-button>
          <el-button type="primary" icon="el-icon-refresh" @click="onReset">重置</el-button>
          <el-button type="primary" icon="el-icon-search" @click="Onsearch">查询</el-button>
          <el-button type="primary" icon="el-icon-upload2" @click="exportExcel">导出医疗器械信息</el-button>
        </el-button-group>
      </div>
      <el-divider style="margin: 15px"></el-divider>


      <el-table v-loading="loading" :data="list" style="width: 100%" @selection-change="handleSelectionChange" border
                highlight-current-row>
        <el-table-column label="序号" type="index"></el-table-column>
        <el-table-column label="记录ID" prop="genKey" show-overflow-tooltip></el-table-column>
        <el-table-column label="更新日期" prop="updateTime" show-overflow-tooltip></el-table-column>
        <el-table-column label="状态" prop="status" show-overflow-tooltip>
          <template slot-scope="scope">
            <el-tag :type="statusFilterType(scope.row.status)">{{ status[scope.row.status] }}</el-tag>
          </template>
        </el-table-column>
        <el-table-column label="下载次数" prop="dlCount" show-overflow-tooltip>
        </el-table-column>
        <el-table-column label="操作" width="120">
          <template slot-scope="scope">
            <el-button type="text" @click.native.stop="downloadExcel(scope.row)">下载</el-button>
            <el-button type="text" @click.native.stop="deleteDialog(scope.row.id)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>

      <el-dialog
        title="导出医疗器械产品信息"
        :visible.sync="udiImportDetailVisible"
        width="80%"
        append-to-body
        :close-on-click-modal="false"
        :close-on-press-escape="false"
        v-if="udiImportDetailVisible"
      >
        <udiInfoSelect :selectType="selectType" v-on:cancelDialog="cancelDialog"
        ></udiInfoSelect>
      </el-dialog>

      <pagination
        v-show="total>0"
        :total="total"
        :limit.sync="filterQuery.limit"
        :page.sync="filterQuery.page"
        @pagination="handleCurrentChange"
      ></pagination>
    </el-card>
  </div>
</template>

<script>
import axios from "axios";
import {filterLog, downloadLog, deleteLog} from "@/api/basic/udiInfoExport";
import udiInfoSelect from "./udIInfoSelect";
import {formatDate} from "@/utils/date";

export default {
  data() {
    return {
      showSearch: true,
      filterQuery: {
        type: 3,
        genKey: null,
        status: null,
        fromType: null,
        page: 1,
        limit: 20,
        thirdSysFk: null,
      },
      selectType: 0,
      udiImportDetailVisible: false,
      list: [],
      detailList: [],
      thirdSys: [],
      thirdSysDetail: null,
      total: 0,
      editQuery: null,
      fromStatus: {
        0: "产品信息",
        1: "库存信息",
        2: "异常第三方上传"
      },
      status: {
        0: "等待处理",
        1: "正在处理",
        2: "处理异常",
        3: "处理完成"
      },
      uploadFileUrl: null,
      uploadData: {
        thirdSys: "thirdId",
      },
    };
  },

  methods: {
    onReset() {
      this.$router.push({
        path: "",
      });
      this.filterQuery = {
        type: 3,
        fromType: null,
        genKey: null,
        status: null,
        page: 1,
        limit: 20,
        thirdSysFk: null,
      };
      this.getList();
    },
    hideSearch() {
      this.showSearch = !this.showSearch;
    },
    Onsearch() {
      this.filterQuery.page = 1;
      this.getList();
    },
    getList() {
      this.loading = true;
      filterLog(this.filterQuery)
        .then((response) => {
          this.loading = false;
          this.list = response.data.list || [];
          this.total = response.data.total || 0;
        })
        .catch(() => {
          this.loading = false;
          this.list = [];
          this.total = 0;
        });
    },

    exportExcel() {
      this.selectType = 0;
      this.udiImportDetailVisible = true;
    },
    uploadSmp() {
      this.selectType = 1;
      this.udiImportDetailVisible = true;
    },
    downloadExcel(row) {
      let url = process.env.VUE_APP_BASE_API + "/udiwms/products/exportLog/download" + "?genKey=" + row.genKey;
      let a = document.createElement("a");
      var timestamp = formatDate(new Date(), "yyyyMMddhhmmss")
      fetch(url)
        .then((res) => res.blob())
        .then((blob) => {
          a.href = URL.createObjectURL(blob);
          console.log(a.href);
          a.download = "BaseProduct_" + timestamp + ".UpperIn";
          document.body.appendChild(a);
          a.click();
          this.getList();
        });
    },

    cancelDialog(val) {
      this.udiImportDetailVisible = false;
      if (val) {
        this.getList();
      }
    },
    handleCurrentChange(val) {
      this.filterQuery.page = val.page;
      this.getList();
    },
    deleteDialog(rowId) {
      this.$confirm("此操作将删除该产品信息, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          let dQuery = {
            id: rowId,
          };
          deleteLog(dQuery)
            .then((response) => {
              this.loading = false;
              if (response.code == 20000) {
                this.$message.success("删除成功");
              } else {
                this.$message.error(response.message);
              }
              this.getList();
            })
            .catch(() => {
              this.loading = false;
            });
        })
        .catch(() => {
        });
    },
    handleChange(response, files, fileList) {
      console.log(response);
      if (response.code != 20000) {
        this.$message.error(response.message);
      } else {
        // console.log(files[0] + "\n" + this.fileList[0] + "\n" + fileList[0]);
        this.getList();
        this.$message.success("文件上传成功,请稍后刷新查看！");

      }
    },
    statusFilterType(status) {
      const statusMap = {
        0: "warning",
        1: "warning",
        2: "danger",
        3: "success",
      };
      return statusMap[status];
    },
  },
  mounted() {
  },
  components: {udiInfoSelect},
  created() {
    // this.getBasicThirdSys();
    this.getList();
  },
};
</script>
<style>
.itemTag {
  float: left;
  text-align: left;
  margin-top: 10px;
  width: 100px;
}

.text {
  font-size: 13px;
  font-family: "Microsoft YaHei";
}

.el-row {
  display: flex;
  flex-wrap: wrap;

}

.el-col {
  border-radius: 4px;
  flex-wrap: wrap;
}
</style>
