singleActions.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import i18n from '@/locales'
  2. import { BRAND_MAP } from '@/constants'
  3. import { RollbackDiskValidate } from '../validate'
  4. export default {
  5. created () {
  6. this.singleActions = [
  7. {
  8. label: i18n.t('compute.text_1069'),
  9. permission: 'disks_perform_disk_reset',
  10. action: obj => {
  11. this.createDialog('DiskRollbackDialog', {
  12. data: [obj],
  13. columns: this.columns,
  14. refresh: this.refresh,
  15. })
  16. },
  17. meta: obj => {
  18. const brand = obj.brand && obj.brand.toLowerCase()
  19. if (!obj.disk_name) {
  20. return { validate: false }
  21. }
  22. if (brand && RollbackDiskValidate[brand]) {
  23. return { ...RollbackDiskValidate[brand](obj) }
  24. }
  25. return { validate: true }
  26. },
  27. },
  28. {
  29. label: i18n.t('compute.perform_sync_status'),
  30. permission: 'snapshots_perform_syncstatus',
  31. action: obj => {
  32. this.onManager('performAction', {
  33. steadyStatus: ['running', 'ready'],
  34. id: obj.id,
  35. managerArgs: {
  36. action: 'syncstatus',
  37. },
  38. })
  39. },
  40. meta: () => ({
  41. validate: true,
  42. }),
  43. },
  44. {
  45. label: i18n.t('compute.create_disk'),
  46. permission: 'disks_create',
  47. action: obj => {
  48. this.createDialog('SnapshotCreateDiskDialog', {
  49. data: [obj],
  50. columns: this.columns,
  51. refresh: this.refresh,
  52. })
  53. },
  54. meta: (obj) => {
  55. const ret = { validate: true }
  56. if (obj.brand !== BRAND_MAP.OneCloud.brand) {
  57. ret.validate = false
  58. ret.tooltip = i18n.t('compute.text_473', [BRAND_MAP[obj.brand]?.label || ''])
  59. return ret
  60. }
  61. return ret
  62. },
  63. },
  64. {
  65. label: i18n.t('compute.perform_delete'),
  66. permission: 'snapshots_delete',
  67. action: obj => {
  68. this.createDialog('DeleteResDialog', {
  69. vm: this,
  70. data: [obj],
  71. columns: this.columns,
  72. title: i18n.t('compute.perform_delete'),
  73. onManager: this.onManager,
  74. name: i18n.t('compute.text_462'),
  75. })
  76. },
  77. meta: obj => {
  78. const ret = { validate: true }
  79. if (obj.guest_status === 'disk_reset') {
  80. ret.validate = false
  81. ret.tooltip = this.$t('compute.text_1347')
  82. return ret
  83. }
  84. return this.$getDeleteResult(obj)
  85. },
  86. },
  87. ]
  88. },
  89. }