perf: 修改平台创建

This commit is contained in:
ibuler
2022-09-01 17:42:30 +08:00
parent a9e38b2be6
commit 80afe04aa9
2 changed files with 38 additions and 21 deletions

View File

@@ -18,7 +18,7 @@ export class FormFieldGenerator {
return { label: v.label, value: v.value } return { label: v.label, value: v.value }
}) })
// 因为现在的 detail 返回的 choice 是一个对象了 {label: '', value: ''} // 因为现在的 detail 返回的 choice 是一个对象了 {label: '', value: ''}
if (type === 'well_choice') { if (type === 'labeled_choice') {
field.options = field.options.map(v => { field.options = field.options.map(v => {
v.value = { value: v.value } v.value = { value: v.value }
return v return v

View File

@@ -39,28 +39,31 @@ export default {
name: '', name: '',
port: 0 port: 0
}, },
opsItems: [
'gather_facts_enabled', 'create_account_enabled',
'change_password_enabled', 'verify_account_enabled',
'gather_accounts_enabled', 'su_enabled'
],
initial: { initial: {
comment: '', comment: '',
charset: 'utf8', charset: 'utf8',
category_type: ['host', 'linux'], category_type: ['host', 'linux']
domain_enabled: false,
protocols_enabled: false,
verify_account_enabled: false,
create_account_enabled: false,
change_password_enabled: false,
su_enabled: false
}, },
fields: [ fields: [
[this.$t('common.Basic'), [ [this.$t('common.Basic'), [
'name', 'category_type', 'charset' 'name', 'category_type'
]], ]],
[this.$t('assets.Protocol'), [ [this.$t('assets.Asset'), [
'protocols_enabled', 'protocols' 'charset',
'protocols_enabled', 'protocols',
'gather_facts_enabled', 'gather_facts_method'
]], ]],
[this.$t('assets.Account'), [ [this.$t('assets.Account'), [
'su_enabled', 'su_method', 'su_enabled', 'su_method',
'create_account_enabled', 'create_account_method',
'verify_account_enabled', 'verify_account_method', 'verify_account_enabled', 'verify_account_method',
'change_password_enabled', 'change_password_method' 'change_password_enabled', 'change_password_method',
'gather_accounts_enabled', 'gather_accounts_method'
]], ]],
[this.$t('common.Other'), ['comment']] [this.$t('common.Other'), ['comment']]
], ],
@@ -101,19 +104,14 @@ export default {
hidden: (formValue) => !formValue['protocols_enabled'] hidden: (formValue) => !formValue['protocols_enabled']
}, },
verify_account_method: { verify_account_method: {
hidden: (formValue) => {
return !formValue['verify_account_enabled']
},
type: 'select', type: 'select',
options: [] options: []
}, },
change_password_method: { change_password_method: {
hidden: (formValue) => !formValue['change_password_enabled'],
type: 'select', type: 'select',
options: [] options: []
}, },
su_method: { su_method: {
hidden: (formValue) => !formValue['su_enabled'],
type: 'select' type: 'select'
} }
}, },
@@ -161,15 +159,32 @@ export default {
const protocols = constraints['protocols'] || [] const protocols = constraints['protocols'] || []
this.fieldsMeta.protocols_enabled.el.disabled = protocols.length === 0 this.fieldsMeta.protocols_enabled.el.disabled = protocols.length === 0
this.fieldsMeta.protocols.el.choices = protocols this.fieldsMeta.protocols.el.choices = protocols
this.initial.protocols_enabled = !!protocols.length this.initial.protocols_enabled = !!protocols.length
for (const itemOk of this.opsItems) {
const itemConstraint = constraints[itemOk]
const itemMethod = itemOk.replace('_enabled', '_method')
if (itemConstraint === false) {
_.set(this.fieldsMeta, `${itemOk}.el.disabled`, true)
}
if (!this.fieldsMeta[itemMethod]?.hidden) {
_.set(this.fieldsMeta, `${itemMethod}.hidden`, (formValue) => !formValue[itemOk])
}
// set default value
if (this.initial[itemOk] === undefined) {
this.initial[itemOk] = false
}
if (_.get(this.fieldsMeta, `${itemMethod}.type`) === undefined) {
_.set(this.fieldsMeta, `${itemMethod}.type`, 'select')
}
}
}, },
async setOpsMethods() { async setOpsMethods() {
const category = this.$route.query.category const category = this.$route.query.category
const type = this.$route.query.type const type = this.$route.query.type
const allMethods = await this.$axios.get('/api/v1/assets/platforms/ops-methods/') const allMethods = await this.$axios.get('/api/v1/assets/platforms/ops-methods/')
const items = ['verify_account', 'change_password'] for (const itemOk of this.opsItems) {
for (const item of items) { const item = itemOk.replace('_enabled', '')
const methods = allMethods.filter(method => { const methods = allMethods.filter(method => {
const ok = method['method'] === item && method['category'] === category const ok = method['method'] === item && method['category'] === category
const tpOk = method['type'].indexOf(type) > -1 || const tpOk = method['type'].indexOf(type) > -1 ||
@@ -178,7 +193,9 @@ export default {
}).map(method => { }).map(method => {
return { value: method['id'], label: method['name'] } return { value: method['id'], label: method['name'] }
}) })
this.fieldsMeta[item + '_method'].options = methods if (methods.length > 0) {
this.fieldsMeta[`${itemOk.replace('_enabled', '_method')}`].options = methods
}
} }
} }
} }