refactor: reuse snmp oid editor in security form
This commit is contained in:
@@ -157,13 +157,11 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-form-item field="snmp_oids" label="SNMP OID配置(JSON数组)">
|
<SnmpOidEditor
|
||||||
<a-textarea
|
ref="snmpOidEditorRef"
|
||||||
v-model="formData.snmp_oids"
|
v-model="formData.snmp_oids"
|
||||||
:rows="3"
|
:reset-key="snmpOidEditorResetKey"
|
||||||
placeholder='可留空使用默认模板,或填写如 [{"oid":"1.3.6.1.2.1.1.3.0","metric_name":"sys_uptime","metric_unit":"timeticks"}]'
|
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<a-row :gutter="20">
|
<a-row :gutter="20">
|
||||||
@@ -214,6 +212,7 @@ import type { FormInstance } from '@arco-design/web-vue'
|
|||||||
import { createSecurityService, updateSecurityService, SECURITY_TYPE_OPTIONS, type SecurityServiceFormData } from '@/api/ops/security'
|
import { createSecurityService, updateSecurityService, SECURITY_TYPE_OPTIONS, type SecurityServiceFormData } from '@/api/ops/security'
|
||||||
import { fetchPolicyOptions, type PolicyOptionItem } from '@/api/ops/alertPolicy'
|
import { fetchPolicyOptions, type PolicyOptionItem } from '@/api/ops/alertPolicy'
|
||||||
import { fetchServerList, type ServerItem } from '@/api/ops/server'
|
import { fetchServerList, type ServerItem } from '@/api/ops/server'
|
||||||
|
import SnmpOidEditor from '../../components/SnmpOidEditor.vue'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
visible: boolean
|
visible: boolean
|
||||||
@@ -227,6 +226,8 @@ const props = withDefaults(defineProps<Props>(), {
|
|||||||
const emit = defineEmits(['update:visible', 'success'])
|
const emit = defineEmits(['update:visible', 'success'])
|
||||||
|
|
||||||
const formRef = ref<FormInstance>()
|
const formRef = ref<FormInstance>()
|
||||||
|
const snmpOidEditorRef = ref<InstanceType<typeof SnmpOidEditor>>()
|
||||||
|
const snmpOidEditorResetKey = ref(0)
|
||||||
const confirmLoading = ref(false)
|
const confirmLoading = ref(false)
|
||||||
const policyOptions = ref<PolicyOptionItem[]>([])
|
const policyOptions = ref<PolicyOptionItem[]>([])
|
||||||
const serverOptions = ref<ServerItem[]>([])
|
const serverOptions = ref<ServerItem[]>([])
|
||||||
@@ -336,6 +337,7 @@ watch(
|
|||||||
extra: props.record.extra || '',
|
extra: props.record.extra || '',
|
||||||
policy_ids: props.record.policy_ids || [],
|
policy_ids: props.record.policy_ids || [],
|
||||||
})
|
})
|
||||||
|
snmpOidEditorResetKey.value += 1
|
||||||
} else {
|
} else {
|
||||||
Object.assign(formData, {
|
Object.assign(formData, {
|
||||||
service_identity: '',
|
service_identity: '',
|
||||||
@@ -368,6 +370,7 @@ watch(
|
|||||||
extra: '',
|
extra: '',
|
||||||
policy_ids: [],
|
policy_ids: [],
|
||||||
})
|
})
|
||||||
|
snmpOidEditorResetKey.value += 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -402,15 +405,10 @@ const handleOk = async () => {
|
|||||||
Message.warning('SNMP v2c 模式下请填写 community')
|
Message.warning('SNMP v2c 模式下请填写 community')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (formData.snmp_oids?.trim()) {
|
if (!snmpOidEditorRef.value?.validate()) {
|
||||||
try {
|
|
||||||
JSON.parse(formData.snmp_oids)
|
|
||||||
} catch {
|
|
||||||
Message.warning('SNMP OID配置必须是合法 JSON')
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
confirmLoading.value = true
|
confirmLoading.value = true
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user