<template>
  <CommandExecuteContext v-bind:commands="commandContext"></CommandExecuteContext>
</template>

<script>
import UserCommands from '../../../commands/UserCommands'
import EdTemplateService from '@/domain/services/Template/EdTemplateService'
import CommandExecuteContext from '../../../commands/CommandExecuteContext'
import HelperUtil from '../../../utils/HelperUtil'
import ReportTemplateService from "../../../domain/services/ReportTemplateService";

export default {
  props: ['command'],

  components: {
    CommandExecuteContext
  },

  data: function () {
    return {
      deleteList: this.command.target,

      // 命令
      commandContext: {},

      confirmFlag: {
        confirm: false
      }
    }
  },
  methods: {
    open () {
      let _this = this
      _this.InfoTip.conformTip(_this, HelperUtil.getCheckStatusCodeObjectByCode(_this.successCode.DELETE_CONFIRM)
      ).then(() => {
        this.deleteTemplate(this)
      }).catch(() => {
        this.close()
      })
    },
    close () {
      this.command.done()
    },
    /**
     * @Description  : shanchu
     * @author       : ls
     * @date         : 2020/4/23 19:56
     * @param        :
     * @return       :
     */
    deleteTemplate (vue) {
      let _this = vue
      let loadingInstance = _this.Loading.openLoading()
      ReportTemplateService.delateReportTemplate(vue.deleteList).then(result => {
        _this.Loading.closeLoading(loadingInstance)
        _this.InfoTip.successTip(_this, HelperUtil.getStatusCodeObjectByCode(_this.successCode.DELETE_CODE))
        _this.close()
      }).catch(err => {
        _this.Loading.closeLoading(loadingInstance)
        _this.InfoTip.errorTip(_this, err)
        _this.close()
      })
    }
  },
  watch: {
    commandContext (newVal, oldVal) {
      let _this = this
      if (_this.confirmFlag.confirm) {
        this.open()
        this.confirmFlag.confirm = false
      } else {
        if (JSON.stringify(newVal) === '{}') {
          _this.close()
        }
      }
      deep: true
    }
  },

  created () {
    this.confirmUserCommand.execute()
  },

  computed: {
    confirmUserCommand () {
      this.confirmFlag.confirm = false
      return UserCommands.confirmUserCommand(this.commandContext, this.confirmFlag)
    }
  }
}
</script>