ComponentConfiguration.vue
4.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<script setup lang="ts">
import { NInput, NInputNumber, NInputGroup, NButton, NSelect, SelectOption, NTabs, NTabPane, NSpace } from 'naive-ui'
import { SettingItem, SettingItemBox } from '@/components/Pages/ChartItemSetting';
import { selectTimeOptions, selectTypeOptions } from '../../../index.d';
import { RequestBodyEnum, RequestContentTypeEnum, RequestDataTypeEnum, RequestHttpEnum, RequestHttpIntervalEnum, RequestParams } from '@/enums/httpEnum';
import { ref, unref } from 'vue';
import DefaultRequestContent from './DefaultRequestContent.vue';
import SqlConfiguration from './SqlConfiguration.vue';
import { RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d';
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore';
const chartEditStore = useChartEditStore()
const requestContentTypeRef = ref(RequestContentTypeEnum.DEFAULT)
const requestHttpTypeRef = ref(RequestHttpEnum.GET)
const requestIntervalRef = ref<number | undefined>(20)
const requestIntervalUnitRef = ref(RequestHttpIntervalEnum.SECOND)
const requestSQLContentRef = ref('select * from where')
const requestParamsRef = ref({ Header: {}, Params: {}, Body: { 'form-data': {}, 'json': '', 'x-www-form-urlencoded': {}, 'xml': '' } } as RequestParams)
const requestParamsBodyTypeRef = ref(RequestBodyEnum.NONE)
const requestUrlRef = ref<string>()
const getConfigurationData = (): RequestConfigType => {
return {
requestContentType: unref(requestContentTypeRef),
requestHttpType: unref(requestHttpTypeRef),
requestInterval: unref(requestIntervalRef),
requestIntervalUnit: unref(requestIntervalUnitRef),
requestDataType: RequestDataTypeEnum.AJAX,
requestParamsBodyType: unref(requestParamsBodyTypeRef),
requestSQLContent: {
sql: unref(requestSQLContentRef)
},
requestParams: unref(requestParamsRef),
requestUrl: `${chartEditStore.getRequestGlobalConfig.requestOriginUrl}${unref(requestUrlRef)}`
}
}
const setConfigurationData = (request: RequestConfigType) => {
const { requestContentType, requestHttpType, requestInterval, requestIntervalUnit, requestParamsBodyType, requestSQLContent, requestParams, requestUrl } = request
requestContentTypeRef.value = requestContentType
requestHttpTypeRef.value = requestHttpType
requestIntervalRef.value = requestInterval
requestIntervalUnitRef.value = requestIntervalUnit
requestParamsBodyTypeRef.value = requestParamsBodyType
requestSQLContentRef.value = requestSQLContent.sql
requestParamsRef.value = requestParams
requestUrlRef.value = !requestUrl ? ``: 'h' + requestUrl?.split('h')[1]
}
defineExpose({
getConfigurationData,
setConfigurationData
})
</script>
<template>
<SettingItemBox name="地址" :itemRightStyle="{
gridTemplateColumns: '5fr 2fr 1fr'
}">
<SettingItem name="请求方式 & URL地址">
<NInputGroup>
<NSelect v-model:value="requestHttpTypeRef" style="width: 150px;" size="small"
:options="(selectTypeOptions as SelectOption[])" />
<NInput v-model:value="requestUrlRef" class="select-time-number" size="small" min="0" :show-button="false"
placeholder="请输入URL地址" />
</NInputGroup>
</SettingItem>
<SettingItem name="更新间隔,为 0 只会初始化">
<NInputGroup>
<NInputNumber v-model:value="requestIntervalRef" class="select-time-number" size="small" min="0"
:show-button="false" placeholder="请输入数字" />
<!-- 单位 -->
<NSelect v-model:value="requestIntervalUnitRef" class="select-time-options" size="small"
:options="(selectTimeOptions as SelectOption[])" />
</NInputGroup>
</SettingItem>
</SettingItemBox>
<SettingItemBox name="选择方式">
<NTabs v-model:value="requestContentTypeRef" type="segment" size="small">
<NTabPane :name="RequestContentTypeEnum.DEFAULT" tab="普通请求" />
<NTabPane :name="RequestContentTypeEnum.SQL" tab="SQL请求" />
</NTabs>
</SettingItemBox>
<SettingItemBox>
<DefaultRequestContent v-if="requestContentTypeRef === RequestContentTypeEnum.DEFAULT"
v-model:value="requestParamsRef" v-model:request-params-body-type="requestParamsBodyTypeRef" />
<SqlConfiguration v-model:value="requestSQLContentRef" v-if="requestContentTypeRef === RequestContentTypeEnum.SQL" />
</SettingItemBox>
</template>