singleActions.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { getSetPublicAction } from '@/utils/common/tableActions'
  2. import { getDisabledProvidersActionMeta } from '@/utils/common/hypervisor'
  3. import i18n from '@/locales'
  4. export default {
  5. created () {
  6. this.singleActions = [
  7. {
  8. label: i18n.t('cloudenv.text_406'),
  9. permission: 'proxysettings_update',
  10. action: (row) => {
  11. this.createDialog('ProxysettingUpdateDialog', {
  12. data: [row],
  13. columns: this.columns,
  14. title: i18n.t('cloudenv.text_406'),
  15. onManager: this.onManager,
  16. })
  17. },
  18. meta: this.commonMeta,
  19. extraMeta: obj => {
  20. return getDisabledProvidersActionMeta({
  21. row: obj,
  22. disabledProviders: ['BingoCloud'],
  23. })
  24. },
  25. },
  26. getSetPublicAction(this, {
  27. name: this.$t('dictionary.proxysetting'),
  28. scope: 'domain',
  29. resource: 'proxysettings',
  30. }, {
  31. permission: 'proxysettings_perform_public',
  32. meta: this.commonMeta,
  33. extraMeta: obj => {
  34. return getDisabledProvidersActionMeta({
  35. row: obj,
  36. disabledProviders: ['BingoCloud'],
  37. })
  38. },
  39. }),
  40. {
  41. label: i18n.t('cloudenv.text_108'),
  42. permission: 'proxysettings_delete',
  43. action: (row) => {
  44. this.createDialog('DeleteResDialog', {
  45. vm: this,
  46. data: [row],
  47. columns: this.columns,
  48. title: i18n.t('cloudenv.text_108'),
  49. name: this.$t('dictionary.proxysetting'),
  50. onManager: this.onManager,
  51. })
  52. },
  53. meta: (row) => this.commonMeta(row, 'delete'),
  54. extraMeta: obj => {
  55. return getDisabledProvidersActionMeta({
  56. row: obj,
  57. disabledProviders: ['BingoCloud'],
  58. })
  59. },
  60. },
  61. ]
  62. },
  63. methods: {
  64. commonMeta (row = {}, action) {
  65. const { id } = row
  66. const isDirect = id === 'DIRECT'
  67. if (!row.can_delete && action === 'delete') {
  68. return {
  69. validate: false,
  70. tooltip: i18n.t('cloudenv.text_412'),
  71. }
  72. }
  73. if (isDirect) {
  74. return {
  75. validate: false,
  76. tooltip: i18n.t('cloudenv.text_404'),
  77. }
  78. }
  79. const { isDomainMode, userInfo } = this.$store.getters
  80. if (isDomainMode && (userInfo.projectDomainId !== row.domain_id)) {
  81. return {
  82. validate: false,
  83. tooltip: i18n.t('cloudenv.text_405'),
  84. }
  85. }
  86. return {
  87. isDirect,
  88. validate: true,
  89. }
  90. },
  91. },
  92. }