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

<script>
import UserCommands from '../../../commands/UserCommands'
import CommandExecuteContext from '../../../commands/CommandExecuteContext'
import PortService from '@/domain/services/PortListService.js'
import HelperUtil from '../../../utils/HelperUtil'
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.deletePort()
      }).catch(() => {
        this.close()
      })
    },
    close: function () {
      this.command.done()
    },

    // 删除设备
    deletePort () {
      // 调用函数
      console.log(JSON.stringify(this.deleteList))
      let _this = this
      // 打开loading
      let loadingInstance = this.Loading.openLoading()
      PortService.batchDeletePortList(JSON.stringify(this.deleteList)).then(result => {
        // 关闭loading
        _this.Loading.closeLoading(loadingInstance)
        // 成功
        _this.InfoTip.successTip(this, HelperUtil.getStatusCodeObjectByCode(_this.successCode.DELETE_CODE))

        _this.close()
      }).catch(err => {
        // 关闭loading
        _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>
