<template>
  <div>
    <Row>
      <!--查询-->
      <Col span="24">
        <Form id="task-assign-item-left" :label-width="70" inline onsubmit="return false">
        <label class="label-sign"></label>
        <Form-item class="search-item" label="检测项目:">
          <Input v-model="formObj.name" placeholder="请输入检测项目" clearable @on-enter="_formSearch"></Input>
        </Form-item>
        <Form-item class="search-btn">
          <Button type="primary" @click="_formSearch">搜索</Button>
        </Form-item>
      </Form>
      </Col>
      <Col span="24">
      <btn-list class="contHide" style="margin-bottom: 6px;" @on-result-change="_btnClick"></btn-list>
      </Col>
      <!-- 表格 -->
      <Col span="24">
      <PTVXETable ref="pageTable" :is-radio="true" :page-columns="pageColumns" :table-name="tableName"
                  :table-height="tableHeight"
                    :get-page="getPage" :icon-msg="iconMsg" :hide-checkbox="true" select-data  @on-result-change="_tableResultChange">
        <vxe-table-column
          v-for="item in userColumns.length > 0 ?userColumns:pageColumns"
          :key="item.key"
          :field="item.key"
          :title="item.title"
          :min-width="item.width"
          :fixed="item.fixed?item.fixed:undefined"
          sortable>
          <template slot-scope="scope">
            <a v-if="item.detail" @click.stop="_detailModal(scope.row)">{{scope.row[item.key]}}</a>
            <span v-else-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}</span>
            <span v-else>{{scope.row[item.key]}}</span>
          </template>
        </vxe-table-column>
        <VXESettingCol slot="setting" :page-columns="pageColumns" :user-columns="userColumns"
                       :table-name="tableName" @on-result-change="_resetColumn"></VXESettingCol>
      </PTVXETable>
      </Col>
    </Row>
    <CreateItemReport ref="createModal" @on-result-change="_certificateSelectExcelBack"></CreateItemReport>
  </div>
</template>
<script>
import { soilSample, soilTest } from '../../../../api'
import CreateItemReport from './CreateItemReport'
export default {
  components: { CreateItemReport },
  data() {
    return {
      currentComponent: '',
      formObj: {
        name: undefined
      },
      formObjSample: {
        name: undefined,
        entrustId: undefined
      },
      sampleIds: [],
      itemName: '',
      tableName: 'food-task-assign-item-left',
      // 用户自己选中的列
      userColumns: [],
      optionList: [
        { key: 'name', name: '检测项目', placeholder: '请输入检测项目' },
        { key: 'testBasis', name: '检测依据', placeholder: '请输入检测依据' }
      ],
      getPage: {},
      iconMsg: [{ type: 'ios-book', id: '', name: '生成项目报告' }],
      id: '',
      selectId: '',
      pageColumns: [
        { title: '检测项目', key: 'name', width: 120 },
        { title: '检测方法', key: 'testMethod', width: 140 },
        { title: '检测依据名称', key: 'testBasisName', width: 200 }
      ]
    }
  },
  computed: {
    tableHeight: function() {
      return this.$tableHeight('tabSearch')
    }
  },
  methods: {
    // 重置column
    _resetColumn(colList) {
      this.userColumns = colList
      this.$refs.pageTable._loadColumn(colList)
    },
    _modalResult() {
      if (this.currentComponent === 'AutoAssignModal') {
        this._formSearch()
      }
    },
    _selInputResult1(msg, data) {
      switch (msg) {
        case 'search':
          this._formSearch()
          break
      }
    },
    _open(id) {
      this.id = id
      this.selectId = ''
      this._page()
    },
    _searchParams() {
      const obj = {}
      const obj1 = this.$refs.selInput1._getFormObj()
      Object.assign(obj, obj1)
      return obj
    },
    _page: async function() {
      Object.assign(this.formObj, this.$refs.pageTable._searchParams())
      this.formObj.entrustId = this.id
      const result = await soilTest.pageTestByExp(
        this.$serializeForm(this.formObj)
      )
      if (result) {
        this.$refs.pageTable._hideLoading()
        this.getPage = result
      }
    },
    _tableResultChange(msg, data) {
      console.log(msg, data)
      switch (msg) {
        case 'page':
          this._page()
          break
        case 'selectData':
          this.$emit('on-result-change', data)
          break
        case 'singleSelect':
          console.log('data-----------------', data)
          this.$emit('on-result-change', data)
          break
        case 'iconClick':
          this.$refs.pageTable._radioChangeItem(data.rowData)
          this._iconClick(data.name, data.rowData, data.componentName)
          break
        case 'changeSize':
          this._page()
          break
      }
    },
    _formSearch() {
      this.$refs.pageTable._pageChange(1)
    },
    _btnClick(msg) {
      switch (msg) {
        case '自动分配':
          this._autoAssign()
          break
      }
    },
    _iconClick(res, data, currentComponent) {
      this.$nextTick(() => {
        switch (res) {
          case '生成项目报告':
            // this.$emit('on-result-change', data)
            this._itemReportMake(data)
            break
        }
      })
    },
    _itemReportMake(data) {
      this.itemName = data.name
      this._searchSampleId(this.id, data.name)
      // this.selectId = data.id
      this.$refs.createModal._open()
    },
    _searchSampleId: async function(id, name) {
      Object.assign(this.formObjSample, this.$refs.pageTable._searchParams())
      this.formObjSample.entrustId = id
      this.formObjSample.name = name
      this.$refs.pageTable._hideLoading()
      const result = await soilTest.pageExperimentTest(
        this.$serializeForm(this.formObjSample)
      )
      if (result) {
        console.log(result)
        this.sampleIds = []
        for (let i = 0; i < result.records.length; i++) {
          this.sampleIds.push(result.records[i].id)
        }
        console.log('右侧样品id', this.sampleIds)
      }
    },
    _certificateSelectExcelBack(data) {
      if (data) {
        this.$refs.pageTable._showLoading()
        this._makeCodeExcel(data)
      } else {
        this.$refs.pageTable._hideLoading()
      }
    },
    _makeCodeExcel: async function(data) {
      console.log('左侧项目名称', this.itemName)
      console.log('右侧样品Id', this.sampleIds)
      console.log('报告信息', data)
      console.log('this.entrustId', this.id)
      this.$refs.pageTable._hideLoading()
      const result = await soilSample.saveExcelExpReport({
        entrustId: this.id,
        expName: encodeURI(this.itemName),
        ids: this.sampleIds,
        templateId: data.id
      })
      if (result) {
        // await this._page()
        if (result === null || result === undefined) {
          this.$Message.warning('证书编制失败，请联系管理员！')
          this.$refs.pageTable._hideLoading()
          return false
        } else {
          this._viewReport(result)
        }
      }
    },
    _viewReport(data) {
      if (data) {
        this.$openWindowModeless({
          objectKey: data.objectKey,
          idType: 10,
          id: data.id,
          isReport: 4
        })
      }
    },
    _autoAssign() {
      console.log('自动分配')
    }
  }
}
</script>
