<div id="app">
  <b-table striped hover :items="items">
    <template v-slot:cell(btnText)="data">
          <b-button
            size="sm"
      @click="putNewValue(data.item)"
            class="mr-2"
          >
            {{data.item.btnText}}
          </b-button>
        </template>
  </b-table>
</div>  
class Task {
  constructor(context) {
    Object.assign(this, context);

    this.btnText = "Исправить";
  }

  fix() {
    this.btnText = "Обновление...";
    setTimeout(() => {
      this.btnText = "Исправить";
    }, 2000);
  }
}




var app = new Vue({
  el: "#app",
  data() {
    return {
      items: [
        new Task({          age: 40,          first_name: "Dickerson",          last_name: "Macdonald"}),
        new Task({ age: 21, first_name: "Larsen", last_name: "Shaw" }),
        new Task({ age: 89, first_name: "Geneva", last_name: "Wilson" }),
        new Task({ age: 38, first_name: "Jami", last_name: "Carney" })
      ],
      modalShow: false
    };
  },
  methods: {
    putNewValue(task) {
      return task.fix()
    }
  }
});

Vue.use(BootstrapVue);

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.min.js
  2. https://unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.js