DeleteCache.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <base-dialog @cancel="cancelDialog">
  3. <div slot="header">{{$t('compute.perform_delete')}}</div>
  4. <div slot="body">
  5. <a-alert class="mb-2" type="warning">
  6. <div slot="message">{{$t('compute.text_1394')}}</div>
  7. </a-alert>
  8. <dialog-selected-tips :name="$t('common.text00107')" :count="params.data.length" :action="$t('compute.perform_delete')" />
  9. <dialog-table :data="params.data" :columns="params.columns.slice(0, 3)" />
  10. <a-checkbox v-model="force_checked">{{$t('compute.force_delete.extra')}}</a-checkbox>
  11. </div>
  12. <div slot="footer">
  13. <a-button type="primary" @click="handleConfirm" :loading="loading">{{ $t('dialog.ok') }}</a-button>
  14. <a-button @click="cancelDialog">{{ $t('dialog.cancel') }}</a-button>
  15. </div>
  16. </base-dialog>
  17. </template>
  18. <script>
  19. import DialogMixin from '@/mixins/dialog'
  20. import WindowsMixin from '@/mixins/windows'
  21. export default {
  22. name: 'DeleteCacheDialog',
  23. mixins: [DialogMixin, WindowsMixin],
  24. data () {
  25. return {
  26. loading: false,
  27. force_checked: false,
  28. }
  29. },
  30. methods: {
  31. async doDelete (data) {
  32. const manager = new this.$Manager('storagecaches')
  33. for (let i = 0; i < this.params.data.length; i++) {
  34. await manager.performAction({
  35. id: this.params.data[i].storagecache_id,
  36. action: 'uncache-image',
  37. data: {
  38. image: this.params.data[i].cachedimage_id,
  39. is_force: this.force_checked,
  40. },
  41. })
  42. }
  43. },
  44. async handleConfirm () {
  45. this.loading = true
  46. try {
  47. this.loading = true
  48. await this.doDelete()
  49. this.loading = false
  50. this.cancelDialog()
  51. this.params.refresh()
  52. } catch (error) {
  53. this.loading = false
  54. throw error
  55. }
  56. },
  57. },
  58. }
  59. </script>