diff --git a/src/views/DataCollect/Channel/Save/index.vue b/src/views/DataCollect/Channel/Save/index.vue
index 0a83c55c..8e01b54e 100644
--- a/src/views/DataCollect/Channel/Save/index.vue
+++ b/src/views/DataCollect/Channel/Save/index.vue
@@ -37,16 +37,15 @@
:name="['configuration', 'host']"
:rules="FormValidate.host"
>
-
+
@@ -80,7 +79,7 @@
-
{
const params = await formRef.value?.validate();
loading.value = true;
const response = !id
- ? await save(params)
- : await update(id, { ...props.data, ...params });
- if (response.status === 200) {
- emit('change', true);
- }
+ ? await save(params).catch(() => {})
+ : await update(id, { ...props.data, ...params }).catch(() => {});
+ emit('change', response?.status === 200);
loading.value = false;
formRef.value?.resetFields();
};
@@ -240,29 +240,33 @@ const handleCancel = () => {
formRef.value?.resetFields();
};
+const changeAuthType = (value: Array) => {
+ formData.value.configuration.authType = value[0];
+};
+
const filterOption = (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
};
const getOptionsList = async () => {
for (let key in Options.value) {
- const res = await queryOptionsList(key);
- Options.value[key] = res.result.map((item) => ({
+ const res: any = await queryOptionsList(key);
+ Options.value[key] = res.result.map((item: any) => ({
label: item?.text || item,
value: item?.value || item,
}));
}
};
const getCertificateList = async () => {
- const res = await queryCertificateList();
- certificateList.value = res.result.map((item) => ({
+ const res: any = await queryCertificateList();
+ certificateList.value = res.result.map((item: any) => ({
value: item.id,
label: item.name,
}));
};
const getProvidersList = async () => {
- const resp = await getProviders();
+ const resp: any = await getProviders();
if (resp.status === 200) {
const list = [
{ label: 'OPC UA', value: 'OPC_UA' },
@@ -273,7 +277,9 @@ const getProvidersList = async () => {
(item: any) => item.id === 'modbus-tcp' || item.id === 'opc-ua',
)
.map((it: any) => (it?.id === 'opc-ua' ? 'OPC_UA' : 'MODBUS_TCP'));
- const providers = list.filter((item: any) => arr.includes(item.value));
+ const providers: any = list.filter((item: any) =>
+ arr.includes(item.value),
+ );
providersList.value = providers;
if (arr.includes('OPC_UA')) {
getOptionsList();
@@ -286,30 +292,10 @@ getCertificateList();
watch(
() => props.data,
(value) => {
- if (value.id) formData.value = value;
+ if (value.id) formData.value = value as FormDataType;
},
{ immediate: true, deep: true },
);
-
+
diff --git a/src/views/DataCollect/Channel/data.ts b/src/views/DataCollect/Channel/data.ts
index 27c3d759..c5fba7be 100644
--- a/src/views/DataCollect/Channel/data.ts
+++ b/src/views/DataCollect/Channel/data.ts
@@ -1,5 +1,6 @@
import { validateField } from '@/api/data-collect/channel';
import { FormDataType } from './type.d';
+import type { Rule } from 'ant-design-vue/lib/form';
export const FormState: FormDataType = {
name: '',
@@ -44,7 +45,7 @@ export const TiTlePermissionButtonStyle = {
overflow: 'hidden',
'text-overflow': 'ellipsis',
'white-space': 'nowrap',
- width: 'calc(100%-100px)',
+ width: 'calc(100%-150px)',
// width: '60%',
};
@@ -61,10 +62,8 @@ export const regDomain = new RegExp(
);
export const checkEndpoint = (_rule: Rule, value: string): Promise =>
new Promise(async (resolve, reject) => {
- if (value) {
- const res = await validateField(value);
- return res.result.passed ? resolve('') : reject(res.result.reason);
- }
+ const res = await validateField(value);
+ return res.result.passed ? resolve('') : reject(res.result.reason);
});
export const FormValidate = {
name: [
@@ -89,7 +88,7 @@ export const FormValidate = {
},
{
pattern: regOnlyNumber,
- message: '请输入1-65535之间的正整数',
+ message: '请输入0-65535之间的正整数',
},
],
@@ -100,7 +99,7 @@ export const FormValidate = {
},
{
validator: checkEndpoint,
- trigger: 'blur',
+ // trigger: 'blur',
},
],
@@ -139,3 +138,70 @@ export const FormValidate = {
description: [{ max: 200, message: '最多可输入200个字符' }],
};
+export const columns = [
+ {
+ title: '通道名称',
+ dataIndex: 'name',
+ key: 'name',
+ ellipsis: true,
+ fixed: 'left',
+ search: {
+ type: 'string',
+ },
+ },
+ {
+ title: '通讯协议',
+ dataIndex: 'provider',
+ key: 'provider',
+ ellipsis: true,
+ search: {
+ type: 'select',
+ options: [
+ { label: 'OPC_UA', value: 'OPC_UA' },
+ { label: 'MODBUS_TCP', value: 'MODBUS_TCP' },
+ ],
+ },
+ },
+ {
+ title: '状态',
+ dataIndex: 'state',
+ key: 'state',
+ ellipsis: true,
+ scopedSlots: true,
+ search: {
+ type: 'select',
+ options: [
+ { label: '正常', value: 'enabled' },
+ { label: '禁用', value: 'disabled' },
+ ],
+ },
+ },
+ {
+ title: '运行状态',
+ dataIndex: 'runningState',
+ key: 'runningState',
+ ellipsis: true,
+ scopedSlots: true,
+ search: {
+ type: 'select',
+ options: [
+ { label: '运行中', value: 'running' },
+ { label: '部分错误', value: 'partialError' },
+ { label: '错误', value: 'failed' },
+ ],
+ },
+ },
+ {
+ title: '说明',
+ dataIndex: 'description',
+ key: 'description',
+ ellipsis: true,
+ },
+ {
+ title: '操作',
+ key: 'action',
+ fixed: 'right',
+ width: 200,
+ scopedSlots: true,
+ },
+];
diff --git a/src/views/DataCollect/Channel/index.vue b/src/views/DataCollect/Channel/index.vue
index c6123771..41d4ab31 100644
--- a/src/views/DataCollect/Channel/index.vue
+++ b/src/views/DataCollect/Channel/index.vue
@@ -1,7 +1,11 @@
-
+
>({});
const params = ref>({});
-const options = ref([]);
const visible = ref(false);
const current = ref({});
diff --git a/src/views/DataCollect/Collector/Point/Save/SaveModBus.vue b/src/views/DataCollect/Collector/Point/Save/SaveModBus.vue
index 1dd31cfd..185dda6b 100644
--- a/src/views/DataCollect/Collector/Point/Save/SaveModBus.vue
+++ b/src/views/DataCollect/Collector/Point/Save/SaveModBus.vue
@@ -37,6 +37,7 @@
allowClear
show-search
:filter-option="filterOption"
+ @change="changeFunction"
/>
-
-
-
非标准协议写入配置
-
-
-
@@ -240,8 +234,8 @@ import {
} from '@/api/data-collect/collector';
import { ModBusRules, checkProviderData } from '../../data.ts';
import type { FormInstance } from 'ant-design-vue';
-import { Rule } from 'ant-design-vue/lib/form';
-import { cloneDeep, isArray } from 'lodash-es';
+import type { Rule } from 'ant-design-vue/lib/form';
+import { cloneDeep } from 'lodash-es';
const props = defineProps({
data: {
@@ -285,9 +279,8 @@ const formData = ref({
description: '',
});
-const onSubmit = async () => {
+const handleOk = async () => {
const data = await formRef.value?.validate();
-
delete data?.nspwc;
const { codec } = data?.configuration;
@@ -309,21 +302,29 @@ const onSubmit = async () => {
loading.value = true;
const response = !id
- ? await savePointBatch(params)
- : await updatePoint(id, { ...props.data, ...params });
- if (response.status === 200) {
- emit('change', true);
- }
+ ? await savePointBatch(params).catch(() => {})
+ : await updatePoint(id, { ...props.data, ...params }).catch(() => {});
+ emit('change', response?.status === 200);
loading.value = false;
};
-const handleOk = () => {
- onSubmit();
-};
const handleCancel = () => {
emit('change', false);
};
+const changeQuantity = () => {
+ if (formData.value.configuration.function === 'HoldingRegisters') {
+ formRef.value?.validate();
+ }
+};
+const changeWriteByteCount = (value: Array) => {
+ formData.value.configuration.parameter.writeByteCount = value[0];
+};
+const changeFunction = (value: string) => {
+ formData.value.accessModes =
+ value === 'DiscreteInputs' ? ['read'] : ['read', 'write'];
+};
+
const checkLength = (_rule: Rule, value: string): Promise =>
new Promise(async (resolve, reject) => {
if (value) {
@@ -347,10 +348,10 @@ const checkPointKey = (_rule: Rule, value: string): Promise =>
new Promise(async (resolve, reject) => {
if (value) {
if (Number(oldPointKey) === Number(value)) return resolve('');
- const res = await _validateField(collectorId, {
+ const res: any = await _validateField(collectorId, {
pointKey: value,
});
- return res.result.passed ? resolve('') : reject(res.result.reason);
+ return res.result?.passed ? resolve('') : reject(res.result.reason);
}
});
@@ -359,10 +360,10 @@ const filterOption = (input: string, option: any) => {
};
const getProviderList = async () => {
- const res = await queryCodecProvider();
+ const res: any = await queryCodecProvider();
providerList.value = res.result
- .filter((i) => i.id !== 'property')
- .map((item) => ({
+ .filter((i: any) => i.id !== 'property')
+ .map((item: any) => ({
value: item.id,
label: item.name,
}));
@@ -386,11 +387,13 @@ watch(
formData.value = _value;
if (!!_value.accessModes[0]?.value) {
formData.value.accessModes = value.accessModes.map(
- (i) => i.value,
+ (i: any) => i.value,
);
}
if (!!_value.features[0]?.value) {
- formData.value.features = value.features.map((i) => i.value);
+ formData.value.features = value.features.map(
+ (i: any) => i.value,
+ );
}
formData.value.nspwc = !!writeByteCount || !!byteCount;
}
@@ -399,22 +402,4 @@ watch(
);
-
+
diff --git a/src/views/DataCollect/Collector/Point/Save/SaveOPCUA.vue b/src/views/DataCollect/Collector/Point/Save/SaveOPCUA.vue
index dff16730..08fe3c4d 100644
--- a/src/views/DataCollect/Collector/Point/Save/SaveOPCUA.vue
+++ b/src/views/DataCollect/Collector/Point/Save/SaveOPCUA.vue
@@ -34,7 +34,9 @@
-
-
-
-
();
const id = props.data.id;
@@ -136,9 +134,8 @@ const formData = ref({
description: '',
});
-const onSubmit = async () => {
+const handleOk = async () => {
const data = await formRef.value?.validate();
-
const params = {
...props.data,
...data,
@@ -148,17 +145,12 @@ const onSubmit = async () => {
loading.value = true;
const response = !id
- ? await savePoint(params)
- : await updatePoint(id, { ...props.data, ...params });
- if (response.status === 200) {
- emit('change', true);
- }
+ ? await savePoint(params).catch(() => {})
+ : await updatePoint(id, { ...props.data, ...params }).catch(() => {});
+ emit('change', response?.status === 200);
loading.value = false;
};
-const handleOk = () => {
- onSubmit();
-};
const handleCancel = () => {
emit('change', false);
};
@@ -180,15 +172,17 @@ watch(
() => props.data,
(value) => {
if (value.id && value.provider === 'OPC_UA') {
- const _value = cloneDeep(value);
+ const _value: any = cloneDeep(value);
formData.value = _value;
if (!!_value.accessModes[0]?.value) {
formData.value.accessModes = value.accessModes.map(
- (i) => i.value,
+ (i: any) => i.value,
);
}
if (!!_value.features[0]?.value) {
- formData.value.features = value.features.map((i) => i.value);
+ formData.value.features = value.features.map(
+ (i: any) => i.value,
+ );
}
}
},
diff --git a/src/views/DataCollect/Collector/Point/Scan/Table.vue b/src/views/DataCollect/Collector/Point/Scan/Table.vue
index 9e2de6dc..9db4a2f3 100644
--- a/src/views/DataCollect/Collector/Point/Scan/Table.vue
+++ b/src/views/DataCollect/Collector/Point/Scan/Table.vue
@@ -1,9 +1,9 @@
-
+
@@ -25,8 +25,11 @@
-
-
+
@@ -78,8 +81,12 @@
]"
:rules="[
{
- required: true,
- message: '请输入',
+ pattern: regOnlyNumber,
+ message: '请输入0或者正整数',
+ },
+ {
+ validator: checkLength,
+ trigger: 'change',
},
]"
>
@@ -98,7 +105,7 @@
@blur="changeValue(index, dataIndex)"
>
-
-
+
-
-
-
+
+
+
@@ -166,7 +173,9 @@