groupactions.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import i18n from '@/locales'
  2. import { HYPERVISORS_MAP } from '@/constants'
  3. // 合并二层网络
  4. export function getWiresMergeAction (vm, dialogParams = {}, params = {}) {
  5. if (!vm) {
  6. throw Error('not found vm instance')
  7. }
  8. const { name = i18n.t('common_92'), scope, resource } = dialogParams
  9. const options = {
  10. label: i18n.t('network.wire.merge'),
  11. action: row => {
  12. vm.createDialog('WireMergeDialog', {
  13. vm,
  14. name,
  15. data: (vm.list && vm.list.selectedItems) || [],
  16. dataLoader: vm.getHostDetails,
  17. onManager: vm.onManager,
  18. refresh: vm.refresh,
  19. columns: vm.columns,
  20. expandConfig: vm.expandConfig,
  21. scope,
  22. resource,
  23. })
  24. },
  25. meta: row => {
  26. const data = (vm.list && vm.list.selectedItems) || []
  27. if (data.length < 2) {
  28. return {
  29. validate: false,
  30. tooltip: i18n.t('common.select.rows.limit', [2]),
  31. }
  32. }
  33. for (const item of data) {
  34. if (!vm.isPower(item)) {
  35. return {
  36. validate: false,
  37. tooltip: (i18n.t('common_716') + ': ' + item.name),
  38. }
  39. }
  40. if (item.provider.toLowerCase() !== HYPERVISORS_MAP.kvm.provider.toLowerCase()) {
  41. return {
  42. validate: false,
  43. tooltip: i18n.t('network.text_309', [item.provider]),
  44. }
  45. }
  46. }
  47. return {
  48. validate: true,
  49. tooltip: null,
  50. }
  51. },
  52. }
  53. if (params.permission) options.permission = params.permission
  54. if (params.hidden) options.hidden = params.hidden
  55. return options
  56. }