diff --git a/src/views/ops/pages/dc/security/components/FormDialog.vue b/src/views/ops/pages/dc/security/components/FormDialog.vue index 9524491..912ba8d 100644 --- a/src/views/ops/pages/dc/security/components/FormDialog.vue +++ b/src/views/ops/pages/dc/security/components/FormDialog.vue @@ -157,13 +157,11 @@ - - - + @@ -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 { fetchPolicyOptions, type PolicyOptionItem } from '@/api/ops/alertPolicy' import { fetchServerList, type ServerItem } from '@/api/ops/server' +import SnmpOidEditor from '../../components/SnmpOidEditor.vue' interface Props { visible: boolean @@ -227,6 +226,8 @@ const props = withDefaults(defineProps(), { const emit = defineEmits(['update:visible', 'success']) const formRef = ref() +const snmpOidEditorRef = ref>() +const snmpOidEditorResetKey = ref(0) const confirmLoading = ref(false) const policyOptions = ref([]) const serverOptions = ref([]) @@ -336,6 +337,7 @@ watch( extra: props.record.extra || '', policy_ids: props.record.policy_ids || [], }) + snmpOidEditorResetKey.value += 1 } else { Object.assign(formData, { service_identity: '', @@ -368,6 +370,7 @@ watch( extra: '', policy_ids: [], }) + snmpOidEditorResetKey.value += 1 } } } @@ -402,13 +405,8 @@ const handleOk = async () => { Message.warning('SNMP v2c 模式下请填写 community') return } - if (formData.snmp_oids?.trim()) { - try { - JSON.parse(formData.snmp_oids) - } catch { - Message.warning('SNMP OID配置必须是合法 JSON') - return - } + if (!snmpOidEditorRef.value?.validate()) { + return } }