1
0
mirror of https://github.com/jumpserver/lina.git synced 2025-05-11 09:35:34 +00:00

perf: 修改账号创建更新

This commit is contained in:
ibuler 2025-03-24 18:00:46 +08:00 committed by 老广
parent 8a836faa25
commit 6bcf8b1b15
3 changed files with 31 additions and 31 deletions
src/views/assets
Asset
AssetCreateUpdate
AssetList/components
const.js

View File

@ -47,7 +47,9 @@ export default {
return {
loading: true,
platform: {},
changePlatformID: '',
initing: false,
// meta platform id
platformID: this.$route.query.platform || '',
meta: {},
iConfig: {},
defaultConfig: {
@ -95,11 +97,18 @@ export default {
},
methods: {
async init() {
// loading
this.$log.debug('Initing asset base upcate create', this.initing)
if (this.initing) {
return
}
this.initing = true
try {
await this.genConfig()
await this.setInitial()
await this.setPlatformConstrains()
} finally {
this.initing = false
this.loading = false
}
},
@ -107,9 +116,9 @@ export default {
const { addFields, addFieldsMeta, defaultConfig } = this
defaultConfig.fieldsMeta = assetFieldsMeta(this, this.$route.query.type)
let url = this.url
const { id = '', platform } = this.$route.query
if (platform && !id) {
url = setUrlParam(url, 'platform', platform)
const id = this.$route.params.id
if (!id) {
url = setUrlParam(url, 'platform', this.platformID)
}
// null, undefined
defaultConfig.fields = defaultConfig.fields.filter(Boolean)
@ -134,9 +143,9 @@ export default {
},
async setInitial() {
const { defaultConfig } = this
const { node, platform } = this.$route.query
const { node } = this.$route.query
const nodesInitial = node ? [node] : []
const platformId = this.changePlatformID || this.$route.query.platform || (platform || 'Linux')
const platformId = this.platformID || 'Linux'
const url = `/api/v1/assets/platforms/${platformId}/`
this.platform = await this.$axios.get(url)
const initial = {
@ -165,13 +174,6 @@ export default {
const protocolChoices = this.iConfig.fieldsMeta.protocols.el.choices
protocolChoices.splice(0, protocolChoices.length, ...protocols)
this.iConfig.fieldsMeta.accounts.el.platform = platform
const hiddenCheckFields = ['protocols', 'domain']
for (const field of hiddenCheckFields) {
if (platform[field + '_enabled'] === false) {
this.iConfig.fieldsMeta[field].hidden = () => true
}
}
}
}
}

View File

@ -220,7 +220,8 @@ export default {
const query = {
platform: row.platform.id,
type: row.type.value,
category: row.category.value
category: row.category.value,
action: action
}
if (action === 'clone') {

View File

@ -26,12 +26,12 @@ export const filterSelectValues = (values) => {
return selects
}
function updatePlatformProtocols(vm, platformType, updateForm, isPlatformChanged = false) {
function updatePlatformProtocols(vm, platformType, updateForm, platformChanged = false) {
setTimeout(() => vm.init().then(() => {
const isCreate = vm?.$route?.meta.action === 'create' && vm?.$route?.query.clone_from === undefined
const need_modify = isCreate || isPlatformChanged
const isCreate = vm.$route.query.action === 'create' && vm?.$route?.query.clone_from === undefined
const needModify = isCreate || platformChanged
const platformProtocols = vm.platform.protocols
if (!need_modify) return
if (!needModify) return
if (platformType === 'website') {
const setting = Array.isArray(platformProtocols) ? platformProtocols[0].setting : platformProtocols.setting
updateForm({
@ -99,21 +99,15 @@ export const assetFieldsMeta = (vm, platformType) => {
}
},
on: {
change: ([event], updateForm) => {
change: _.debounce(([event], updateForm) => {
const pk = event.pk
const url = window.location.href
vm.changePlatformID = pk
if (url.includes('clone')) {
updatePlatformProtocols(vm, platformType, updateForm, true)
} else {
vm.$nextTick(() => {
updatePlatformProtocols(vm, platformType, updateForm, true)
})
}
},
input: ([event], updateForm) => {
vm.platformID = pk
updatePlatformProtocols(vm, platformType, updateForm, true)
}, 200),
input: _.debounce(([event], updateForm) => {
// 初始化的时候mounted 中没有这个逻辑
updatePlatformProtocols(vm, platformType, updateForm)
}
}, 200)
}
},
domain: {
@ -125,6 +119,9 @@ export const assetFieldsMeta = (vm, platformType) => {
ajax: {
url: '/api/v1/assets/domains/'
}
},
hidden: () => {
return vm.platform.domain_enabled === false
}
},
accounts: {