edit.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <el-dialog
  3. class="api-edit"
  4. v-model="showDialog"
  5. :title="`${formData.id ? '编辑规则' : '新增规则'}`"
  6. width="600px"
  7. :close-on-click-modal="false"
  8. :close-on-press-escape="false"
  9. >
  10. <el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="80px">
  11. <el-form-item label="规则名称" prop="name">
  12. <el-input v-model="formData.name" placeholder="输入接口名称" />
  13. </el-form-item>
  14. <el-form-item label="说明" prop="expound">
  15. <el-input v-model="formData.expound" type="textarea" :rows="3" />
  16. </el-form-item>
  17. </el-form>
  18. <template #footer>
  19. <div class="dialog-footer">
  20. <el-button @click="showDialog = false">取消</el-button>
  21. <el-button type="primary" @click="onSubmit">确定</el-button>
  22. </div>
  23. </template>
  24. </el-dialog>
  25. </template>
  26. <script lang="ts" setup>
  27. import { ref, reactive, nextTick } from 'vue';
  28. import api from '/@/api/rule';
  29. import axios from 'axios';
  30. import { ruleRequired } from '/@/utils/validator';
  31. import { ElMessage } from 'element-plus';
  32. const emit = defineEmits(['getList']);
  33. const props = defineProps({
  34. types: {
  35. type: Number,
  36. default: 0, // 规则编排是0 数据转发是1
  37. },
  38. });
  39. const showDialog = ref(false);
  40. const formRef = ref();
  41. const baseForm = {
  42. id: undefined,
  43. name: '',
  44. types: props.types,
  45. // types: 0,
  46. flowId: '',
  47. expound: '',
  48. };
  49. const formData = reactive({
  50. ...baseForm,
  51. });
  52. const ruleForm = {
  53. name: [ruleRequired('规则名称不能为空')],
  54. };
  55. const onSubmit = async () => {
  56. await formRef.value.validate();
  57. if (!formData.id) {
  58. const { data } = await axios.post(
  59. window.location.protocol + '//' + window.location.hostname + '/rule-engine/flow',
  60. {
  61. label: formData.name,
  62. disabled: false,
  63. info: '',
  64. env: [],
  65. nodes: [],
  66. },
  67. {
  68. headers: {
  69. Authorization: 'Bearer ' + JSON.parse(sessionStorage.token),
  70. },
  71. }
  72. );
  73. formData.flowId = data.id;
  74. }
  75. const theApi = formData.id ? api.edit : api.add;
  76. await theApi(formData);
  77. ElMessage.success('操作成功');
  78. resetForm();
  79. showDialog.value = false;
  80. emit('getList');
  81. };
  82. const resetForm = async () => {
  83. Object.assign(formData, { ...baseForm });
  84. formRef.value && formRef.value.resetFields();
  85. };
  86. const open = async (row: any) => {
  87. resetForm();
  88. showDialog.value = true;
  89. nextTick(() => {
  90. Object.assign(formData, { ...row });
  91. });
  92. };
  93. defineExpose({ open });
  94. </script>