Showing
10 changed files
with
257 additions
and
40 deletions
@@ -4,7 +4,9 @@ import { FormSchema as QFormSchema, useComponentRegister } from '/@/components/F | @@ -4,7 +4,9 @@ import { FormSchema as QFormSchema, useComponentRegister } from '/@/components/F | ||
4 | import { CameraVideoUrl, CameraMaxLength } from '/@/utils/rules'; | 4 | import { CameraVideoUrl, CameraMaxLength } from '/@/utils/rules'; |
5 | import { h } from 'vue'; | 5 | import { h } from 'vue'; |
6 | import SnHelpMessage from './SnHelpMessage.vue'; | 6 | import SnHelpMessage from './SnHelpMessage.vue'; |
7 | +import { DeviceTypeEnum } from '/@/api/device/model/deviceModel'; | ||
7 | import { OrgTreeSelect } from '../../common/OrgTreeSelect'; | 8 | import { OrgTreeSelect } from '../../common/OrgTreeSelect'; |
9 | +import { findDictItemByCode } from '/@/api/system/dict'; | ||
8 | 10 | ||
9 | useComponentRegister('OrgTreeSelect', OrgTreeSelect); | 11 | useComponentRegister('OrgTreeSelect', OrgTreeSelect); |
10 | 12 | ||
@@ -42,6 +44,16 @@ export enum MediaType { | @@ -42,6 +44,16 @@ export enum MediaType { | ||
42 | M3U8 = 'm3u8', | 44 | M3U8 = 'm3u8', |
43 | } | 45 | } |
44 | 46 | ||
47 | +const streamingTypeList = [ | ||
48 | + { label: 'GBT-28181', value: 'GBT-28181' }, | ||
49 | + { label: '其他', value: 'other' }, | ||
50 | +]; | ||
51 | + | ||
52 | +export enum streamingType { | ||
53 | + GBT = 'GBT-28181', | ||
54 | + OTHER = 'other', | ||
55 | +} | ||
56 | + | ||
45 | // 表格列数据 | 57 | // 表格列数据 |
46 | export const columns: BasicColumn[] = [ | 58 | export const columns: BasicColumn[] = [ |
47 | { | 59 | { |
@@ -148,6 +160,44 @@ export const formSchema: QFormSchema[] = [ | @@ -148,6 +160,44 @@ export const formSchema: QFormSchema[] = [ | ||
148 | }, | 160 | }, |
149 | }, | 161 | }, |
150 | { | 162 | { |
163 | + field: 'streamingType', | ||
164 | + label: '流媒体类型', | ||
165 | + component: 'Select', | ||
166 | + ifShow({ values }) { | ||
167 | + return values.accessMode == AccessMode.Streaming; | ||
168 | + }, | ||
169 | + componentProps() { | ||
170 | + return { | ||
171 | + placeholder: '请选择流媒体类型', | ||
172 | + defaultValue: streamingType.OTHER, | ||
173 | + options: streamingTypeList, | ||
174 | + }; | ||
175 | + }, | ||
176 | + }, | ||
177 | + { | ||
178 | + field: 'device', | ||
179 | + label: '设备选择', | ||
180 | + ifShow({ values }) { | ||
181 | + return values.streamingType == streamingType.GBT; | ||
182 | + }, | ||
183 | + component: 'ApiSelect', | ||
184 | + componentProps() { | ||
185 | + return { | ||
186 | + api: findDictItemByCode, | ||
187 | + params: { | ||
188 | + dictCode: 'device_type', | ||
189 | + }, | ||
190 | + valueField: 'itemValue', | ||
191 | + labelField: 'itemText', | ||
192 | + placeholder: '请选择设备类型', | ||
193 | + onChange: (value: DeviceTypeEnum) => { | ||
194 | + console.log(value, 'value'); | ||
195 | + }, | ||
196 | + getPopupContainer: () => document.body, | ||
197 | + }; | ||
198 | + }, | ||
199 | + }, | ||
200 | + { | ||
151 | field: 'brand', | 201 | field: 'brand', |
152 | label: '视频厂家', | 202 | label: '视频厂家', |
153 | component: 'Input', | 203 | component: 'Input', |
@@ -193,7 +243,9 @@ export const formSchema: QFormSchema[] = [ | @@ -193,7 +243,9 @@ export const formSchema: QFormSchema[] = [ | ||
193 | label: '流媒体配置', | 243 | label: '流媒体配置', |
194 | component: 'Select', | 244 | component: 'Select', |
195 | ifShow({ values }) { | 245 | ifShow({ values }) { |
196 | - return values.accessMode === AccessMode.Streaming; | 246 | + return ( |
247 | + values.accessMode === AccessMode.Streaming && values.streamingType != streamingType.GBT | ||
248 | + ); | ||
197 | }, | 249 | }, |
198 | slot: 'videoPlatformIdSlot', | 250 | slot: 'videoPlatformIdSlot', |
199 | componentProps: { | 251 | componentProps: { |
@@ -206,7 +258,9 @@ export const formSchema: QFormSchema[] = [ | @@ -206,7 +258,9 @@ export const formSchema: QFormSchema[] = [ | ||
206 | component: 'RadioGroup', | 258 | component: 'RadioGroup', |
207 | defaultValue: StreamType.MASTER, | 259 | defaultValue: StreamType.MASTER, |
208 | ifShow({ values }) { | 260 | ifShow({ values }) { |
209 | - return values.accessMode === AccessMode.Streaming; | 261 | + return ( |
262 | + values.accessMode === AccessMode.Streaming && values.streamingType != streamingType.GBT | ||
263 | + ); | ||
210 | }, | 264 | }, |
211 | componentProps: { | 265 | componentProps: { |
212 | placeholder: '请选择码流', | 266 | placeholder: '请选择码流', |
@@ -224,7 +278,9 @@ export const formSchema: QFormSchema[] = [ | @@ -224,7 +278,9 @@ export const formSchema: QFormSchema[] = [ | ||
224 | component: 'RadioGroup', | 278 | component: 'RadioGroup', |
225 | defaultValue: PlayProtocol.HTTP, | 279 | defaultValue: PlayProtocol.HTTP, |
226 | ifShow({ values }) { | 280 | ifShow({ values }) { |
227 | - return values.accessMode === AccessMode.Streaming; | 281 | + return ( |
282 | + values.accessMode === AccessMode.Streaming && values.streamingType != streamingType.GBT | ||
283 | + ); | ||
228 | }, | 284 | }, |
229 | helpMessage: ['平台使用https的hls协议,需联系海康开放平台专家支持。'], | 285 | helpMessage: ['平台使用https的hls协议,需联系海康开放平台专家支持。'], |
230 | componentProps: { | 286 | componentProps: { |
@@ -242,7 +298,9 @@ export const formSchema: QFormSchema[] = [ | @@ -242,7 +298,9 @@ export const formSchema: QFormSchema[] = [ | ||
242 | component: 'Input', | 298 | component: 'Input', |
243 | rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }], | 299 | rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }], |
244 | ifShow({ values }) { | 300 | ifShow({ values }) { |
245 | - return values.accessMode === AccessMode.Streaming; | 301 | + return ( |
302 | + values.accessMode === AccessMode.Streaming && values.streamingType != streamingType.GBT | ||
303 | + ); | ||
246 | }, | 304 | }, |
247 | componentProps: { | 305 | componentProps: { |
248 | placeholder: '请输入监控点编号', | 306 | placeholder: '请输入监控点编号', |
@@ -16,7 +16,7 @@ | @@ -16,7 +16,7 @@ | ||
16 | @open-gateway-device="handleOpenGatewayDevice" | 16 | @open-gateway-device="handleOpenGatewayDevice" |
17 | /> | 17 | /> |
18 | </TabPane> | 18 | </TabPane> |
19 | - <TabPane key="modelOfMatter" tab="物模型数据"> | 19 | + <TabPane v-if="!isTransportType" key="modelOfMatter" tab="物模型数据"> |
20 | <ModelOfMatter :deviceDetail="deviceDetail" /> | 20 | <ModelOfMatter :deviceDetail="deviceDetail" /> |
21 | </TabPane> | 21 | </TabPane> |
22 | <!-- <TabPane key="2" tab="实时数据" v-if="deviceDetail?.deviceType !== 'GATEWAY'"> | 22 | <!-- <TabPane key="2" tab="实时数据" v-if="deviceDetail?.deviceType !== 'GATEWAY'"> |
@@ -28,32 +28,43 @@ | @@ -28,32 +28,43 @@ | ||
28 | <!-- <TabPane key="5" tab="命令下发" v-if="deviceDetail?.deviceType !== 'SENSOR'"> | 28 | <!-- <TabPane key="5" tab="命令下发" v-if="deviceDetail?.deviceType !== 'SENSOR'"> |
29 | <CommandIssuance :deviceDetail="deviceDetail" /> | 29 | <CommandIssuance :deviceDetail="deviceDetail" /> |
30 | </TabPane> --> | 30 | </TabPane> --> |
31 | - <TabPane key="3" tab="告警"><Alarm :id="deviceDetail.id" /></TabPane> | ||
32 | - <TabPane key="4" tab="子设备" v-if="deviceDetail?.deviceType === 'GATEWAY'"> | 31 | + <TabPane v-if="!isTransportType" key="3" tab="告警"><Alarm :id="deviceDetail.id" /></TabPane> |
32 | + <TabPane | ||
33 | + key="4" | ||
34 | + tab="子设备" | ||
35 | + v-if="deviceDetail?.deviceType === 'GATEWAY' && !isTransportType" | ||
36 | + > | ||
33 | <ChildDevice | 37 | <ChildDevice |
34 | :fromId="deviceDetail?.tbDeviceId" | 38 | :fromId="deviceDetail?.tbDeviceId" |
35 | @openTbDeviceDetail="handleOpenTbDeviceDetail" | 39 | @openTbDeviceDetail="handleOpenTbDeviceDetail" |
36 | /> | 40 | /> |
37 | </TabPane> | 41 | </TabPane> |
38 | - <TabPane key="7" tab="命令下发记录"> | 42 | + <TabPane v-if="!isTransportType" key="7" tab="命令下发记录"> |
39 | <CommandRecord :deviceDetail="deviceDetail" :fromId="deviceDetail?.tbDeviceId" /> | 43 | <CommandRecord :deviceDetail="deviceDetail" :fromId="deviceDetail?.tbDeviceId" /> |
40 | </TabPane> | 44 | </TabPane> |
41 | <!-- 网关设备并且场家是TBox --> | 45 | <!-- 网关设备并且场家是TBox --> |
42 | <TabPane | 46 | <TabPane |
43 | key="6" | 47 | key="6" |
44 | tab="TBox" | 48 | tab="TBox" |
45 | - v-if="deviceDetail?.deviceType === 'GATEWAY' && deviceDetail?.brand == 'TBox'" | 49 | + v-if=" |
50 | + deviceDetail?.deviceType === 'GATEWAY' && | ||
51 | + deviceDetail?.brand == 'TBox' && | ||
52 | + !isTransportType | ||
53 | + " | ||
46 | > | 54 | > |
47 | <TBoxDetail :deviceDetail="deviceDetail" /> | 55 | <TBoxDetail :deviceDetail="deviceDetail" /> |
48 | </TabPane> | 56 | </TabPane> |
49 | <!-- 网关设备并且是TBox --> | 57 | <!-- 网关设备并且是TBox --> |
50 | 58 | ||
51 | - <TabPane key="eventManage" tab="事件管理"> | 59 | + <TabPane v-if="!isTransportType" key="eventManage" tab="事件管理"> |
52 | <EventManage :tbDeviceId="deviceDetail.tbDeviceId" /> | 60 | <EventManage :tbDeviceId="deviceDetail.tbDeviceId" /> |
53 | </TabPane> | 61 | </TabPane> |
54 | - <TabPane key="task" tab="任务"> | 62 | + <TabPane v-if="!isTransportType" key="task" tab="任务"> |
55 | <Task :tbDeviceId="deviceDetail.tbDeviceId" /> | 63 | <Task :tbDeviceId="deviceDetail.tbDeviceId" /> |
56 | </TabPane> | 64 | </TabPane> |
65 | + <TabPane key="videoChannel" tab="视频通道"> | ||
66 | + <VideoChannel :deviceDetail="deviceDetail" :fromId="deviceDetail?.tbDeviceId" /> | ||
67 | + </TabPane> | ||
57 | </Tabs> | 68 | </Tabs> |
58 | </BasicDrawer> | 69 | </BasicDrawer> |
59 | </template> | 70 | </template> |
@@ -74,6 +85,7 @@ | @@ -74,6 +85,7 @@ | ||
74 | import EventManage from '../tabs/EventManage/index.vue'; | 85 | import EventManage from '../tabs/EventManage/index.vue'; |
75 | import { DeviceRecord } from '/@/api/device/model/deviceModel'; | 86 | import { DeviceRecord } from '/@/api/device/model/deviceModel'; |
76 | import Task from '../tabs/Task.vue'; | 87 | import Task from '../tabs/Task.vue'; |
88 | + import { VideoChannel } from '../tabs/VideoChannel/index'; | ||
77 | 89 | ||
78 | export default defineComponent({ | 90 | export default defineComponent({ |
79 | name: 'DeviceModal', | 91 | name: 'DeviceModal', |
@@ -91,6 +103,7 @@ | @@ -91,6 +103,7 @@ | ||
91 | CommandRecord, | 103 | CommandRecord, |
92 | EventManage, | 104 | EventManage, |
93 | Task, | 105 | Task, |
106 | + VideoChannel, | ||
94 | }, | 107 | }, |
95 | emits: ['reload', 'register', 'openTbDeviceDetail', 'openGatewayDeviceDetail'], | 108 | emits: ['reload', 'register', 'openTbDeviceDetail', 'openGatewayDeviceDetail'], |
96 | setup(_props, { emit }) { | 109 | setup(_props, { emit }) { |
@@ -99,9 +112,12 @@ | @@ -99,9 +112,12 @@ | ||
99 | const deviceDetailRef = ref(); | 112 | const deviceDetailRef = ref(); |
100 | const deviceDetail = ref<DeviceRecord>({} as unknown as DeviceRecord); | 113 | const deviceDetail = ref<DeviceRecord>({} as unknown as DeviceRecord); |
101 | const tbDeviceId = ref(''); | 114 | const tbDeviceId = ref(''); |
115 | + | ||
116 | + const isTransportType = ref<Boolean>(false); //获取产品是不是GB/T 28181 | ||
102 | // 详情回显 | 117 | // 详情回显 |
103 | const [register] = useDrawerInner(async (data) => { | 118 | const [register] = useDrawerInner(async (data) => { |
104 | - const { id } = data; | 119 | + const { id, transportType } = data; |
120 | + isTransportType.value = transportType == 'GB/T28181' ? true : false; | ||
105 | // 设备详情 | 121 | // 设备详情 |
106 | const res = await getDeviceDetail(id); | 122 | const res = await getDeviceDetail(id); |
107 | deviceDetail.value = res; | 123 | deviceDetail.value = res; |
@@ -132,6 +148,7 @@ | @@ -132,6 +148,7 @@ | ||
132 | tbDeviceId, | 148 | tbDeviceId, |
133 | handleOpenTbDeviceDetail, | 149 | handleOpenTbDeviceDetail, |
134 | handleOpenGatewayDevice, | 150 | handleOpenGatewayDevice, |
151 | + isTransportType, | ||
135 | }; | 152 | }; |
136 | }, | 153 | }, |
137 | }); | 154 | }); |
1 | +import { h } from 'vue'; | ||
2 | +import { BasicColumn, FormSchema } from '/@/components/Table'; | ||
3 | +import { Tag } from 'ant-design-vue'; | ||
4 | + | ||
5 | +export const configColumns: BasicColumn[] = [ | ||
6 | + { | ||
7 | + title: '通道编号', | ||
8 | + dataIndex: 'channellNumber', | ||
9 | + }, | ||
10 | + { | ||
11 | + title: '设备名称', | ||
12 | + dataIndex: 'deviceName', | ||
13 | + }, | ||
14 | + { | ||
15 | + title: '通道名称', | ||
16 | + dataIndex: 'channelName', | ||
17 | + }, | ||
18 | + { | ||
19 | + title: '厂家', | ||
20 | + dataIndex: 'manufacturer', | ||
21 | + }, | ||
22 | + { | ||
23 | + title: '开启音频', | ||
24 | + dataIndex: 'turnOnAudio', | ||
25 | + slots: { customRender: 'turnOnAudio' }, | ||
26 | + }, | ||
27 | + { | ||
28 | + title: '状态', | ||
29 | + dataIndex: 'state', | ||
30 | + format: (text) => { | ||
31 | + return h( | ||
32 | + Tag, | ||
33 | + { | ||
34 | + color: Number(text) === 1 ? 'green' : 'blue', | ||
35 | + }, | ||
36 | + () => (Number(text) === 1 ? '在线' : '离线') | ||
37 | + ); | ||
38 | + }, | ||
39 | + }, | ||
40 | + { | ||
41 | + title: '操作', | ||
42 | + dataIndex: 'action', | ||
43 | + }, | ||
44 | +]; | ||
45 | + | ||
46 | +export const searchFormSchema: FormSchema[] | any = [{}]; |
1 | +<template> | ||
2 | + <BasicTable | ||
3 | + class="bg-neutral-100 dark:text-gray-300 dark:bg-dark-700 p-4" | ||
4 | + @register="registerTable" | ||
5 | + > | ||
6 | + <template #turnOnAudio="{ record }"> | ||
7 | + <Switch | ||
8 | + :checked="record.status === 1" | ||
9 | + :loading="record.pendingStatus" | ||
10 | + checkedChildren="开启" | ||
11 | + unCheckedChildren="关闭" | ||
12 | + @change="(checked:boolean)=>handleTurnVideo(checked,record)" | ||
13 | + /> | ||
14 | + </template> | ||
15 | + <template #action="{ record }"> | ||
16 | + <TableAction | ||
17 | + :actions="[ | ||
18 | + { | ||
19 | + label: '播放', | ||
20 | + auth: 'api:yt:sceneLinkage:get', | ||
21 | + icon: 'ant-design:playCircle-outlined', | ||
22 | + onClick: handlePlay.bind(null, record), | ||
23 | + }, | ||
24 | + ]" | ||
25 | + /></template> | ||
26 | + </BasicTable> | ||
27 | +</template> | ||
28 | + | ||
29 | +<script lang="ts" setup> | ||
30 | + import { configColumns, searchFormSchema } from './config'; | ||
31 | + import { BasicTable, useTable, TableAction } from '/@/components/Table'; | ||
32 | + import { Switch } from 'ant-design-vue'; | ||
33 | + import { DeviceRecord } from '/@/api/device/model/deviceModel'; | ||
34 | + import { watch } from 'vue'; | ||
35 | + | ||
36 | + const props = defineProps({ | ||
37 | + fromId: { | ||
38 | + type: String, | ||
39 | + default: '', | ||
40 | + }, | ||
41 | + deviceDetail: { | ||
42 | + type: Object as PropType<DeviceRecord>, | ||
43 | + required: true, | ||
44 | + }, | ||
45 | + }); | ||
46 | + | ||
47 | + watch( | ||
48 | + () => props, | ||
49 | + () => { | ||
50 | + console.log(props, 'props'); | ||
51 | + } | ||
52 | + ); | ||
53 | + | ||
54 | + const [registerTable] = useTable({ | ||
55 | + // api: deviceCommandRecordGetQuery, | ||
56 | + columns: configColumns, | ||
57 | + showTableSetting: true, | ||
58 | + bordered: true, | ||
59 | + showIndexColumn: false, | ||
60 | + formConfig: { | ||
61 | + labelWidth: 120, | ||
62 | + schemas: searchFormSchema, | ||
63 | + }, | ||
64 | + beforeFetch: (params) => { | ||
65 | + console.log(params); | ||
66 | + }, | ||
67 | + useSearchForm: true, | ||
68 | + }); | ||
69 | + | ||
70 | + const handleTurnVideo = (checked: Boolean, record: Recordable) => { | ||
71 | + console.log(checked, record, 'record'); | ||
72 | + }; | ||
73 | + | ||
74 | + const handlePlay = (record: Recordable) => { | ||
75 | + console.log(record); | ||
76 | + }; | ||
77 | +</script> |
@@ -336,10 +336,12 @@ | @@ -336,10 +336,12 @@ | ||
336 | } | 336 | } |
337 | 337 | ||
338 | function handleDetail(record: Recordable) { | 338 | function handleDetail(record: Recordable) { |
339 | - const { id, tbDeviceId } = record; | 339 | + const { id, tbDeviceId, deviceProfile } = record; |
340 | + const { transportType } = deviceProfile || {}; | ||
340 | openDrawer(true, { | 341 | openDrawer(true, { |
341 | id, | 342 | id, |
342 | tbDeviceId, | 343 | tbDeviceId, |
344 | + transportType, | ||
343 | }); | 345 | }); |
344 | } | 346 | } |
345 | 347 |
@@ -127,11 +127,12 @@ | @@ -127,11 +127,12 @@ | ||
127 | } | 127 | } |
128 | }; | 128 | }; |
129 | const handleStepNext = (e, data) => { | 129 | const handleStepNext = (e, data) => { |
130 | + const { deviceType } = unref(DevConStRef)?.getFieldsValue() || {}; | ||
130 | if (e) { | 131 | if (e) { |
131 | current.value++; | 132 | current.value++; |
132 | unref(isUpdate) | 133 | unref(isUpdate) |
133 | - ? unref(TransConStRef)?.editOrAddTransportTypeStatus(true) | ||
134 | - : unref(TransConStRef)?.editOrAddTransportTypeStatus(false); | 134 | + ? unref(TransConStRef)?.editOrAddTransportTypeStatus(true, deviceType) |
135 | + : unref(TransConStRef)?.editOrAddTransportTypeStatus(false, deviceType); | ||
135 | } else { | 136 | } else { |
136 | setTransConfEditFormData(data); | 137 | setTransConfEditFormData(data); |
137 | } | 138 | } |
@@ -45,19 +45,20 @@ | @@ -45,19 +45,20 @@ | ||
45 | ifShowBtn: { type: Boolean, default: true }, | 45 | ifShowBtn: { type: Boolean, default: true }, |
46 | }); | 46 | }); |
47 | 47 | ||
48 | - const [register, { validate, setFieldsValue, resetFields, updateSchema }] = useForm({ | ||
49 | - labelWidth: 100, | ||
50 | - schemas: step1Schemas, | ||
51 | - actionColOptions: { | ||
52 | - span: 14, | ||
53 | - }, | ||
54 | - showResetButton: false, | ||
55 | - showActionButtonGroup: props.ifShowBtn ? true : false, | ||
56 | - submitButtonOptions: { | ||
57 | - text: '下一步', | ||
58 | - }, | ||
59 | - submitFunc: customSubmitFunc, | ||
60 | - }); | 48 | + const [register, { validate, setFieldsValue, resetFields, updateSchema, getFieldsValue }] = |
49 | + useForm({ | ||
50 | + labelWidth: 100, | ||
51 | + schemas: step1Schemas, | ||
52 | + actionColOptions: { | ||
53 | + span: 14, | ||
54 | + }, | ||
55 | + showResetButton: false, | ||
56 | + showActionButtonGroup: props.ifShowBtn ? true : false, | ||
57 | + submitButtonOptions: { | ||
58 | + text: '下一步', | ||
59 | + }, | ||
60 | + submitFunc: customSubmitFunc, | ||
61 | + }); | ||
61 | const editOrAddNameStatus = (nameStatus) => | 62 | const editOrAddNameStatus = (nameStatus) => |
62 | updateSchema({ | 63 | updateSchema({ |
63 | field: 'name', | 64 | field: 'name', |
@@ -129,6 +130,7 @@ | @@ -129,6 +130,7 @@ | ||
129 | resetFormData, | 130 | resetFormData, |
130 | getFormData, | 131 | getFormData, |
131 | editOrAddDeviceTypeStatus, | 132 | editOrAddDeviceTypeStatus, |
133 | + getFieldsValue, | ||
132 | }); | 134 | }); |
133 | </script> | 135 | </script> |
134 | <style lang="less" scoped> | 136 | <style lang="less" scoped> |
1 | <template> | 1 | <template> |
2 | <div | 2 | <div |
3 | class="step2-style" | 3 | class="step2-style" |
4 | - :style="[isMqttType == 'DEFAULT' ? { minHeight: 0 + 'px' } : { minHeight: 800 + 'px' }]" | 4 | + :style="[ |
5 | + isMqttType == 'DEFAULT' || isMqttType == 'GB/T28181' | ||
6 | + ? { minHeight: 0 + 'px' } | ||
7 | + : { minHeight: 800 + 'px' }, | ||
8 | + ]" | ||
5 | > | 9 | > |
6 | <div | 10 | <div |
7 | :style="[ | 11 | :style="[ |
@@ -138,6 +142,7 @@ | @@ -138,6 +142,7 @@ | ||
138 | const getSnmpVal = await snmpRef.value?.getFormData(); | 142 | const getSnmpVal = await snmpRef.value?.getFormData(); |
139 | const getTcpVal = await tcpRef.value?.getFormData(); | 143 | const getTcpVal = await tcpRef.value?.getFormData(); |
140 | step2Data.transportConfiguration = { | 144 | step2Data.transportConfiguration = { |
145 | + type: isMqttType.value, | ||
141 | ...getMqttVal, | 146 | ...getMqttVal, |
142 | ...getCoapVal, | 147 | ...getCoapVal, |
143 | ...getLwm2mVal, | 148 | ...getLwm2mVal, |
@@ -148,19 +153,26 @@ | @@ -148,19 +153,26 @@ | ||
148 | return step2Data; | 153 | return step2Data; |
149 | }; | 154 | }; |
150 | 155 | ||
151 | - const editOrAddTransportTypeStatus = (status: boolean) => { | 156 | + const editOrAddTransportTypeStatus = (status: boolean, deviceType?: string) => { |
157 | + const options = [ | ||
158 | + { label: '默认', value: 'DEFAULT' }, | ||
159 | + { label: 'MQTT', value: 'MQTT' }, | ||
160 | + { label: 'CoAP', value: 'COAP' }, | ||
161 | + // { label: 'LWM2M', value: 'LWM2M' }, | ||
162 | + // { label: 'SNMP', value: 'SNMP' }, | ||
163 | + { label: 'TCP/UDP', value: 'TCP' }, | ||
164 | + ]; | ||
165 | + if (deviceType == 'DIRECT_CONNECTION') { | ||
166 | + options.push({ label: 'GB/T 28181', value: 'GB/T28181' }); | ||
167 | + } | ||
168 | + if (deviceType != 'DIRECT_CONNECTION' && isMqttType.value == 'GB/T28181') { | ||
169 | + setFieldsValue({ transportType: null }); | ||
170 | + } | ||
152 | updateSchema({ | 171 | updateSchema({ |
153 | field: 'transportType', | 172 | field: 'transportType', |
154 | componentProps: { | 173 | componentProps: { |
155 | disabled: status, | 174 | disabled: status, |
156 | - options: [ | ||
157 | - { label: '默认', value: 'DEFAULT' }, | ||
158 | - { label: 'MQTT', value: 'MQTT' }, | ||
159 | - { label: 'CoAP', value: 'COAP' }, | ||
160 | - // { label: 'LWM2M', value: 'LWM2M' }, | ||
161 | - // { label: 'SNMP', value: 'SNMP' }, | ||
162 | - { label: 'TCP/UDP', value: 'TCP' }, | ||
163 | - ], | 175 | + options, |
164 | onChange(e) { | 176 | onChange(e) { |
165 | isMqttType.value = e; | 177 | isMqttType.value = e; |
166 | }, | 178 | }, |
@@ -78,6 +78,6 @@ export const getSendValues = async (option, getDesign, checked) => { | @@ -78,6 +78,6 @@ export const getSendValues = async (option, getDesign, checked) => { | ||
78 | 78 | ||
79 | export const CommandTypeEnumLIst = { | 79 | export const CommandTypeEnumLIst = { |
80 | '0': { CUSTOM: 0, name: '自定义' }, | 80 | '0': { CUSTOM: 0, name: '自定义' }, |
81 | - '1': { CUSTOM: 0, name: '服务' }, | ||
82 | - '2': { CUSTOM: 0, name: '属性' }, | 81 | + '1': { CUSTOM: 1, name: '服务' }, |
82 | + '2': { CUSTOM: 2, name: '属性' }, | ||
83 | }; | 83 | }; |