| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- import { mapGetters } from 'vuex'
- import { changeToArr } from '@/utils/utils'
- import { getEnabledSwitchActions } from '@/utils/common/tableActions'
- import expectStatus from '@/constants/expectStatus'
- import { typeClouds } from '@/utils/common/hypervisor'
- import i18n from '@/locales'
- const steadyStatus = Object.values(expectStatus.cloudaccount).flat()
- const brandMap = typeClouds.getBrand()
- export default {
- computed: {
- ...mapGetters(['l3PermissionEnable']),
- },
- created () {
- const ownerDomain = obj => this.$store.getters.isAdminMode || obj.domain_id === this.$store.getters.userInfo.projectDomainId
- const isAccountDomain = data => data.share_mode === 'account_domain'
- this.singleActions = [
- {
- label: this.$t('cloudenv.text_294', [this.$t('dictionary.project')]),
- permission: 'cloudproviders_perform_change_project',
- action: obj => {
- if (isAccountDomain(this.data)) {
- this.createDialog('ChangeProjectDialog', {
- name: this.$t('dictionary.cloudprovider'),
- data: [obj],
- columns: this.columns,
- onManager: this.onManager,
- projectLabel: this.$t('cloudenv.text_294', [this.$t('dictionary.project')]),
- formItemLayout: {
- wrapperCol: {
- span: 19,
- },
- labelCol: {
- span: 5,
- },
- },
- })
- } else {
- this.createDialog('ChangeOwenrDialog', {
- name: this.$t('dictionary.cloudprovider'),
- data: [obj],
- columns: this.columns,
- onManager: this.onManager,
- action: 'change-project',
- projectLabel: this.$t('cloudenv.text_294', [this.$t('dictionary.project')]),
- alertMessage: this.$t('cloudenv.text_336', [this.$t('dictionary.project'), this.$t('dictionary.domain'), this.$t('dictionary.domain')]),
- formItemLayout: {
- wrapperCol: {
- span: 19,
- },
- labelCol: {
- span: 5,
- },
- },
- resource: 'cloudproviders',
- })
- }
- },
- meta: obj => {
- let tooltip
- if (!obj.enabled) tooltip = i18n.t('cloudenv.text_357')
- return {
- validate: obj.enabled && ownerDomain(obj),
- tooltip,
- }
- },
- },
- {
- label: i18n.t('common.sync_resource'),
- permission: 'cloudproviders_perform_sync',
- action: obj => {
- this.createDialog('FullSyncResourceDialog', {
- title: this.$t('common.sync_resource'),
- name: this.$t('common_711'),
- action: this.$t('common.sync_resource'),
- steadyStatus: {
- status: steadyStatus,
- sync_status: ['idle'],
- },
- data: [obj],
- columns: this.columns,
- onManager: this.onManager,
- callback: () => {
- // 订阅同步后,云账号也要同步
- this.cloudaccountListRefresh && this.cloudaccountListRefresh()
- },
- })
- },
- meta: obj => {
- let tooltip
- let validate = true
- if (!ownerDomain(obj)) {
- tooltip = i18n.t('cloudenv.text_358')
- validate = false
- }
- if (!obj.enabled) {
- tooltip = i18n.t('cloudenv.text_357')
- validate = false
- }
- if (obj.sync_status !== 'idle') {
- tooltip = i18n.t('cloudenv.text_313')
- validate = false
- }
- return {
- tooltip,
- validate,
- }
- },
- },
- {
- label: i18n.t('cloudenv.text_311'),
- actions: obj => {
- return [
- {
- label: this.$t('cloudenv.set_project_mapping'),
- permission: 'cloudproviders_perform_project_mapping',
- action: () => {
- this.createDialog('CloudproviderSetPojectmappingDialog', {
- data: [obj],
- columns: this.columns,
- onManager: this.onManager,
- })
- },
- },
- ...getEnabledSwitchActions(this, obj, ['cloudproviders_perform_enable', 'cloudproviders_perform_disable'], {
- actions: [
- async (obj) => {
- await this.onManager('batchPerformAction', {
- id: [obj.id],
- managerArgs: {
- action: 'enable',
- },
- })
- },
- async (obj) => {
- await this.onManager('batchPerformAction', {
- id: [obj.id],
- managerArgs: {
- action: 'disable',
- },
- })
- },
- ],
- metas: [
- () => {
- return {
- validate: !obj.enabled && ownerDomain(obj),
- }
- },
- () => {
- return {
- validate: obj.enabled && ownerDomain(obj),
- }
- },
- ],
- }),
- {
- label: i18n.t('cloudenv.text_108'),
- permission: 'cloudproviders_delete',
- action: () => {
- this.createDialog('DeleteResDialog', {
- vm: this,
- data: [obj],
- columns: this.columns,
- title: i18n.t('cloudenv.text_108'),
- onManager: this.onManager,
- name: this.$t('cloudenv.text_318'),
- alert: i18n.t('cloudenv.cloudprovider.delete_tip'),
- })
- },
- meta: () => {
- let tooltip
- let validate = obj.can_delete
- if (obj.sync_status === 'syncing') {
- tooltip = i18n.t('cloudenv.cloudprovider.sync_delete')
- validate = false
- }
- if (obj.enabled) {
- tooltip = i18n.t('network.text_310')
- validate = false
- }
- if (!ownerDomain(obj)) {
- tooltip = i18n.t('cloudenv.text_358')
- validate = false
- }
- if (obj.brand !== 'Azure') {
- const opt = brandMap[obj.brand]
- const brand = (opt && opt.label) || obj.brand
- tooltip = i18n.t('cloudenv.text_605', [brand])
- validate = false
- }
- return {
- tooltip,
- validate,
- }
- },
- },
- ]
- },
- },
- ]
- },
- methods: {
- syncPolicy (item, ownerDomain) {
- let tooltip
- const items = changeToArr(item)
- if (!items.length) return { validate: false }
- const enabledValid = items.every(obj => {
- if (!obj.enabled) {
- tooltip = i18n.t('cloudenv.text_312')
- return false
- }
- return true
- })
- const autoSyncValid = items.every(obj => {
- if (obj.enable_auto_sync && obj.sync_status !== 'idle') {
- tooltip = i18n.t('cloudenv.text_313')
- return false
- }
- return true
- })
- return {
- validate: enabledValid && autoSyncValid && ownerDomain,
- tooltip,
- }
- },
- setAutoSyncPolicy (item, ownerDomain) {
- let tooltip
- const items = changeToArr(item)
- if (!items.length) return { validate: false }
- const enabledValid = items.every(obj => {
- if (!obj.enabled) {
- tooltip = i18n.t('cloudenv.text_312')
- return false
- }
- return true
- })
- return {
- validate: enabledValid && ownerDomain,
- tooltip,
- }
- },
- },
- }
|