diff --git a/src/api/media/channel.ts b/src/api/media/channel.ts new file mode 100644 index 00000000..3c4a67bd --- /dev/null +++ b/src/api/media/channel.ts @@ -0,0 +1,15 @@ +import server from '@/utils/request' + +export default { + // 列表 + list: (data: any, id: string) => server.post(`/media/device/${id}/channel/_query`, data), + // 详情 + detail: (id: string): any => server.get(`/media/channel/${id}`), + // 验证通道ID是否存在 + validateField: (params: string): any => server.get(`/media/channel/channelId/_validate`, params), + // 新增 + save: (data: any) => server.post(`/media/channel`, data), + // 修改 + update: (data: any) => server.put(`/media/channel`, data), + del: (id: string) => server.remove(`media/channel/${id}`), +} \ No newline at end of file diff --git a/src/components/AIcon/index.tsx b/src/components/AIcon/index.tsx index 1c119785..e239a887 100644 --- a/src/components/AIcon/index.tsx +++ b/src/components/AIcon/index.tsx @@ -55,7 +55,11 @@ const iconKeys = [ 'LikeOutlined', 'ArrowLeftOutlined', 'DownloadOutlined', - 'PauseOutlined' + 'PauseOutlined', + 'ControlOutlined', + 'RedoOutlined', + 'VideoCameraOutlined', + 'HistoryOutlined', ] const Icon = (props: {type: string}) => { diff --git a/src/views/device/Firmware/Task/Detail/Save.vue b/src/views/device/Firmware/Task/Detail/Save.vue new file mode 100644 index 00000000..9aca484d --- /dev/null +++ b/src/views/device/Firmware/Task/Detail/Save.vue @@ -0,0 +1,32 @@ + + + 失败原因:{{ data }} + + + + + diff --git a/src/views/device/Firmware/Task/Detail/index.vue b/src/views/device/Firmware/Task/Detail/index.vue new file mode 100644 index 00000000..dc4f4d29 --- /dev/null +++ b/src/views/device/Firmware/Task/Detail/index.vue @@ -0,0 +1,437 @@ + + + + + + + + + + + + + + + 批量重试 + + + + + + + + + + + {{ state[item.key] }} + + + + + + + + + + + {{ + moment(slotProps.createTime).format( + 'YYYY-MM-DD HH:mm:ss', + ) + }} + + + {{ slotProps.productName }} + + + + + + {{ slotProps.progress }}% + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/device/Firmware/Task/Save/SelectDevices.vue b/src/views/device/Firmware/Task/Save/SelectDevices.vue index e646a6d1..10657f29 100644 --- a/src/views/device/Firmware/Task/Save/SelectDevices.vue +++ b/src/views/device/Firmware/Task/Save/SelectDevices.vue @@ -5,7 +5,11 @@ :disabled="true" > - + {}, + }, +}); + const route = useRoute(); const params = ref>({}); const visible = ref(false); @@ -212,15 +223,18 @@ const cancelSelect = () => { }; const handleOk = () => { - checkLable.value = _selectedRowKeys.value - .map((item) => checkAllDataMap.has(item) && checkAllDataMap.get(item)) - .toString(); + checkLable.value = updateSelect(_selectedRowKeys.value); emit('update:modelValue', _selectedRowKeys.value); visible.value = false; }; +const updateSelect = (selectedRowKeys: T[]) => + selectedRowKeys + .map((item) => checkAllDataMap.has(item) && checkAllDataMap.get(item)) + .toString(); + const onVisible = () => { - visible.value = true; + !props.data.view && (visible.value = true); }; const handleCancel = () => { @@ -236,6 +250,10 @@ onMounted(() => { checkAllDataMap.set(item.id, item.name); return item.id; }); + if (props.data.id) { + checkLable.value = updateSelect(props.data.deviceId); + emit('update:modelValue', props.data.deviceId); + } } }, ); @@ -264,9 +282,8 @@ const handleSearch = (e: any) => { diff --git a/src/views/device/Firmware/Task/Save/index.vue b/src/views/device/Firmware/Task/Save/index.vue index 433b453e..2a096774 100644 --- a/src/views/device/Firmware/Task/Save/index.vue +++ b/src/views/device/Firmware/Task/Save/index.vue @@ -15,17 +15,20 @@ :model="formData" name="basic" autocomplete="off" + ref="formRef" + :rules="rules" > - + + > + > + > 所有设备 选择设备 - + + - - + - + diff --git a/src/views/link/AccessConfig/index.vue b/src/views/link/AccessConfig/index.vue index d4ddcd8d..851b6a78 100644 --- a/src/views/link/AccessConfig/index.vue +++ b/src/views/link/AccessConfig/index.vue @@ -188,7 +188,7 @@ diff --git a/src/views/media/Device/Playback/index.vue b/src/views/media/Device/Playback/index.vue new file mode 100644 index 00000000..e0d2ef94 --- /dev/null +++ b/src/views/media/Device/Playback/index.vue @@ -0,0 +1,7 @@ + + 回放 + + + + + diff --git a/src/views/media/Device/Playback/typings.d.ts b/src/views/media/Device/Playback/typings.d.ts new file mode 100644 index 00000000..5f8a6c5d --- /dev/null +++ b/src/views/media/Device/Playback/typings.d.ts @@ -0,0 +1,15 @@ +export type recordsItemType = { + channelId: string; + deviceId: string; + endTime: number; + fileSize: number; + name: string; + secrecy: string; + startTime: number; + mediaEndTime: number; + mediaStartTime: number; + filePath: string; + type: string; + id: string; + isServer?: boolean; +}; diff --git a/src/views/notice/Template/Detail/index.vue b/src/views/notice/Template/Detail/index.vue index d16395f3..0d31a97d 100644 --- a/src/views/notice/Template/Detail/index.vue +++ b/src/views/notice/Template/Detail/index.vue @@ -670,33 +670,38 @@ - - - - 模版内容 - - - - - - + + + 模版内容 + + + + + + - + /> + +