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 @@ + + + + + \ 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 @@ + + + + + \ 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 @@ + - 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"