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


<script>
  import UserCommands from "../../../commands/UserCommands"
  import CommandExecuteContext from '../../../commands/CommandExecuteContext'
  import FirmWareService from '@/domain/services/FirmWareService.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.deleteFirmWare(this);
        }).catch(() => {
          this.close()
        });
      },
      close(){
        this.command.done()
      },

      // 删除固件
      deleteFirmWare(vue) {
        let _this = vue;
        //调用函数
        console.log(JSON.stringify(vue.deleteList));
        let loadingInstance = _this.Loading.openLoading();
        FirmWareService.batchDeleteFirmWare(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>
