diff --git a/package.json b/package.json
index 971fdf85..36392bc2 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,7 @@
"event-source-polyfill": "^1.0.31",
"global": "^4.4.0",
"jetlinks-store": "^0.0.3",
- "jetlinks-ui-components": "^1.0.26",
+ "jetlinks-ui-components": "^1.0.27",
"js-cookie": "^3.0.1",
"jsencrypt": "^3.3.2",
"less": "^4.1.3",
diff --git a/src/utils/consts.ts b/src/utils/consts.ts
index 0ea4e3de..d4404334 100644
--- a/src/utils/consts.ts
+++ b/src/utils/consts.ts
@@ -55,4 +55,5 @@ export const USER_CENTER_MENU_BUTTON_CODE = 'user-center-passwd-update'
export const protocolList = [
{ label: 'OPC-UA', value: 'OPC_UA', alias: 'opc-ua' },
{ label: 'Modbus/TCP', value: 'MODBUS_TCP', alias: 'modbus-tcp' },
+ { label: 'GATEWAY', value: 'GATEWAY', alias: 'collector-gateway' },
]
diff --git a/src/views/DataCollect/Channel/Save/GateWayDeviceModal.vue b/src/views/DataCollect/Channel/Save/GateWayDeviceModal.vue
new file mode 100644
index 00000000..68b956c9
--- /dev/null
+++ b/src/views/DataCollect/Channel/Save/GateWayDeviceModal.vue
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ slotProps.name }}
+
+
+
+
+
+ 设备类型
+
+ {{ slotProps.deviceType?.text }}
+
+
+
+ 产品名称
+
+ {{ slotProps.productName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/DataCollect/Channel/Save/GateWayFormItem.vue b/src/views/DataCollect/Channel/Save/GateWayFormItem.vue
new file mode 100644
index 00000000..5427a373
--- /dev/null
+++ b/src/views/DataCollect/Channel/Save/GateWayFormItem.vue
@@ -0,0 +1,71 @@
+
+
+ 选择网关设备
+
+
+
+
+ {{ name }}
+
+
+
+ 重新选择
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/DataCollect/Channel/Save/index.vue b/src/views/DataCollect/Channel/Save/index.vue
index c416f5f3..545281c8 100644
--- a/src/views/DataCollect/Channel/Save/index.vue
+++ b/src/views/DataCollect/Channel/Save/index.vue
@@ -92,6 +92,17 @@
:filter-option="filterOption"
/>
+
+
+
(cloneDeep(FormState));
const handleOk = async () => {
- const params = await formRef.value?.validate();
+ const params: any = await formRef.value?.validate();
+ if (params?.provider === 'GATEWAY') {
+ params.configuration.deviceName = formData.value.configuration.deviceName
+ }
+
+
+
loading.value = true;
const response = !id
? await save(params).catch(() => {})
@@ -284,7 +302,7 @@ const getProvidersList = async () => {
if (resp.status === 200) {
const arr = resp.result
.filter(
- (item: any) => item.id === 'modbus-tcp' || item.id === 'opc-ua',
+ (item: any) => ['collector-gateway', 'modbus-tcp', 'opc-ua'].includes(item.id),
)
.map((it: any) => it.id);
const providers: any = protocolList.filter((item: any) =>
@@ -302,7 +320,9 @@ getCertificateList();
watch(
() => props.data,
(value) => {
- if (value.id) formData.value = value as FormDataType;
+ 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 c95583fa..68a8fe0c 100644
--- a/src/views/DataCollect/Channel/data.ts
+++ b/src/views/DataCollect/Channel/data.ts
@@ -15,6 +15,8 @@ export const FormState: FormDataType = {
authType: 'anonymous',
username: '',
password: '',
+ deviceId: undefined,
+ deviceName: undefined,
},
description: '',
};
diff --git a/src/views/DataCollect/Channel/type.d.ts b/src/views/DataCollect/Channel/type.d.ts
index 9a2c7b34..7d683f08 100644
--- a/src/views/DataCollect/Channel/type.d.ts
+++ b/src/views/DataCollect/Channel/type.d.ts
@@ -1,6 +1,6 @@
export interface ConfigurationType {
port: string | undefined;
- host: string | undefined;;
+ host: string | undefined;
username: string;
password: string;
endpoint: string,
@@ -8,7 +8,8 @@ export interface ConfigurationType {
securityMode: string | undefined,
certId: string | undefined,
authType: string | undefined,
-
+ deviceId: string | undefined,
+ deviceName: string | undefined,
}
export interface FormDataType {
diff --git a/src/views/DataCollect/Collector/Point/index.vue b/src/views/DataCollect/Collector/Point/index.vue
index d207af99..e05c3d0a 100644
--- a/src/views/DataCollect/Collector/Point/index.vue
+++ b/src/views/DataCollect/Collector/Point/index.vue
@@ -20,7 +20,7 @@
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
{{ getTypeTooltip(formData.configuration.inheritBreakerSpec.type) }}
-
-
+
+
-
-
+
+
-
-
+
+
当前内存布局: {{ endianData }}
- 只有4字节数据类型(int32、ieee754 float)
- 具有4种内存布局,其它只有ABCD、DCBA两种内存布局(以双字配置为准)
+ 只有4字节数据类型(int32、ieee754 float)
+ 具有4种内存布局,其它只有ABCD、DCBA两种内存布局(以双字配置为准)
-
-
+
+
-
-
+
+
-
diff --git a/src/views/link/AccessConfig/components/Media/GB28181.vue b/src/views/link/AccessConfig/components/Media/GB28181.vue
index bbf277c2..f7c2730b 100644
--- a/src/views/link/AccessConfig/components/Media/GB28181.vue
+++ b/src/views/link/AccessConfig/components/Media/GB28181.vue
@@ -151,17 +151,11 @@
/^([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/,
message: '请输入正确的IP地址',
},
- {
- max: 65535,
- message: '请输入1~65535之间的正整数'
- },
- {
- min: 1,
- message: '请输入1~65535之间的正整数'
- },
+
]"
+ :validateFirst="true"
>
-
@@ -598,6 +588,15 @@ const dynamicValidateForm = reactive<{ cluster: Form2[] }>({
cluster: [],
});
+const rules = {
+ publicPort: [
+ {
+ required: true,
+ message: '输入端口',
+ }
+ ]
+}
+
const removeCluster = (item: Form2) => {
let index = dynamicValidateForm.cluster.indexOf(item);
if (index !== -1) {
diff --git a/src/views/link/AccessConfig/data.ts b/src/views/link/AccessConfig/data.ts
index 9753405e..ba4f72fa 100644
--- a/src/views/link/AccessConfig/data.ts
+++ b/src/views/link/AccessConfig/data.ts
@@ -14,6 +14,7 @@ ProtocolMapping.set('Ctwing', 'HTTP');
ProtocolMapping.set('modbus-tcp', 'MODBUS_TCP');
ProtocolMapping.set('opc-ua', 'OPC_UA');
ProtocolMapping.set('edge-child-device', 'EdgeGateway');
+ProtocolMapping.set('collector-gateway', 'collector-gateway');
ProtocolMapping.set('official-edge-gateway', 'MQTT');
const NetworkTypeMapping = new Map();
diff --git a/yarn.lock b/yarn.lock
index 5a0e275e..43fe36d7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3738,7 +3738,7 @@ jetlinks-store@^0.0.3:
resolved "https://registry.npmjs.org/jetlinks-store/-/jetlinks-store-0.0.3.tgz"
integrity sha512-AZf/soh1hmmwjBZ00fr1emuMEydeReaI6IBTGByQYhTmK1Zd5pQAxC7WLek2snRAn/HHDgJfVz2hjditKThl6Q==
-jetlinks-ui-components@^1.0.23, jetlinks-ui-components@^1.0.26:
+jetlinks-ui-components@^1.0.23:
version "1.0.26"
resolved "http://registry.jetlinks.cn/jetlinks-ui-components/-/jetlinks-ui-components-1.0.26.tgz#26896c578396b09d49649ac87c3943491af3a9ae"
integrity sha512-HkLk52C6pDKe/Ca9O4w34h1/PrC7GdBUheiicPOX2V/Lc49N+WzI9wmrCd82XBm8MocPM4gAOJxNaTxY20EO9w==
@@ -3753,6 +3753,21 @@ jetlinks-ui-components@^1.0.23, jetlinks-ui-components@^1.0.26:
sortablejs "^1.15.0"
vuedraggable "^4.1.0"
+jetlinks-ui-components@^1.0.27:
+ version "1.0.27"
+ resolved "http://registry.jetlinks.cn/jetlinks-ui-components/-/jetlinks-ui-components-1.0.27.tgz#97f04cb18906ad603de2bcbc62fa4b6673a7a3d0"
+ integrity sha512-R9dPrRMwV5imqV0JTkHeTMT8LeCnv7+Vb1IqKNIqc9I7joFZ9hLtEAE0EXO5GxTthPUiMZlQ+BDsd9ehCArO3Q==
+ dependencies:
+ "@vueuse/core" "^9.12.0"
+ "@vueuse/router" "^9.13.0"
+ ant-design-vue "^3.2.15"
+ colorpicker-v3 "^2.10.2"
+ jetlinks-ui-components "^1.0.23"
+ lodash-es "^4.17.21"
+ monaco-editor "^0.40.0"
+ sortablejs "^1.15.0"
+ vuedraggable "^4.1.0"
+
js-cookie@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz"