From e771e3bfde4fe080d40d45bce11acdb0b2b0c864 Mon Sep 17 00:00:00 2001 From: Rain_ <904416525@qq.com> Date: Mon, 17 Nov 2025 17:28:25 +0800 Subject: [PATCH] =?UTF-8?q?flx:=E6=8F=90=E4=BA=A4ai=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E6=92=AD=E6=8A=A5=20=E6=89=B9=E9=87=8F=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E6=89=A7=E6=B3=95=E8=AE=B0=E5=BD=95=E4=BB=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/js/api/bodyWornCamera.js | 2 + src/components/message.vue | 56 +++++---- .../bodyWornCamera/bodyWornCamera.vue | 106 ++++++++++++++++++ .../configManage/notificationRuleSet.vue | 6 + 4 files changed, 147 insertions(+), 23 deletions(-) diff --git a/src/assets/js/api/bodyWornCamera.js b/src/assets/js/api/bodyWornCamera.js index a6713406..c58ba221 100644 --- a/src/assets/js/api/bodyWornCamera.js +++ b/src/assets/js/api/bodyWornCamera.js @@ -45,6 +45,8 @@ export const getPoliceCameraItemQueryByIdApi = data => get('xmgl/policeCameraIte export const getPoliceCameraItemFilePageApi = data => get('xmgl/policeCameraItemFile/page', data); // 批量删除执法记录仪文件信息 export const deleteBatchPoliceCameraItemFileApi = data => post('xmgl/policeCameraItemFile/deleteBatch', data); +// 批量移动执法记录仪设备 +export const batchMovePoliceCameraItemApi = data => post('xmgl/policeCameraItem/batchMove', data); // 查询单位部门班组tree列表 export const getEnterpriseDepartmentTeamTree = data => post('xmgl/enterpriseInfo/getEnterpriseDepartmentTeamTree', data); diff --git a/src/components/message.vue b/src/components/message.vue index fb7f29b3..a5110580 100644 --- a/src/components/message.vue +++ b/src/components/message.vue @@ -217,7 +217,7 @@ export default { }, methods: { selectNoticeRemindSound() { - if(!this.$store.state.projectSn) return; + if (!this.$store.state.projectSn) return; selectNoticeRemindSoundApi({ projectSn: this.$store.state.projectSn, }).then((res) => { @@ -288,14 +288,14 @@ export default { this.messsageCenterDialog = true; this.getData(); }, - playAudio(playNum){ - if(playNum <= 0) return; + playAudio(playNum) { + if (playNum <= 0) return; const audio = this.$refs[`audioRef`]; console.log(audio); audio.play(); playNum = playNum - 1; audio.onended = () => { - this.playAudio(playNum); + this.playAudio(playNum); }; }, mqttMSG() { @@ -372,29 +372,39 @@ export default { // this.$emit('sendMsg') // } // } - const payload = JSON.parse(message.payload); this.getData(); - if (message.type == 7) { - const find = this.noticeRemindList.find( - (item) => item.type == message.type - ); - if (find) { - this.fileUrl = find.fileUrl; + console.log("message", message.hasOwnProperty('payload'), message.payload != undefined, message.payload); + if(message.hasOwnProperty('payload')) { + console.log("message.payload", message.payload); + const payload = JSON.parse(message.payload); + if (payload) { + this.fileUrl = payload.messagePromptToneConfig; this.$nextTick(() => { - this.playAudio(find.playNum); - }) - } - } else if (message.type == 8) { - const find = this.noticeRemindList.find( - (item) => item.type == message.type && item.riskLevel == payload.level - ); - if (find) { - this.fileUrl = find.fileUrl; - this.$nextTick(() => { - this.playAudio(find.playNum); - }) + this.playAudio(payload.playbackFrequency); + }); } } + // if (message.type == 7) { + // const find = this.noticeRemindList.find( + // (item) => item.type == message.type + // ); + // if (find) { + // this.fileUrl = find.fileUrl; + // this.$nextTick(() => { + // this.playAudio(find.playNum); + // }) + // } + // } else if (message.type == 8) { + // const find = this.noticeRemindList.find( + // (item) => item.type == message.type && item.riskLevel == payload.level + // ); + // if (find) { + // this.fileUrl = find.fileUrl; + // this.$nextTick(() => { + // this.playAudio(find.playNum); + // }) + // } + // } // message setTimeout(() => { this.$emit("sendMsg", message); diff --git a/src/views/projectFront/bodyWornCamera/bodyWornCamera.vue b/src/views/projectFront/bodyWornCamera/bodyWornCamera.vue index 85c21f75..fd567da3 100644 --- a/src/views/projectFront/bodyWornCamera/bodyWornCamera.vue +++ b/src/views/projectFront/bodyWornCamera/bodyWornCamera.vue @@ -56,6 +56,14 @@ ? 'info' : 'danger' " size="medium" class="delete_btn" plain @click="deleteAttendanceBatch">删除 + 批量移动 + {{ $t("message.videoManage.dialog_newVideo.operation.add") }} @@ -554,6 +562,58 @@ + + + +
+ + + + + + + + + +
@@ -605,6 +665,7 @@ import { editProjectPoliceCameraConfigApi, savePoliceCameraVideoConfigApi, getPoliceCameraVideoConfigListApi, + batchMovePoliceCameraItemApi, } from "@/assets/js/api/bodyWornCamera"; import { getProjectConfigListApi, @@ -940,6 +1001,19 @@ export default { workTicketBindCamera: 0, fileList: [], selectionList: [], + moveGroupDialog: false, + currentDetail: { + groupId: "", + }, + formCurrentRules: { + groupId: [ + { + required: true, + message: this.$t("message.videoManage.required"), + trigger: "change", + }, // 必填 + ], + }, }; }, created() { @@ -953,6 +1027,38 @@ export default { }, components: { cameraList, gdMap }, methods: { + moveGroupClick() { + this.currentDetail.groupId = ""; + this.$nextTick(() => { + this.$refs.moveGroupDialog.clearValidate(); + }); + this.moveGroupDialog = true; + }, + setMoveGroup() { + this.$refs.moveGroupDialog.validate((valid) => { + if (valid) { + if (this.selectionList.length === 0) + return this.$message.warning("请勾选需要移动的数据!"); + const itemIds = this.selectionList.map((item) => item.itemId).join(','); + const params = { + itemIds, + groupId: this.currentDetail.groupId, + projectSn: this.projectSn, + }; + batchMovePoliceCameraItemApi(params).then((res) => { + if (res.success) { + this.$message.success(res.message); + this.moveGroupDialog = false; + this.selectionList = []; + this.getVideoList(); + } + }); + } else { + console.log("error submit!!"); + return false; + } + }); + }, // 导出模版 exportData() { const requestData = { diff --git a/src/views/projectFront/configManage/notificationRuleSet.vue b/src/views/projectFront/configManage/notificationRuleSet.vue index 22110956..29a64829 100644 --- a/src/views/projectFront/configManage/notificationRuleSet.vue +++ b/src/views/projectFront/configManage/notificationRuleSet.vue @@ -631,6 +631,7 @@ 播放一次 循环播放(次数) @@ -931,6 +932,11 @@ export default { }, components: { gdMap }, methods: { + playbackFrequencyChange() { + if(this.currentVideoTypeDetail.playType == 1) { + this.currentVideoTypeDetail.playbackFrequency = 1; + } + }, onDeactivated(row) { editEnableMessageDevRuleApi({ ...row,