<template>
  <div>
    <el-table
      :data="gridData"
      max-height="350"
    >
      <el-table-column
        property="app_code"
        label="appCode"
        width="150"
      ></el-table-column>
      <el-table-column
        property="page_name"
        label="pageName"
        width="200"
      ></el-table-column>
      <el-table-column
        property="control_name"
        label="controlName"
      ></el-table-column>
      <el-table-column
        property="query_sql"
        label="querySql"
        :show-overflow-tooltip='true'
      ></el-table-column>
      <el-table-column
        property="version"
        label="version"
      ></el-table-column>
      <el-table-column label="操作">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="danger"
            @click="revertVersion(scope.$index, scope.row)"
          >回滚</el-button>
          <el-button
            type="success"
            size="mini"
            @click="showView(scope.$index, scope.row)"
          >查看效果</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
<script>
export default {
  name: 'lookPageLog',
  props: {
    elInfo: {
      type: Object,
      default() {
        return {
          dialogVisible: false
        }
      }
    },
    isrequest: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      pageTitle: '',
      dialogVisible: false,
      gridData: []
    }
  },
  watch: {
    isrequest(value) {
      this.dialogOpen()
    }
  },
  mounted() {
    this.dialogOpen()
  },
  methods: {
    revertVersion(index, item) {
      const parm = {
        appCode: item.app_code,
        pageName: item.page_name,
        controlName: item.control_name,
        version: item.version
      }
      this.$confirm('是否确定回滚到此版本!', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      })
        .then(() => {
          this.$emit('revertVersion', parm)
        })
        .catch(e => {
          console.log(e)
          this.$message({
            type: 'info',
            message: '已取消'
          })
        })
    },
    async dialogOpen() {
      const params = {
        appCode: '',
        pageName: this.elInfo.page,
        controlName: this.elInfo.position,
        dbName: '',
        dbCode: ''
      }
      const res = await this.$httpClient.WebChartConfigModule.webChartConfigQueryLog(params)
      this.gridData = res.data || []
    },
    showView(index, item) {
      const data = {
        config: JSON.parse(item.json_config),
        sourceData: JSON.parse(item.json_data),
        sql: item.query_sql
      }
      this.$emit('showView', data)
    }
  }
}
</script>