fix: 采集器 新增离散输入寄存器、单双高低位切换

This commit is contained in:
jackhoo_98 2023-03-30 15:17:17 +08:00
parent fc3d0d2d12
commit 2fbcc606e9
4 changed files with 58 additions and 13 deletions

View File

@ -30,6 +30,7 @@
v-model:value="formData.configuration.function" v-model:value="formData.configuration.function"
:options="[ :options="[
{ label: '01线圈寄存器', value: 'Coils' }, { label: '01线圈寄存器', value: 'Coils' },
{ label: '02离散输入寄存器', value: 'DiscreteInputs' },
{ label: '03保存寄存器', value: 'HoldingRegisters' }, { label: '03保存寄存器', value: 'HoldingRegisters' },
{ label: '04输入寄存器', value: 'InputRegisters' }, { label: '04输入寄存器', value: 'InputRegisters' },
]" ]"
@ -147,7 +148,8 @@
:showImage="false" :showImage="false"
v-model:value="formData.accessModes" v-model:value="formData.accessModes"
:options=" :options="
formData.configuration.function === 'InputRegisters' formData.configuration.function === 'InputRegisters' ||
formData.configuration.function === 'DiscreteInputs'
? [{ label: '读', value: 'read' }] ? [{ label: '读', value: 'read' }]
: [ : [
{ label: '读', value: 'read' }, { label: '读', value: 'read' },
@ -289,6 +291,7 @@ const oldPointKey = props.data.pointKey;
const InitAddress = { const InitAddress = {
Coils: 1, Coils: 1,
DiscreteInputs: 10001,
HoldingRegisters: 40001, HoldingRegisters: 40001,
InputRegisters: 30001, InputRegisters: 30001,
}; };

View File

@ -238,6 +238,9 @@ const filterOption = (input: string, option: any) => {
const clickDelete = (value: string) => { const clickDelete = (value: string) => {
emits('change', value); emits('change', value);
// todo
}; };
const getTargetData = (index: number, type: string) => { const getTargetData = (index: number, type: string) => {

View File

@ -73,21 +73,11 @@
{{ getTypeTooltip(formData.circuitBreaker.type) }} {{ getTypeTooltip(formData.circuitBreaker.type) }}
</p> </p>
<j-form-item <j-form-item
label="双字高低位切换"
:name="['configuration', 'endian']" :name="['configuration', 'endian']"
v-if="visibleEndian" v-if="visibleEndian"
:rules="LeftTreeRules.endian" :rules="LeftTreeRules.endian"
> >
<template #label>
<span>
高低位切换
<j-tooltip title="统一配置所有点位的高低位切换">
<AIcon
type="QuestionCircleOutlined"
style="margin-left: 2px"
/>
</j-tooltip>
</span>
</template>
<j-card-select <j-card-select
:showImage="false" :showImage="false"
v-model:value="formData.configuration.endian" v-model:value="formData.configuration.endian"
@ -99,6 +89,41 @@
:column="2" :column="2"
/> />
</j-form-item> </j-form-item>
<j-form-item
label="单字高低位切换"
:name="['configuration', 'endianIn']"
v-if="visibleEndian"
:rules="LeftTreeRules.endianIn"
>
<j-card-select
:showImage="false"
v-model:value="formData.configuration.endianIn"
:options="[
{ label: 'AB', value: 'BIG' },
{ label: 'BA', value: 'LITTLE' },
]"
@change="changeCardSelectEndianIn"
:column="2"
/>
</j-form-item>
<div
style="color: #616161"
v-if="
formData.configuration.endian ||
formData.configuration.endianIn
"
>
<p>
当前内存布局:{{
endianMap.get(formData.configuration.endian)
}}{{ endianMap.get(formData.configuration.endianIn) }}
</p>
<p>
只有4字节数据类型(int32ieee754 float)
具有4种内存布局其它只有ABCDDCBA两种内存布局(以双字配置为准)
</p>
</div>
<j-form-item label="说明" name="description"> <j-form-item label="说明" name="description">
<j-textarea <j-textarea
placeholder="请输入说明" placeholder="请输入说明"
@ -150,6 +175,11 @@ const emit = defineEmits(['change']);
const id = props.data.id; const id = props.data.id;
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
const endianMap = new Map([
['BIG', 'AB'],
['LITTLE', 'BA'],
]);
const formData = ref({ const formData = ref({
channelId: undefined, channelId: undefined,
name: '', name: '',
@ -157,6 +187,7 @@ const formData = ref({
unitId: '', unitId: '',
type: 'LowerFrequency', type: 'LowerFrequency',
endian: 'BIG', endian: 'BIG',
endianIn: 'BIG',
}, },
circuitBreaker: { circuitBreaker: {
type: 'LowerFrequency', type: 'LowerFrequency',
@ -203,6 +234,9 @@ const changeCardSelectType = (value: Array<string>) => {
const changeCardSelectEndian = (value: Array<string>) => { const changeCardSelectEndian = (value: Array<string>) => {
formData.value.configuration.endian = value[0]; formData.value.configuration.endian = value[0];
}; };
const changeCardSelectEndianIn = (value: Array<string>) => {
formData.value.configuration.endianIn = value[0];
};
const getChannelNoPaging = async () => { const getChannelNoPaging = async () => {
channelListAll.value = Store.get('channelListAll'); channelListAll.value = Store.get('channelListAll');
channelList.value = channelListAll.value.map((item) => ({ channelList.value = channelListAll.value.map((item) => ({

View File

@ -162,7 +162,12 @@ export const LeftTreeRules = {
}, },
], ],
type: [{ required: true, message: '请选择处理方式', trigger: 'blur' }], type: [{ required: true, message: '请选择处理方式', trigger: 'blur' }],
endian: [{ required: true, message: '请选择高低位切换', trigger: 'blur' }], endian: [
{ required: true, message: '请选择双字高低位切换', trigger: 'blur' },
],
endianIn: [
{ required: true, message: '请选择单字高低位切换', trigger: 'blur' },
],
}; };
export const FormTableColumns = [ export const FormTableColumns = [