通讯设置

This commit is contained in:
jingna 2026-05-18 17:39:42 +08:00
parent c07a118964
commit 2bf510dced

View File

@ -1,38 +1,37 @@
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { fetchDeviceNet, fetchDevicePort, saveDeviceConfig, verifyAccessPassword, fetchChannelConfig } from '@/api/platform'
//
const formData = ref({
networkCard: '网卡二',
ipAddress: '192.168.1.56',
subnetMask: '255.255.255.255',
gateway: '192.168.1.56',
tcpProtocol: 'Modbus TCP',
//
comPort: 'COM3',
baudRate: 115200,
parity: 'NONE',
dataBits: 8,
stopBits: 1,
rtuProtocol: 'Modbus RTU'
const formData: any = ref({
nic: '',
ip: '',
mask: '',
gateway: '',
protocol: '',
})
const networkCardOptions = [
const formData2: any = ref({
port: '',
baud: null,
parity: '',
data_bits: null,
stop_bits: null,
protocol: ''
})
const networkCardOptions: any = ref([
{ label: '网卡一', value: '网卡一' },
{ label: '网卡二', value: '网卡二' }
]
{ label: '网卡二', value: '网卡二' },
])
const tcpProtocolOptions = [
const tcpProtocolOptions: any = [
{ label: 'Modbus TCP', value: 'Modbus TCP' },
{ label: 'IEC104 ', value: 'IEC104' }
]
const comPortOptions = [
const comPortOptions: any = ref([
{ label: 'COM1', value: 'COM1' },
{ label: 'COM2', value: 'COM2' },
{ label: 'COM3', value: 'COM3' }
]
])
const baudRateOptions = [
{ label: '9600', value: 9600 },
@ -68,29 +67,70 @@ const rtuProtocolOptions = [
//
const handleSave = () => {
ElMessageBox.prompt('请输入密码', '保存', {
confirmButtonText: '确定',
cancelButtonText: '取消',
closeOnClickModal: false,
// inputType: 'password',
})
.then(({ value }) => {
console.log(value)
// ElMessage({
// type: 'success',
// message: ``,
// })
})
.catch(() => {
// ElMessage({
// type: 'info',
// message: '',
// })
confirmButtonText: '确定',
cancelButtonText: '取消',
closeOnClickModal: false,
})
.then(({ value }) => {
verifyAccessPassword(value).then((res: any) => {
if (res.code == 200) {
const params = {
net: [formData.value],
uart: [formData2.value],
password: config.value.password,
hardware_version: config.value.hardware_version,
software_version: config.value.software_version,
}
saveDeviceConfig(params).then((res: any) => {
if (res.code == 200) {
ElMessage({
type: 'success',
message: `保存成功`,
})
} else {
ElMessage({
type: 'info',
message: '保存失败',
})
}
})
} else {
ElMessage({
type: 'info',
message: '密码错误',
})
}
})
})
.catch(() => {
// ElMessage({
// type: 'info',
// message: '',
// })
})
console.log('保存配置:', formData.value)
}
const config: any = ref({})
const handleChange = (val: any) => {
fetchDeviceNet(val).then((res: any) => {
formData.value = res
})
}
const handleChangePort = (val: any) => {
fetchDevicePort(val).then((res: any) => {
formData2.value = res
})
}
function init() {
fetchDeviceNet('网卡一').then((res: any) => {
formData.value = res
})
fetchDevicePort('COM1').then((res: any) => {
formData2.value = res
})
fetchChannelConfig().then((res: any) => {
config.value = res
})
}
onMounted(() => {
init()
@ -108,18 +148,18 @@ onMounted(() => {
</div>
<div class="form-row">
<el-form-item label="网卡号">
<el-select v-model="formData.networkCard" placeholder="请选择">
<el-select v-model="formData.nic" placeholder="请选择" @change="handleChange">
<el-option v-for="item in networkCardOptions" :key="item.value" :label="item.label"
:value="item.value" />
:value="item.label" />
</el-select>
</el-form-item>
<el-form-item label="IP地址">
<el-input v-model="formData.ipAddress" />
<el-input v-model="formData.ip" />
</el-form-item>
</div>
<div class="form-row">
<el-form-item label="子网掩码">
<el-input v-model="formData.subnetMask" />
<el-input v-model="formData.mask" />
</el-form-item>
<el-form-item label="默认网关">
<el-input v-model="formData.gateway" />
@ -127,9 +167,9 @@ onMounted(() => {
</div>
<div class="form-row">
<el-form-item label="通讯协议">
<el-select v-model="formData.tcpProtocol" placeholder="请选择">
<el-select v-model="formData.protocol" placeholder="请选择">
<el-option v-for="item in tcpProtocolOptions" :key="item.value" :label="item.label"
:value="item.value" />
:value="item.label" />
</el-select>
</el-form-item>
<el-form-item />
@ -142,13 +182,13 @@ onMounted(() => {
</div>
<div class="form-row">
<el-form-item label="串口号">
<el-select v-model="formData.comPort" placeholder="请选择">
<el-option v-for="item in comPortOptions" :key="item.value" :label="item.label"
:value="item.value" />
<el-select v-model="formData2.port" placeholder="请选择" @change="handleChangePort">
<el-option v-for="item in comPortOptions" :key="item.label" :label="item.label"
:value="item.label" />
</el-select>
</el-form-item>
<el-form-item label="波特率">
<el-select v-model="formData.baudRate" placeholder="请选择">
<el-select v-model="formData2.baud" placeholder="请选择">
<el-option v-for="item in baudRateOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
@ -156,13 +196,13 @@ onMounted(() => {
</div>
<div class="form-row">
<el-form-item label="校验位">
<el-select v-model="formData.parity" placeholder="请选择">
<el-select v-model="formData2.parity" placeholder="请选择">
<el-option v-for="item in parityOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="数据位">
<el-select v-model="formData.dataBits" placeholder="请选择">
<el-select v-model="formData2.data_bits" placeholder="请选择">
<el-option v-for="item in dataBitsOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
@ -170,13 +210,13 @@ onMounted(() => {
</div>
<div class="form-row">
<el-form-item label="停止位">
<el-select v-model="formData.stopBits" placeholder="请选择">
<el-select v-model="formData2.stop_bits" placeholder="请选择">
<el-option v-for="item in stopBitsOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="通讯协议">
<el-select v-model="formData.rtuProtocol" placeholder="请选择">
<el-select v-model="formData2.protocol" placeholder="请选择">
<el-option v-for="item in rtuProtocolOptions" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
@ -197,6 +237,7 @@ onMounted(() => {
width: 100%;
height: 100%;
padding: 20px;
.form-wrapper {
background: #fff;
padding: 20px 50px;
@ -204,6 +245,7 @@ onMounted(() => {
padding-bottom: 120px;
box-shadow: 0px 0px 10px rgba(219, 225, 236, 1);
}
.section {
margin-bottom: 24px;
padding-bottom: 16px;