1
1
<template >
2
2
<el-form-item label =" 请求地址" prop =" config.url" >
3
- <el-input v-model =" config.url" placeholder =" 请输入请求地址" />
3
+ <el-input v-model =" urlPath" placeholder =" 请输入请求地址" >
4
+ <template #prepend >
5
+ <el-select v-model =" urlPrefix" placeholder =" Select" style =" width : 115px " >
6
+ <el-option label =" http://" value =" http://" />
7
+ <el-option label =" https://" value =" https://" />
8
+ </el-select >
9
+ </template >
10
+ </el-input >
4
11
</el-form-item >
5
12
<el-form-item label =" 请求方法" prop =" config.method" >
6
13
<el-select v-model =" config.method" placeholder =" 请选择请求方法" >
11
18
</el-select >
12
19
</el-form-item >
13
20
<el-form-item label =" 请求头" prop =" config.headers" >
14
- <el-input
15
- v-model =" headersStr"
16
- placeholder =" 请输入请求头,格式为 JSON"
17
- type =" textarea"
18
- @input =" handleHeadersChange"
19
- />
21
+ <key-value-editor v-model =" config.headers" add-button-text =" 添加请求头" />
20
22
</el-form-item >
21
23
<el-form-item label =" 请求参数" prop =" config.query" >
22
- <el-input
23
- v-model =" queryStr"
24
- placeholder =" 请输入请求参数,格式为 JSON"
25
- type =" textarea"
26
- @input =" handleQueryChange"
27
- />
24
+ <key-value-editor v-model =" config.query" add-button-text =" 添加参数" />
28
25
</el-form-item >
29
26
<el-form-item label =" 请求体" prop =" config.body" >
30
- <el-input v-model =" config.body" placeholder =" 请输入请求体 " type =" textarea" />
27
+ <el-input v-model =" config.body" placeholder =" 请输入内容 " type =" textarea" />
31
28
</el-form-item >
32
29
</template >
30
+
33
31
<script lang="ts" setup>
34
32
import { HttpConfig , IoTDataBridgeConfigType } from ' @/api/iot/rule/databridge'
35
33
import { useVModel } from ' @vueuse/core'
36
34
import { isEmpty } from ' @/utils/is'
35
+ import KeyValueEditor from ' ./components/KeyValueEditor.vue'
37
36
38
37
defineOptions ({ name: ' HttpConfigForm' })
39
38
@@ -43,43 +42,43 @@ const props = defineProps<{
43
42
const emit = defineEmits ([' update:modelValue' ])
44
43
const config = useVModel (props , ' modelValue' , emit ) as Ref <HttpConfig >
45
44
46
- const headersStr = ref (' {}' )
47
- const queryStr = ref (' {}' )
45
+ // URL处理
46
+ const urlPrefix = ref (' http://' )
47
+ const urlPath = ref (' ' )
48
+ const fullUrl = computed (() => {
49
+ return urlPath .value ? urlPrefix .value + urlPath .value : ' '
50
+ })
51
+
52
+ // 监听URL变化
53
+ watch ([urlPrefix , urlPath ], () => {
54
+ config .value .url = fullUrl .value
55
+ })
48
56
49
57
/** 组件初始化 */
50
58
onMounted (() => {
51
59
if (! isEmpty (config .value )) {
60
+ // 初始化URL
61
+ if (config .value .url ) {
62
+ if (config .value .url .startsWith (' https://' )) {
63
+ urlPrefix .value = ' https://'
64
+ urlPath .value = config .value .url .substring (8 )
65
+ } else if (config .value .url .startsWith (' http://' )) {
66
+ urlPrefix .value = ' http://'
67
+ urlPath .value = config .value .url .substring (7 )
68
+ } else {
69
+ urlPath .value = config .value .url
70
+ }
71
+ }
52
72
return
53
73
}
74
+
54
75
config .value = {
55
76
type: IoTDataBridgeConfigType .HTTP ,
56
77
url: ' ' ,
57
- method: ' GET ' ,
78
+ method: ' POST ' ,
58
79
headers: {},
59
80
query: {},
60
81
body: ' '
61
82
}
62
-
63
- // 初始化字符串形式
64
- headersStr .value = JSON .stringify (config .value .headers || {}, null , 2 )
65
- queryStr .value = JSON .stringify (config .value .query || {}, null , 2 )
66
83
})
67
-
68
- // 处理headers输入变化
69
- const handleHeadersChange = (val : string ) => {
70
- try {
71
- config .value .headers = JSON .parse (val )
72
- } catch (e ) {
73
- // 解析失败,保留原始字符串
74
- }
75
- }
76
-
77
- // 处理query输入变化
78
- const handleQueryChange = (val : string ) => {
79
- try {
80
- config .value .query = JSON .parse (val )
81
- } catch (e ) {
82
- // 解析失败,保留原始字符串
83
- }
84
- }
85
84
</script >
0 commit comments