admin-vue3/src/views/iot/rule/data/sink/config/TcpConfigForm.vue

104 lines
3.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<el-form-item label="服务器地址" prop="config.host">
<el-input v-model="config.host" placeholder="请输入 TCP 服务器地址localhost" />
</el-form-item>
<el-form-item label="端口" prop="config.port">
<el-input-number
v-model="config.port"
:max="65535"
:min="1"
controls-position="right"
placeholder="请输入端口"
/>
</el-form-item>
<el-form-item label="连接超时(ms)" prop="config.connectTimeoutMs">
<el-input-number
v-model="config.connectTimeoutMs"
:min="1000"
:step="1000"
controls-position="right"
placeholder="请输入连接超时时间"
/>
</el-form-item>
<el-form-item label="读取超时(ms)" prop="config.readTimeoutMs">
<el-input-number
v-model="config.readTimeoutMs"
:min="1000"
:step="1000"
controls-position="right"
placeholder="请输入读取超时时间"
/>
</el-form-item>
<el-form-item label="启用 SSL" prop="config.ssl">
<el-switch v-model="config.ssl" />
</el-form-item>
<el-form-item v-if="config.ssl" label="SSL 证书路径" prop="config.sslCertPath">
<el-input v-model="config.sslCertPath" placeholder="请输入 SSL 证书路径" />
</el-form-item>
<el-form-item label="数据格式" prop="config.dataFormat">
<el-select v-model="config.dataFormat" placeholder="请选择数据格式">
<el-option label="JSON" value="JSON" />
<el-option label="BINARY" value="BINARY" />
</el-select>
</el-form-item>
<el-form-item label="心跳间隔(ms)" prop="config.heartbeatIntervalMs">
<el-input-number
v-model="config.heartbeatIntervalMs"
:min="0"
:step="1000"
controls-position="right"
placeholder="0 表示不启用心跳"
/>
</el-form-item>
<el-form-item label="重连间隔(ms)" prop="config.reconnectIntervalMs">
<el-input-number
v-model="config.reconnectIntervalMs"
:min="1000"
:step="1000"
controls-position="right"
placeholder="请输入重连间隔时间"
/>
</el-form-item>
<el-form-item label="最大重连次数" prop="config.maxReconnectAttempts">
<el-input-number
v-model="config.maxReconnectAttempts"
:min="0"
controls-position="right"
placeholder="请输入最大重连次数"
/>
</el-form-item>
</template>
<script lang="ts" setup>
import { IotDataSinkTypeEnum, TcpConfig } from '@/api/iot/rule/data/sink'
import { useVModel } from '@vueuse/core'
import { isEmpty } from '@/utils/is'
defineOptions({ name: 'TcpConfigForm' })
const props = defineProps<{
modelValue: any
}>()
const emit = defineEmits(['update:modelValue'])
const config = useVModel(props, 'modelValue', emit) as Ref<TcpConfig>
/** 组件初始化 */
onMounted(() => {
if (!isEmpty(config.value)) {
return
}
config.value = {
type: IotDataSinkTypeEnum.TCP + '',
host: '',
port: 8080,
connectTimeoutMs: 5000,
readTimeoutMs: 10000,
ssl: false,
sslCertPath: '',
dataFormat: 'JSON',
heartbeatIntervalMs: 30000,
reconnectIntervalMs: 5000,
maxReconnectAttempts: 3
}
})
</script>