singleActions.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. import { getDomainChangeOwnerAction, getSetPublicAction, getEnabledSwitchActions } 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('storage.text_64'),
  9. permission: 'storages_update',
  10. action: row => {
  11. this.createDialog('BlockStorageUpdateStorageDialog', {
  12. data: [row],
  13. columns: this.columns,
  14. title: i18n.t('storage.text_64'),
  15. onManager: this.onManager,
  16. refresh: this.refresh,
  17. })
  18. },
  19. extraMeta: obj => {
  20. return getDisabledProvidersActionMeta({
  21. row: obj,
  22. disabledProviders: ['BingoCloud'],
  23. })
  24. },
  25. },
  26. {
  27. label: i18n.t('storage.text_65'),
  28. actions: (row) => {
  29. return [
  30. ...getEnabledSwitchActions(this, undefined, ['storages_perform_enable', 'storages_perform_disable'], {
  31. extraMetas: [
  32. obj => {
  33. return getDisabledProvidersActionMeta({
  34. row: obj,
  35. disabledProviders: ['BingoCloud'],
  36. })
  37. },
  38. obj => {
  39. return getDisabledProvidersActionMeta({
  40. row: obj,
  41. disabledProviders: ['BingoCloud'],
  42. })
  43. },
  44. ],
  45. }),
  46. {
  47. label: i18n.t('storage.host.manage'),
  48. action: row => {
  49. if (this.handleOpenSidepage) {
  50. this.handleOpenSidepage(row, 'host-list')
  51. } else {
  52. this.$refs.BaseSidePage.handleTabChange('host-list')
  53. }
  54. },
  55. extraMeta: obj => {
  56. return getDisabledProvidersActionMeta({
  57. row: obj,
  58. disabledProviders: ['BingoCloud'],
  59. })
  60. },
  61. },
  62. {
  63. label: i18n.t('storage.text_34'),
  64. permission: 'storages_perform_set_commit_bound',
  65. action: row => {
  66. this.createDialog('BlockStorageUpdateCommitBoundDialog', {
  67. data: [row],
  68. columns: this.columns,
  69. title: i18n.t('storage.text_34'),
  70. onManager: this.onManager,
  71. refresh: this.refresh,
  72. })
  73. },
  74. meta: row => {
  75. return {
  76. validate: row.provider !== 'ZStack',
  77. tooltip: row.provider === 'ZStack' && i18n.t('storage.text_68'),
  78. }
  79. },
  80. extraMeta: obj => {
  81. return getDisabledProvidersActionMeta({
  82. row: obj,
  83. disabledProviders: ['BingoCloud'],
  84. })
  85. },
  86. },
  87. {
  88. label: i18n.t('storage.text_69'),
  89. permission: 'storages_update_capacity',
  90. action: row => {
  91. this.createDialog('BlockStorageUpdateCapacityDialog', {
  92. data: [row],
  93. columns: this.columns,
  94. title: i18n.t('storage.text_69'),
  95. onManager: this.onManager,
  96. refresh: this.refresh,
  97. })
  98. },
  99. meta: row => {
  100. return {
  101. validate: row.provider === 'OpenStack' || row.provider === 'HCS',
  102. }
  103. },
  104. extraMeta: obj => {
  105. return getDisabledProvidersActionMeta({
  106. row: obj,
  107. disabledProviders: ['BingoCloud'],
  108. })
  109. },
  110. },
  111. {
  112. label: i18n.t('compute.text_540'),
  113. permission: 'storages_update',
  114. action: row => {
  115. this.createDialog('BlockStorageUpdateTagsDialog', {
  116. data: [row],
  117. columns: this.columns,
  118. title: i18n.t('compute.text_540'),
  119. onManager: this.onManager,
  120. refresh: this.refresh,
  121. })
  122. },
  123. extraMeta: obj => {
  124. return getDisabledProvidersActionMeta({
  125. row: obj,
  126. disabledProviders: ['BingoCloud'],
  127. })
  128. },
  129. },
  130. getDomainChangeOwnerAction(this, {
  131. name: this.$t('dictionary.storages'),
  132. resource: 'storages',
  133. }, {
  134. permission: 'storages_perform_change_owner',
  135. meta: (row) => {
  136. const isLocal = row.storage_type === 'local'
  137. const ret = {
  138. validate: true,
  139. tooltip: null,
  140. }
  141. if (isLocal) {
  142. ret.validate = false
  143. ret.tooltip = i18n.t('storage.text_70')
  144. }
  145. return ret
  146. },
  147. extraMeta: obj => {
  148. return getDisabledProvidersActionMeta({
  149. row: obj,
  150. disabledProviders: ['BingoCloud'],
  151. })
  152. },
  153. }),
  154. getSetPublicAction(this, {
  155. name: this.$t('dictionary.storages'),
  156. scope: 'domain',
  157. resource: 'storages',
  158. }, {
  159. permission: 'storages_perform_public',
  160. meta: (row) => {
  161. const isLocal = row.storage_type === 'local'
  162. const ret = {
  163. validate: true,
  164. tooltip: null,
  165. }
  166. if (isLocal) {
  167. ret.validate = false
  168. ret.tooltip = i18n.t('storage.text_70')
  169. }
  170. return ret
  171. },
  172. extraMeta: obj => {
  173. return getDisabledProvidersActionMeta({
  174. row: obj,
  175. disabledProviders: ['BingoCloud'],
  176. })
  177. },
  178. }),
  179. // {
  180. // label: '同步状态',
  181. // action: obj => {
  182. // this.onManager('performAction', {
  183. // steadyStatus: ['running', 'ready'],
  184. // id: obj.id,
  185. // managerArgs: {
  186. // action: 'syncstatus',
  187. // },
  188. // })
  189. // },
  190. // meta: () => ({
  191. // validate: true,
  192. // }),
  193. // },
  194. {
  195. label: i18n.t('storage.text_36'),
  196. permission: 'storages_delete',
  197. action: row => {
  198. this.createDialog('DeleteResDialog', {
  199. vm: this,
  200. title: i18n.t('storage.text_36'),
  201. name: i18n.t('storage.text_37'),
  202. data: [row],
  203. columns: this.columns,
  204. onManager: this.onManager,
  205. refresh: this.refresh,
  206. })
  207. },
  208. meta: (row) => this.$getDeleteResult(row),
  209. extraMeta: obj => {
  210. return getDisabledProvidersActionMeta({
  211. row: obj,
  212. disabledProviders: ['BingoCloud'],
  213. })
  214. },
  215. },
  216. ]
  217. },
  218. },
  219. ]
  220. },
  221. }