singleActions.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import i18n from '@/locales'
  2. import { PROVIDER_MAP } from '@/constants'
  3. export default {
  4. created () {
  5. this.singleActions = this.isListenerSidepage ? [] : [
  6. {
  7. label: i18n.t('network.text_130'),
  8. permission: 'lb_loadbalancerbackends_update',
  9. action: (obj) => {
  10. this.createDialog('BackendUpdateDialog', {
  11. data: [obj],
  12. columns: this.columns,
  13. onManager: this.onManager,
  14. updateFields: this.getUpdateFields(obj),
  15. })
  16. },
  17. meta: (obj) => {
  18. const fields = this.getUpdateFields(obj)
  19. const canUpdate = fields.weight && fields.port && fields.status
  20. return {
  21. validate: canUpdate,
  22. tooltip: canUpdate ? '' : i18n.t('compute.text_1388'),
  23. }
  24. },
  25. },
  26. {
  27. label: i18n.t('network.text_131'),
  28. permission: 'lb_loadbalancerbackends_delete',
  29. action: (obj) => {
  30. this.createDialog('DeleteResDialog', {
  31. vm: this,
  32. title: i18n.t('network.text_131'),
  33. name: i18n.t('network.text_140'),
  34. data: [obj],
  35. columns: this.columns,
  36. onManager: this.onManager,
  37. })
  38. },
  39. meta: (obj) => {
  40. if (this.isAliyunDefaultBackendGroup) {
  41. return {
  42. validate: false,
  43. tooltip: i18n.t('network.lb.default_backendgroup.tips'),
  44. }
  45. }
  46. if (obj.provider && (obj.provider.toLowerCase() === 'azure' || obj.provider.toLowerCase() === 'google')) {
  47. return {
  48. validate: false,
  49. tooltip: i18n.t('network.text_309', [PROVIDER_MAP[obj.provider].label]),
  50. }
  51. }
  52. return this.$getDeleteResult(obj)
  53. },
  54. },
  55. ]
  56. },
  57. methods: {
  58. getUpdateFields (obj) {
  59. const ret = { weight: true, port: true, status: true }
  60. const { provider = '' } = obj
  61. const lProvider = provider.toLowerCase()
  62. if (this.isAliyunDefaultBackendGroup) {
  63. ret.port = false
  64. ret.weight = false
  65. }
  66. if (lProvider !== 'cloudflare') {
  67. ret.status = false
  68. }
  69. if (lProvider === 'azure' || lProvider === 'google') {
  70. ret.port = false
  71. ret.weight = false
  72. } else if (lProvider === 'huawei') {
  73. ret.port = false
  74. } else if (lProvider === 'aws') {
  75. ret.port = false
  76. ret.weight = false
  77. } else if (lProvider === 'openstack') {
  78. ret.port = false
  79. }
  80. return ret
  81. },
  82. },
  83. }