addDefinition.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <el-form
  3. ref="ruleFormRef"
  4. style="max-width: 600px"
  5. :model="ruleForm"
  6. :rules="rules"
  7. label-width="110px"
  8. class="demo-ruleForm"
  9. :size="formSize"
  10. status-icon
  11. label-suffix=":"
  12. >
  13. <el-form-item label="指标名称" prop="name">
  14. <el-input v-model="ruleForm.name" placeholder="请输入指标名称"/>
  15. </el-form-item>
  16. <el-form-item label="指标类型" prop="type">
  17. <el-select v-model="ruleForm.type" placeholder="请选择">
  18. <el-option :label="item" :value="item" v-for="(item,index) in locationOptions" :key="index"/>
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item label="指标编码" prop="code">
  22. <el-input v-model="ruleForm.code" placeholder="请输入指标编码"/>
  23. </el-form-item>
  24. <el-form-item label="指标分类" prop="index">
  25. <el-radio-group v-model="ruleForm.index">
  26. <el-radio-button label="CPU指标" value="CPU指标"/>
  27. <el-radio-button label="内存指标" value="内存指标"/>
  28. <el-radio-button label="磁盘指标" value="磁盘指标"/>
  29. </el-radio-group>
  30. </el-form-item>
  31. <el-form-item label="数据获取公式">
  32. <el-input v-model="ruleForm.formula" type="textarea" placeholder="请输入数据获取公式"
  33. :autosize="{ minRows: 4, maxRows: 8 }"/>
  34. </el-form-item>
  35. <el-form-item label="告警-低">
  36. <el-input v-model="ruleForm.alarmLow" placeholder="请输入告警-低"/>
  37. </el-form-item>
  38. <el-form-item label="告警-中">
  39. <el-input v-model="ruleForm.alarmMid" placeholder="请输入告警-中"/>
  40. </el-form-item>
  41. <el-form-item label="告警-高">
  42. <el-input v-model="ruleForm.alarmHigh" placeholder="请输入告警-高"/>
  43. </el-form-item>
  44. </el-form>
  45. </template>
  46. <script setup lang="ts">
  47. import {reactive, ref} from 'vue'
  48. import type {ComponentSize, FormInstance, FormRules} from 'element-plus'
  49. interface RuleForm {
  50. name: string
  51. type: string,
  52. code: string,
  53. index: string,
  54. formula: string,
  55. alarmLow: string,
  56. alarmMid: string,
  57. alarmHigh: string
  58. }
  59. const formSize = ref<ComponentSize>('default')
  60. const ruleFormRef = ref<FormInstance>()
  61. const ruleForm = reactive<RuleForm>({
  62. name: '',
  63. type: '',
  64. code: '',
  65. index: '',
  66. formula: '',
  67. alarmLow: '',
  68. alarmMid: '',
  69. alarmHigh: ''
  70. })
  71. const locationOptions = ['pinpoint', 'node_exporter', 'mysql_exporter']
  72. const rules = reactive<FormRules<RuleForm>>({
  73. name: [
  74. {required: true, message: '指标名称不能为空', trigger: 'blur'},
  75. {min: 2, max: 6, message: '长度不能小于2且大于6', trigger: 'blur'},
  76. ],
  77. type: {required: true, message: '请选择指标类型', trigger: 'change'},
  78. code: {required: true, message: '指标编码不能为空', trigger: 'blur'},
  79. index: {required: true, message: '请选择指标分类', trigger: 'change'},
  80. })
  81. const submitForm = async (formEl: FormInstance | undefined) => {
  82. if (!formEl) return
  83. await formEl.validate((valid, fields) => {
  84. if (valid) {
  85. console.log('submit!')
  86. } else {
  87. console.log('error submit!', fields)
  88. }
  89. })
  90. }
  91. const resetForm = (formEl: FormInstance | undefined) => {
  92. if (!formEl) return
  93. formEl.resetFields()
  94. }
  95. </script>
  96. <style scoped lang="scss">
  97. </style>