<template>
  <custom-modal v-model="visible" :width="750" title="QC Results">
    <a-spin :spinning="isLoading">
      <a-table :columns="columns" :dataSource="list" :pagination="false" />
    </a-spin>
    <a-button slot="custom-footer" type="primary" @click="handleExportToExcel">Export to Excel</a-button>
  </custom-modal>
</template>

<script>
import { getAction, getFileAction } from '@/api/manage'
import ModalMixin from '@/mixins/ModalMixin'
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
import { saveAs } from 'file-saver';

const columns = [
  {
    title: 'Name',
    dataIndex: 'name',
    customCell: (record) => {
      return {
        style: {
          backgroundColor: record.flag == 'FAIL'? 'red': ''
        }
      }
    }
  },
  {
    title: 'Pass/Fail',
    dataIndex: 'flag',
    customCell: (record) => {
      return {
        style: {
          backgroundColor: record.flag == 'FAIL'? 'red': ''
        }
      }
    }
  },
  {
    title: 'Value',
    dataIndex: 'value',
    customCell: (record) => {
      return {
        style: {
          backgroundColor: record.flag == 'FAIL'? 'red': ''
        }
      }
    }
  },
  {
    title: 'Standard',
    dataIndex: 'standard',
    customCell: (record) => {
      return {
        style: {
          backgroundColor: record.flag == 'FAIL'? 'red': ''
        }
      }
    }
  }
]
export default {
  mixins: [ModalMixin, SampleDataMixin],
  props: {
    sampleId: {
      type: Number
    }
  },
  data() {
    this.columns = columns
    return {
      isLoading: false,
      list: [],
      fileName: ''
    }
  },
  methods: {
    async getData() {
      try {
        this.isLoading = true
        const { success, result, message } = await getAction('/gamma/viewQCResult', {
          sampleId: this.sampleId
        })
        if (success) {
          this.list = result
        } else {
          this.$message.error(message)
        }
      } catch (error) {
        console.error(error)
      } finally {
        this.isLoading = false
      }
    },

    beforeModalOpen() {
      this.getData()
    },
    // 导出到Excel
    handleExportToExcel() {
      this.fileName=""
      if (this.list.length > 0) {
        let _this = this
        this.$confirm({
          title: 'Please enter file name',
          content:  h => <a-input v-model={_this.fileName} />,
          okText: 'Cancle',
          cancelText: 'Save',
          okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
          cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
          onOk() {
            console.log('Cancel');
          },
          onCancel() {
            if (_this.fileName) {
              _this.visible = false
              let params = {
                // sampleId: "426530",
                // fileName: "CAX05_001-20230731_1528_S_FULL_37563.6.PHD"
                sampleId: _this.sampleId,
                fileName: _this.sampleData.fileName
              }
              getFileAction('/gamma/exportQCResult', params).then(res => {
                if (res.code && res.code == 500) {
                  this.$message.warning("This operation fails. Contact your system administrator")
                } else {
                  const blob = new Blob([res], { type: "application/vnd.ms-excel" })
                  saveAs(blob, `${_this.fileName}`)
                }
              })
            }
          },
        });
      } else {
        this.$message.warning("No downloadable data")
      }
    }
  }
}
</script>
<style lang="less" scoped></style>
