<!--
 * @description: 三元组信息
 * @fileName: TripletInfo
 * @author: 17076
 * @date: 2024/7/1-下午5:08
 * @version: V1.0.0
-->

<template>
  <cs-dialog
    :dialog="dialogOptions"
  >
    <template slot="content">
      <vxe-grid ref="xTable" v-bind="gridOptions" />
      <div style="text-align: center;margin-top: 10px">
        <el-button type="primary" plain style="width: 80px" @click="() => { dialogOptions.show = false }">取消</el-button>
        <el-button type="primary" style="width: 80px" @click="handleSubmit">保存</el-button>
      </div>
    </template>
  </cs-dialog>
</template>

<script>
import { queryTripletInfo, saveTripletInfo } from '@/api/caseDetails'
import mixin from '@/views/mixin'
export default {
  name: 'TripletInfo',
  mixins: [mixin],
  data() {
    return {
      dialogOptions: {
        show: false,
        title: {
          title: '选择三元组信息入库'
        },
        top: '50px',
        hiddenFooter: true,
        appendToBody: true
      },
      gridOptions: {
        ...mixin.data().gridOptions,
        loading: false,
        columns: [
          { type: 'checkbox', width: '80px' },
          { title: '实体', field: 'startNode' },
          { title: '属性', field: 'relation' },
          { title: '属性值', field: 'endNode' }
        ],
        data: [{ startNode: '裴金禄', relation: '就读院校', endNode: '中国政法大学'  },{ startNode: '裴金禄', relation: '毕业时间', endNode: ''}]
      },
      // 上页数据
      lastPageData: {}
    }
  },
  mounted() {
    // this.tableHeight(330)
  },
  methods: {
    // 显示弹窗
    show(data) {
      this.dialogOptions.show = true
      this.lastPageData = data
      this.gridOptions.data = []
      this.fetchData()
    },
    // 查询对应笔录提取到的三元组信息
    fetchData() {
      this.gridOptions.loading = true
      const params = {
        caseId: this.$route.params['id'],
        name: this.lastPageData.name,
        recordId: this.lastPageData['id']
      }
      queryTripletInfo(params).then(res => {
        this.gridOptions.loading = false
        this.gridOptions.data = res.data
      }).catch(() => {
        this.gridOptions.loading = false
      })
    },
    // 保存入库
    handleSubmit() {
      if (this.gridOptions.loading) {
        this.$baseMessage.error('模型分析中，请稍后!')
        return
      }
      const loading = this.$baseLoading(1, '保存中...')
      const ids = []
      this.$refs.xTable.getCheckboxRecords().map(item => {
        ids.push(item.id)
      })
      saveTripletInfo({ ids }).then(res => {
        loading.close()
        const { code, msg } = res
        code === 200 ? this.$baseMessage.success(msg || '保存成功!') : this.$baseMessage.error(msg || '保存失败!')
        this.dialogOptions.show = false
      }).catch(() => { loading.close() })
    }
  }
}
</script>

<style scoped lang="scss">

</style>
