HttpConfigForm.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <template>
  2. <el-form-item label="请求地址" prop="config.url">
  3. <el-input v-model="config.url" placeholder="请输入请求地址" />
  4. </el-form-item>
  5. <el-form-item label="请求方法" prop="config.method">
  6. <el-select v-model="config.method" placeholder="请选择请求方法">
  7. <el-option label="GET" value="GET" />
  8. <el-option label="POST" value="POST" />
  9. <el-option label="PUT" value="PUT" />
  10. <el-option label="DELETE" value="DELETE" />
  11. </el-select>
  12. </el-form-item>
  13. <el-form-item label="请求头" prop="config.headers">
  14. <el-input
  15. v-model="headersStr"
  16. placeholder="请输入请求头,格式为 JSON"
  17. type="textarea"
  18. @input="handleHeadersChange"
  19. />
  20. </el-form-item>
  21. <el-form-item label="请求参数" prop="config.query">
  22. <el-input
  23. v-model="queryStr"
  24. placeholder="请输入请求参数,格式为 JSON"
  25. type="textarea"
  26. @input="handleQueryChange"
  27. />
  28. </el-form-item>
  29. <el-form-item label="请求体" prop="config.body">
  30. <el-input v-model="config.body" placeholder="请输入请求体" type="textarea" />
  31. </el-form-item>
  32. </template>
  33. <script lang="ts" setup>
  34. import { HttpConfig, IoTDataBridgeConfigType } from '@/api/iot/rule/databridge'
  35. import { useVModel } from '@vueuse/core'
  36. defineOptions({ name: 'HttpConfigForm' })
  37. const props = defineProps<{
  38. modelValue: any
  39. }>()
  40. const emit = defineEmits(['update:modelValue'])
  41. const config = useVModel(props, 'modelValue', emit) as Ref<HttpConfig>
  42. const headersStr = ref('{}')
  43. const queryStr = ref('{}')
  44. /** 组件初始化 */
  45. onMounted(() => {
  46. config.value = {
  47. type: IoTDataBridgeConfigType.HTTP,
  48. url: '',
  49. method: 'GET',
  50. headers: {},
  51. query: {},
  52. body: ''
  53. }
  54. // 初始化字符串形式
  55. headersStr.value = JSON.stringify(config.value.headers || {}, null, 2)
  56. queryStr.value = JSON.stringify(config.value.query || {}, null, 2)
  57. })
  58. // 处理headers输入变化
  59. const handleHeadersChange = (val: string) => {
  60. try {
  61. config.value.headers = JSON.parse(val)
  62. } catch (e) {
  63. // 解析失败,保留原始字符串
  64. }
  65. }
  66. // 处理query输入变化
  67. const handleQueryChange = (val: string) => {
  68. try {
  69. config.value.query = JSON.parse(val)
  70. } catch (e) {
  71. // 解析失败,保留原始字符串
  72. }
  73. }
  74. </script>